Сохранение 3D-сцены rgl до 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?
Ответы
Ответ 1
Вам следует попробовать writeASY(). Он пишет для Asymptote, который может производить PRC, а не U3D, но может быть достаточно хорошим. Я попробовал вашу сцену образца, и для загрузки результата в Acrobat Reader требуется около 5 минут, но в итоге он загружается и работает.
writeASY() - последнее дополнение к rgl; вам нужно будет получить его из копий R-Forge или Github.
Ответ 2
Вы можете использовать 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
, что позволяет сделать некоторые ручные изменения.