【问题标题】:THREE.js What does this vertices mean in the box geometry?THREE.js 这个顶点在盒子几何中是什么意思?
【发布时间】:2021-09-13 15:16:06
【问题描述】:

我已经创建了一个如下的盒子几何体,

    const hand1geo = new THREE.BoxGeometry(2, 0.01, 0.2);
    const material_sidehand = new THREE.MeshBasicMaterial({ color: 0x3cc1b7 });
    const sidehand = new THREE.Mesh(hand1geo, material_sidehand);

我想做的是从这个盒子中提取顶点并使用它,

this.sidehand.attributes.position.array

我得到如下, The picture of result。我真的不明白为什么它只是跨越了具有相同值的 72 个元素(24 个向量)。为什么这里有 24 个向量,它们是在哪里定义的?因为我想稍后使用 raycaster 进行碰撞检测。 我尝试使用 this.sidehand.vertices 但它不起作用。

【问题讨论】:

    标签: javascript three.js vertices


    【解决方案1】:

    我尝试使用 this.sidehand.vertices 但它不起作用。

    我不知道您使用了哪些引用,但 Mesh 从来没有一个名为 vertices 的属性。您可能指的是确实具有此属性的前Geometry 类。但是,该类已被弃用,而现在使用 BufferGeometry

    我真的不明白为什么它只是跨越了具有相同值的 72 个元素(24 个向量)。

    这些值不相同。 BoxGeometry 在平面数组中定义了本地空间中盒子的所有顶点,因此数据可以直接被 WebGL API 使用(这对性能有好处)。

    有 24 个向量,因为几何图形为盒子的每一侧定义了四个顶点。每边由两个三角形组成。这样做是为了生成适当的法线和纹理坐标。

    我建议您重新考虑使用原始几何数据进行碰撞检测。通过使用包围体,您将获得更好的性能。

    【讨论】:

    • 谢谢你告诉我这个!我才明白 THREE.js 中顶点的真正含义。是的!我刚刚意识到它们的价值不一样。我想说的是盒子''this.sidehand''正在移动,这些顶点应该一直更新,对吗?但我发现它们没有更新,而是保持相同的值。你提到了“原始几何”和“边界体”,它们指的是什么?提前致谢!
    猜你喜欢
    • 2017-02-09
    • 1970-01-01
    • 1970-01-01
    • 2015-07-21
    • 1970-01-01
    • 2016-08-17
    • 2011-04-11
    • 2018-10-29
    • 1970-01-01
    相关资源
    最近更新 更多