как обновить вершину файла glb - PullRequest
0 голосов
/ 16 июня 2020

Я хотел бы знать, есть ли способ динамически обновить вершины загруженного файла json / glb.

Я планирую установить позиции каждой вершины в позициях x, y, z.

Насколько я понимаю, я могу получить доступ только к позициям из геометрического буфера, но у него не будет индексации для фактических вершин .. Я хотел бы обновить вершину, как векторные позиции

например, у меня есть массив, как показано ниже

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

теперь с помощью этого я должен иметь возможность обновлять каждую вершину glb / json на соответствующие позиции в том же порядке индекса.

любая помощь по этому поводу высоко ценится

1 Ответ

0 голосов
/ 17 июня 2020

Формат файла, используемый для загрузки вашей модели, здесь не имеет особого значения - после загрузки он является частью THREE.Scene, который может содержать некоторое сочетание Group, Object3D, Me sh и других типов объектов. . В нем может быть много сеток, поэтому вам придется «перемещаться» по иерархии сцены и обновлять любые нужные сетки.

Например:

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

Чтобы понять, как изменить меня sh, см. Документацию Me sh и BufferGeometry . Чтобы обновить позицию N-й вершины, вы должны сделать что-то вроде:

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

Обратите внимание, что атрибут position хранит позиции каждой вершины и является экземпляром BufferAttribute .

...