【问题标题】:Saving rgl 3D scene to u3d (for .pdf integration)将 rgl 3D 场景保存到 u3d(用于 .pdf 集成)
【发布时间】:2015-02-27 09:53:02
【问题描述】:

我有一个使用 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 进行迭代的格式?

【问题讨论】:

  • 无法从链接站点下载示例文件。您可以再次上传它吗,或者您有其他简单的方法来重现 PLY 的问题吗?
  • @WhiteViking 感谢您通知我。我已经更新了下载链接,现在应该可以使用了。
  • 您可以使用writePLY("alps3d.ply", withNormals = F) 避免该错误。对于这个似乎只有平面几何的特殊模型,没有顶点法线并不是什么大问题。因此,您最终会得到一个包含几何和颜色信息的 PLY 文件。但是... MeshLab 不会从 PLY 文件中读取任何颜色信息。所以用MeshLab转U3D也不是可行的办法。
  • 我以前用persp3d和rgl.snapshot导出rgl对象,后者可以导出一张图片。对于 3D 电影,我使用了可以导出电影的 movie3d。

标签: r raster rgl u3d


【解决方案1】:

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

writeASY() 是最近添加到 rgl 的;您需要从 R-Forge 或 Github 副本中获取它。

【讨论】:

  • 这很有用 @user2554330 。如果您已经看到它,您能否指导我们获取有关如何在 LaTeX 文档中使用 writeASY() 的输出以确保完整性的资源? (除非现在这更像是一个 LaTeX 问题?)我看到的标准渐近线文档和帮助页面看起来并没有完全涵盖所需的内容,并且使用来自 tex.stackexchange.com/questions/111655/… 的建议我遇到了很多编译错误跨度>
【解决方案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,允许进行一些手动修改。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-08-16
    • 2013-02-22
    • 2018-01-29
    • 2021-10-13
    • 1970-01-01
    • 1970-01-01
    • 2016-06-01
    • 1970-01-01
    相关资源
    最近更新 更多