【问题标题】:How to get all the vertices, edges and triangles information of my scene, using the Three.js如何使用 Three.js 获取场景的所有顶点、边和三角形信息
【发布时间】:2017-06-22 02:54:24
【问题描述】:

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

有什么方法可以获得我在场景中的总顶点,例如 MAYA 或 3DS MAX ??.

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

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

【问题讨论】:

  • three.js AFAIK 中没有边缘结构

标签: three.js


【解决方案1】:

您可以通过以下方式获取场景的所有子项:

scene.children  

然后你循环遍历它:

for (var i = 0; i < scene.children.length; i++) {

    scene.children[i].geometry.vertices
}

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      【解决方案3】:

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

      console.log( renderer.info );
      

      three.js r.84

      【讨论】:

        【解决方案4】:

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

        three.js 几何图形中不存在边,并且有几种不同的呈现方式。

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

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

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

        如果您想采用其他人的语义,请在另一个答案中使用类似 rstats 工具。

        如果您需要特定于您的需求的东西,那么您可以提出诸如“大小是否重要,因为那样我也应该将 uvs 视为顶点”,“它是否太大而无法在内存中保存为 Geometry "、"我只对顶点变换性能感兴趣吗"等。

        【讨论】:

          猜你喜欢
          • 2012-06-19
          • 2019-09-08
          • 2021-09-14
          • 1970-01-01
          • 1970-01-01
          • 2020-11-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多