将 rgl 3D 场景保存到 u3d(用于 .pdf 集成)
Saving rgl 3D scene to u3d (for .pdf integration)
我有一个用 R rgl 包生成的 3D 场景。
- 我可以通过 rgl 函数将其保存为 RTL 和 OBJ 格式,但这些函数不支持颜色。
- 我可以将它保存在 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
真不知道怎么解决
Here 是重现问题的示例文件。
要重现,只需在工作目录中下载文件,执行 R 和 运行:
library(rgl)
load("alps3d.Rdata") #This loads the alps3d variable
plot3d(alps3d)
writePLY("alps3d.ply")
如何将 3d 场景保存为可以使用 LaTeX 合并为 .pdf 的格式?
您应该尝试 writeASY()。它为 Asymptote 编写,它可以生成 PRC 而不是 U3D,但可能已经足够好了。我尝试了您的示例场景,在 Acrobat 中加载结果大约需要 5 分钟 Reader,但它最终加载并运行。
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
,允许进行一些手动修改。
我有一个用 R rgl 包生成的 3D 场景。
- 我可以通过 rgl 函数将其保存为 RTL 和 OBJ 格式,但这些函数不支持颜色。
- 我可以将它保存在 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
真不知道怎么解决
Here 是重现问题的示例文件。 要重现,只需在工作目录中下载文件,执行 R 和 运行:
library(rgl)
load("alps3d.Rdata") #This loads the alps3d variable
plot3d(alps3d)
writePLY("alps3d.ply")
如何将 3d 场景保存为可以使用 LaTeX 合并为 .pdf 的格式?
您应该尝试 writeASY()。它为 Asymptote 编写,它可以生成 PRC 而不是 U3D,但可能已经足够好了。我尝试了您的示例场景,在 Acrobat 中加载结果大约需要 5 分钟 Reader,但它最终加载并运行。
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
,允许进行一些手动修改。