0

我正在尝试从 R 3D 图以 pdf 格式创建动画 3D 图。我已经看到了不同的方法(Asymptote,Meshlab,......)。我想使用 U3D 文件。因此,我使用 rgl 库创建 PLY 文件,并使用 Meshlab 将我的 PLY 文件导出为 U3D 文件。我可以使用 LaTeX 和 Movie15/Media9 包以 pdf 格式导出的文件。

我设法制作了没有太多问题的动画 3D pdf,但我在途中失去了颜色。然而,我解决了这个问题,当我阅读“带颜色”(顶点颜色或面颜色)的 pdf 时,我不能有阴影和光照(而没有颜色,我有它们)。

知道如何在 U3D 文件中保留阴影/光线和颜色吗?我认为这是 U3D 导出​​或 U3D 到 pdf 或 U3D 格式(?)的问题,因为我的 PLY 文件在 Meshlab 中正确打开。

谢谢,

4

1 回答 1

0

这是我几年前所做的,从 Mathematica 中生成的曲面开始。我最近没有使用 DAZ Studio 或 JReality,但这可能仍然有效。

首先,必须用颜色绘制表面。尽管 ContourPlot3D 可能在 Mathematica 的屏幕上显示为彩色,但这些颜色来自默认照明。颜色不在表面本身。我们可以使用以下代码绘制带有颜色的 ContourPlot3D:

superSphereColor = ContourPlot3D[x^4 + y^4 + z^4 == 1,
{x, -1, 1}, {y, -1, 1}, {z, -1, 1}, Mesh->False,
ColorFunction -> Function[{x, y, z}, Hue[z]] ]
Export["C:\\junk\\supersphereColor.obj", superSphereColor]

强烈建议在创建绘图时使用 Mesh->False 选项,尤其是在颜色方面。如果没有此选项,生成的 pdf 文件可能会非常大,并且可能需要很长时间才能打开。

在这个表面中,颜色 Hue[z] 随 z 变化。

然后,将绘图导出为 (Wavefront) .obj 文件。当 Mathematica 导出 .obj 文件时,它还会创建一个 .mtl(材料库)文件,其中包含曲面的颜色信息。然后,我们必须将 .obj(和 .mtl)文件转换为彩色 .u3d 文件。

MeshLab 有时无法创建正确的带有颜色信息的 .u3d 文件,因此我们必须使用其他软件创建颜色 .u3d 文件。一些非自由的商业软件可以做到这一点。

DAZ Studio 4 ( http://www.daz3d.com ) 是一款免费软件,可以将 obj/mtl 文件对转换为带有颜色信息的 .u3d 文件。

JReality 也可以导出彩色 .u3d 文件,但生成的彩色 .u3d 和 .pdf 文件会比 DAZ Studio 4 生成的要大。

如果启动 DAZ Studio 4 时出现默认图片,请使用菜单选项“编辑/删除”将其删除。使用菜单选项“文件/导入”导入 .obj 文件。导入时,请确保选中“读取材质库 (.mtl)”框,这样颜色信息也会被导入。

您可能还需要将“比例”设置为 100,以便 PDF 文件中的图像不会太大,但这取决于您的原始表面。导入文件后,立即将其导出。使用“文件/导出”菜单选项将图像导出为 .u3d 文件。

最后,使用上面的 LaTeX 代码将 .u3d 嵌入到 pdf 文件中。可能需要不同的缩放比例,因此您可能需要调整上述数字 3Daac ... 3Dcoo。

对于颜色对象,我们应该使用 3Dlights=CAD,而不是 3Dlights=Primary。“CAD”选项显示对象自己的颜色,并且不向其添加人工颜色。

注意:DAZ Studio 4 也可以生成单色 .u3d 文件,尽管生成的 PDF 文件会比使用 MeshLab 创建的 .u3d 文件大。

于 2019-03-22T20:34:45.357 回答