代码之家  ›  专栏  ›  技术社区  ›  Stéphane Laurent

从POV射线到rgl

  •  1
  • Stéphane Laurent  · 技术社区  · 6 年前

    我跟踪了 this tutorial 将POV光线图形导出到 STL 文件,通过Meshlab。我还尝试了导出到 OBJ 总体安排从创建POV光线图形到在Meshlab中导出,一切似乎都很好。

    但是我尝试用函数在R中渲染图形 readSTL readOBJ rgl 包,问题就在这里。

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

    也许我在程序的一个步骤中弄错了。您是否知道:

    • 如何导出为非空 STL公司 Meshlab中的文件?

    • 如何获得积分 readOBJ公司 在R?

    • 如何让脸出现在脸上 OBJ公司 从Meshlab导出时的文件?

    • 你知道从POV Ray到 rgl公司 ,如果可能,是否保留颜色?

    使现代化

    我找到了一种方法,可以让脸 OBJ公司 文件:而不是执行 屏蔽泊松曲面重建 在Meshlab,正如图图中所说,我喜欢 曲面重建:球旋转

    但是后来 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 回复  |  直到 6 年前
        1
  •  0
  •   Stéphane Laurent    6 年前

    好的,我找到了。

    • 按照链接的图图创建文件 blob.asc 在POV射线中

    • 在Meshlab中,打开此文件,然后执行以下操作 曲面重建:球旋转 在菜单中 过滤器->重新划分、简化和重建 。也许以前需要这样做 屏蔽泊松曲面重建 以前,我不知道。

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

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

    enter image description here

    推荐文章