如何在 Meshlab 上导入 VRML 2.0

How to import VRML 2.0 on Meshlab

我试图在 Meshlab 上导入此 VRML 文件的文件:

#VRML 2.0 utf-8
PROTO my_sphere [ exposedField SFFVec3f xyz 0 0 0 ] {
    Transform {
        translation IS xyz
        children [
            Shape {
                appearance Appearance { material Material { 
diffuseColor 1.0 0.05 0.05 } }
                geometry Sphere { radius 0.66 }
            }
        ]
    }
}
my_sphere { xyz 0.0 0.0 0.119 } # 0
my_sphere { xyz 0.0 0.0 0.119 } # 1

我遇到错误:

Error encountered while loading file:
"/my_path/test.wrl"

File: /my_path/test.wrl
Error details: -- line 2 col 32: invalid FieldType
-- line 4 col 42: "{" expected

如何导入此类文件?我可以在 Blender 上轻松完成。

除了原始示例中的拼写错误(应该是 SFVec3f,而不是 SFFVec3f)之外,Meshlab 在 2016.12 版本中不支持基本的 Sphere 几何体。 Meshlab 确实支持使用 'returns' Shape with IndexedFaceSet 几何体的 PROTO 语句。这是一个示例 VRML97 场景生成两个四面体实例作为网格定义的形状:

#VRML 2.0 utf-8
 PROTO my_tetrahedron [ exposedField SFVec3f xyz 0 0 0 ] {
     Transform {
         translation IS xyz
         children [
      Shape {
        appearance Appearance {
          material Material {
            diffuseColor 0.0 1.0 0.0
          }
        }
        geometry IndexedFaceSet {
          coordIndex [ 3 1 0 -1  3 2 1 -1  3 0 2 -1  0 1 2 -1]
          coord Coordinate {
            point [0.29 0.50 -0.20 0.29 -0.50 -0.20 -0.58 0.00 -0.20 0.00 0.00 0.61]
          }
        }
      }
         ]
     }
 }


# [Scene] ========== ========== ==========


my_tetrahedron { xyz 0.0 0.0 0.0 } 
my_tetrahedron { xyz -1.0 -1.0 -1.0 }

Meshlab 2016 将其导入为两个网格。

原始问题的建议解决方案:将 VMRL 场景中的球体几何体替换为由 IndexedFaceSet 定义的几何体