1

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

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

其实导出的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,渲染只是一个白色场景,什么都没有。即使没有脸,我们也可以期望得到一些分数。

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

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

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

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

  • rgl如果可能的话,你知道另一种从 POV-Ray 到的方法吗?

更新

我找到了一种在OBJ文件中获取面的方法:而不是像教程中所说的那样在 Meshlab 中进行 Screened Poisson Surface Reconstruction ,而是进行Surface Reconstruction: 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
4

1 回答 1

0

好的,我找到了。

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

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

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

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

在此处输入图像描述

于 2018-03-25T15:46:55.020 回答