将rgl 3D场景保存到u3d(用于.pdf集成)

时间:2015-02-27 09:53:02

标签: r raster rgl u3d

我有一个使用R rgl包生成的3D场景。

  • 我可以通过rgl函数将其保存为RTL和OBJ格式,但这些函数不支持颜色。
  • 我可以将它保存在WebGL中,但是我找不到WebGL到.u3d转换器,也没有任何方法可以在.pdf文件中插入WebGL内容(用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 
    

我真的不知道如何解决。

Here是重现问题的示例文件。 要重现只需在工作目录中下载文件,请执行R并运行:

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

如何以可以使用LaTeX在.pdf中迭代的格式保存3d场景?

2 个答案:

答案 0 :(得分:3)

你应该尝试writeASY()。它为Asymptote写道,它可以产生PRC而不是U3D,但可能足够好。我尝试过您的示例场景,在Acrobat Reader中加载结果大约需要5分钟,但它最终会加载并运行。

writeASY()是rgl的最新成员;你需要从R-Forge或Github副本中获取它。

答案 1 :(得分: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")

enter image description here

您还可以导出到tex,允许进行一些手动修改。