Сохранение 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
, что позволяет делать некоторые ручные модификации.