如何使用Three.js
获取场景的所有顶点我可以通过任何方式获得我在场景中的总顶点,如MAYA或3DS MAX。
我有一些装有obj加载器的3d模型,我想知道如何获得我在场景中的总顶点或边或三角形。
赞scene.get(vertices);
或scene.get(edges);
答案 0 :(得分:6)
renderer.info
是一个three.js对象,它统计了绘制调用和渲染基元的数量。它还显示了正在使用的几何,纹理和着色器程序的数量。
console.log( renderer.info );
three.js r.84
答案 1 :(得分:1)
或者您可以查看scene.children
数组,查找具有THREE.Mesh
数组的geometry.vertices
个实例。
例如,在this页面的控制台中输入scene.children[0].geometry.vertices
将为您提供多维数据集顶点的数组。
修改... 强>
或者更好的是,正如WestLangley指出的那样,检查renderer.info
对象
答案 2 :(得分:0)
这个问题没有一个直截了当的答案。
在三个几何体中不存在边缘,并且有几种不同的方式来呈现它们。
顶点可以属于三角形汤或索引网格,表示相同数量的三角形的不同数字。
另一方面,如果三角形与Geometry
vs BufferGeometry
一起存在,则它们会完全不同。 Geometry
有一个非常复杂的Face3
类,BufferGeometry
有一个类型数组,其中三个数字可以表示一个三角形。
如果您想调试应用程序并查看是否意外创建了多于所需的几何图形(克隆错误或其他内容),请按照WestLangley的建议使用renderer.info
。
如果你想采用别人的语义,可以在另一个答案中使用类似rstats工具的东西。
如果你需要一些特定于你需要的东西,你可以问诸如“它的大小是否重要,因为那时我也应该将uvs视为顶点”,“它是否太大而无法保存在记忆中{{1 },“”我只对顶点转换性能感兴趣“等等。
答案 3 :(得分:0)
您可以通过以下方式获取场景中的所有孩子:
scene.children
然后你循环它:
for (var i = 0; i < scene.children.length; i++) {
scene.children[i].geometry.vertices
}