Сохранение rgl 3D-сцены в u3d (для интеграции.pdf)

У меня есть 3D-сцена, созданная с помощью пакета R rgl.

  • Я могу сохранить его в формате RTL и OBJ через функции rgl, но эти функции не поддерживают цвета.
  • Я могу сохранить его в WebGL, но потом не могу найти конвертер WebGL в.u3d, а также никак не могу вставить содержимое WebGL в файл.pdf (созданный с помощью LaTeX).
  • Я могу сохранить его в формате PLY, а затем экспортировать в.u3d (например, используя Meshlab), но это дает мне следующую ошибку:

    Error in if (sum(normals[1:3, it[j, i]] * normal) < 0) normals[, it[j,  : 
    missing value where TRUE/FALSE needed 
    

Что я действительно не знаю, как решить.

Вот пример файла для воспроизведения проблемы. Для воспроизведения просто скачайте файл в рабочем каталоге, выполните R и запустите:

library(rgl)
load("alps3d.Rdata") #This loads the alps3d variable
plot3d(alps3d)
writePLY("alps3d.ply")

Как я могу сохранить 3d-сцену в формате, который может быть добавлен в.pdf с использованием LaTeX?

2 ответа

Решение

Вы должны попробовать написать ASY(). Он пишет для Asymptote, который может производить PRC, а не U3D, но может быть достаточно хорошим. Я пробовал вашу примерную сцену, и загрузка результата в Acrobat Reader занимает около 5 минут, но в итоге он загружается и работает.

writeASY () является недавним дополнением к rgl; Вы должны будете получить это от копий R-Forge или Github.

Ты можешь использовать rgl.postscript, что позволяет экспортировать в различные форматы, в том числе PDF. Что ж, результат не потрясающий, но это должно зависеть от типа сюжета.

> x <- y <- seq(-10, 10, length = 20)
> z <- outer(x, y, function(x, y) x^2 + y^2)
> persp3d(x, y, z, col = 'lightblue')
> rgl.postscript("persp3d.pdf", "pdf")

Вы также можете экспортировать в tex, что позволяет делать некоторые ручные модификации.

Другие вопросы по тегам