从POV-Ray到rgl

时间:2018-03-25 15:10:14

标签: r mesh rgl meshlab povray

我已经跟踪this tutorial通过Meshlab将POV-Ray图形导出到STL文件。我还尝试导出为OBJ格式。从POV-Ray图形的创建到Meshlab中的导出,一切似乎都能正常工作。

但是之后我尝试使用readSTL包的函数readOBJrgl渲染R中的图形,问题就在这里。

实际上,导出的STL文件为空:

solid STL generated by MeshLab
endsolid vcg

因此,当然,rgl::readSTL在R中没有任何内容。

OBJ文件不为空,但它不包含面(仅顶点和顶点法线):

####
#
# OBJ File Generated by Meshlab
#
####
# Object blob.obj
#
# Vertices: 8437
# Faces: 0
#
####
vn -0.900372 -0.267658 -0.343060
v -4.000525 2.600000 -0.833225
......

在R中运行rgl::readOBJ后,渲染只是一个白色场景,没有任何内容。即使没有面子,我们也可以获得一些积分。

也许我在这个程序的一个步骤中弄错了。你有任何想法:

  • 如何导出到Meshlab中的非空STL文件?

  • 如何在R中获得readOBJ的积分?

  • 从Meshlab导出时如何获取OBJ文件中的面孔?

  • 你知道从POV-Ray到rgl的另一种方式,如果可能的话保留颜色吗?

更新

我找到了一种方法来获取OBJ文件中的面孔:而不是在Meshlab中进行屏蔽泊松表面重建,如tuto所述,我做< em>表面重建:Ball Pivoting 。

但是rgl::readOBJ会生成此错误:

Error in order(vlinks[[i]][, 2]) : argument 1 is not a vector

相同的过程允许导出非空STL文件。但是rgl::readSTL生成了这个错误:

Error in matrix(NA, 3 * n, 3) : invalid 'nrow' value (too large or NA)
In addition: Warning message:
In matrix(NA, 3 * n, 3) : NAs introduced by coercion to integer range

1 个答案:

答案 0 :(得分:0)

好的,我找到了。

  • 按照链接的tuto在POV-Ray中创建文件blob.asc

  • 在Meshlab中,打开此文件,然后在菜单 Filters - &gt;中执行 Surface Reconstruction:Ball Pivoting 。重新划分,简化和重建。也许以前需要先做屏蔽泊松表面重建,我不知道。

  • 将文件导出为STL检查“二进制编码”(默认选项),因为rgl::readSTL只读取二进制STL文件,而不读取ASCII文件。

  • 在R中,现在您可以执行rgl::readSTL。这有效:

enter image description here