如何更新glb文件的顶点?

问题描述 投票:-1回答:1

我想知道有什么方法可以更新加载的 jsonglb 文件的顶点。

我计划将每个顶点的位置设置为x,y,z位置。

据我所知,我只能从一个geometrybuffer中访问位置,但它不会有实际顶点的索引。

例如,我有一个数组,如下所示

array=[
{x:0,y:10,z,3},{x:0,y:10,z,3},{x:0,y:10,z,3}
]

现在,通过使用这个方法,我应该能够将glbjson的每个顶点按相同的索引顺序更新到各自的位置。

任何帮助在这是高度感激

unity3d three.js
1个回答
0
投票

用来加载模型的文件格式在这里并不重要--一旦它被加载,它就是一个模型的一部分。THREE.Scene它可能包含一些Group、Object3D、Mesh和其他对象类型的混合。它可能有许多网格,所以你必须 "遍历 "场景层次结构,并更新任何你需要的网格。

比如说

model.traverse((object) => {
  if (object.isMesh) {
    // modify object.geometry here.
  }
});

要了解如何修改网格,请看以下内容 网格缓冲区几何学 文档。要更新第N个顶点的位置,你可以这样做。

object.geometry.attributes.position.setXYZ(n, x, y, z);

注意 position 属性存储了每个顶点的位置,并且是个 BufferAttribute 例如:

© www.soinside.com 2019 - 2024. All rights reserved.