从 POV-Ray 到 rgl

From POV-Ray to rgl

我已经按照 this tutorial 通过 Meshlab 将 POV-Ray 图形导出到 STL 文件。我也试过导出为 OBJ 格式。从创建 POV-Ray 图形到在 Meshlab 中导出,一切似乎都运行良好。

但是后来我尝试使用 rgl 包的 readSTLreadOBJ 函数在 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
......

在运行 rgl::readOBJ之后在R中的渲染只是一个白色的场景,什么都没有。就算没有面子,我们也可以期待得到一些积分。

也许我在程序的某个步骤中弄错了。你有什么想法:

更新

我找到了一种在 OBJ 文件中获取面孔的方法:而不是在 Meshlab 中执行 Screened Poisson Surface Reconstruction,如教程中所述,我做 表面重建:球旋转

但随后 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

好的,我找到了。

  • 按照链接教程在 POV-Ray

  • 中创建文件 blob.asc
  • 在 Meshlab 中,打开此文件,然后在菜单 Filters -> Remeshing, Simplification and Reconstruction 中执行 Surface Reconstruction: Ball Pivoting 。也许以前需要做Screened Poisson Surface Reconstruction,我不知道。

  • 将文件导出为 STL检查 "Binary Encoding"(默认选项),因为 rgl::readSTL 只读取二进制 STL 文件,而不是 ASCII 文件。

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