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

时间:2017-02-04 22:10:11

标签: three.js

如何使用Three.js

获取场景的所有顶点

我可以通过任何方式获得我在场景中的总顶点,如MAYA或3DS MAX。

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

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

4 个答案:

答案 0 :(得分:6)

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

console.log( renderer.info );

three.js r.84

答案 1 :(得分:1)

rstats为你做这件事 可以查看来源here

或者您可以查看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
}