我正在尝试从R 3D图形创建pdf动画3D图形。我已经看到了执行此操作的不同方法(渐近线,Meshlab等)。我想使用U3D文件。因此,我使用rgl库创建PLY文件,并使用Meshlab将我的PLY文件导出到U3D文件中。我可以使用LaTeX和Movie15 / Media9软件包以pdf格式导出的文件。
我成功制作了3D pdf动画,没有太多问题,但途中我失去了色彩。尽管如此,我还是解决了这个问题,当我阅读“带有颜色”(顶点颜色或面部颜色)的pdf时,我没有阴影和照明(而没有颜色,则有颜色)。
有人知道如何在U3D文件中保留阴影/光线和颜色吗? 我认为U3D导出或U3D转换为pdf或U3D格式(?)时出现问题,因为我的PLY文件已在Meshlab中正确打开。
谢谢
答案 0 :(得分: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文件时要大。