如何使用Three.js获取场景的所有顶点、边和三角形信息



如何使用Three.js 获取场景的所有顶点

有任何方法可以得到我在场景中的总顶点,比如MAYA或3DS MAX??。

我有一些用obj加载器加载的三维模型,我想知道如何获得场景中的总顶点、边或三角形。

类似scene.get(vertices);scene.get(edges);

renderer.info是一个three.js对象,用于统计绘制调用和渲染基元的数量。它还显示了正在使用的几何体、纹理和着色器程序的数量。

console.log( renderer.info );

three.js r.84

您可以使用获取场景的所有子项

scene.children  

然后你循环浏览:

for (var i = 0; i < scene.children.length; i++) {
scene.children[i].geometry.vertices
}

这个问题并没有一个直接的答案。

边不存在于三个.js几何体中,有几种不同的方式来表示它们。

顶点可以属于三角形汤或索引网格,这意味着相同数量的三角形有不同的数字。

另一方面,如果使三角形与GeometryBufferGeometry一起存在,则三角形是完全不同的。Geometry有一个相当复杂的Face3类,BufferGeometry有一个类型化数组,其中三个数字可以表示一个三角形。

如果你想调试应用程序,看看你是否意外地创建了超出需要的几何图形(错误地克隆或其他什么),请按照WestLangley的建议使用renderer.info

如果你想采用别人的语义,那么在另一个答案中使用类似rstats工具的东西。

如果你需要特定于你需求的东西,你可以问一些问题,比如"大小重要吗,因为我可能也应该把uvs算作顶点"、"它太大了吗,不能作为Geometry保存在内存中"、"我只对顶点转换性能感兴趣吗"等等。

rstats为您做到这一点
可以在此处查看来源。

或者,您可以在scene.children数组中查找具有geometry.vertices数组的THREE.Mesh的实例
例如,在此页面的控制台中输入scene.children[0].geometry.vertices将为您提供立方体的顶点数组。

编辑
或者更好的是,正如WestLangley所指出的,检查renderer.info对象

最新更新