Как манипулировать геометрией и сеткой в ​​Three.js? - PullRequest
0 голосов
/ 29 сентября 2019

У меня есть методы, которые будут проходить по вершинам геометрии и перемещать их в новые места.Например, я могу вращать геометрию вокруг произвольной оси в пространстве, вращая каждую точку вокруг этой оси.

Итак, если у меня есть сетка, отображаемая с помощью геометрии, как я могу обновить сетку, когда я манипулирую местоположениямивершин?

Ответы [ 2 ]

0 голосов
/ 29 сентября 2019

Попробуйте использовать Geometry.translate () , если вам нужно сместить геометрию.Код будет выглядеть так для вашего варианта использования:

geometry.translate( 0, 5, 0 );

Однако преобразование геометрии обычно должно быть одноразовой операцией.Для текущего преобразования (в цикле анимации) вместо этого следует модулировать Object3D.position, Object3D.rotation и Object3D.scale.В противном случае вы окажете заметное негативное влияние на производительность (в зависимости от сложности геометрии).

three.js R108

0 голосов
/ 29 сентября 2019

Этот пример будет перемещать геометрию вверх на 5 единиц в положительном направлении Y, сетка будет следовать за ней, если для verticesNeedUpdate установлено значение true для геометрии после каждого ее обновления:

// Update geometry vertices however/whenever you would like
geometry.vertices.forEach(function(vertex) {
    vertex.set(vertex.x, vertex.y + 5, vertex.z);
 });

//Tthen, this must be called inside animation loop (each frame or whenever updated)
geometry.verticesNeedUpdate = true;
...