#three.js
#three.js
Вопрос:
Когда я применяю матрицу к buffergeometry, я хочу быстро получить обновленные атрибуты положения, я имею дело с более чем 1000000 вершинами.
Я пробовал Matrix4.applyToBufferAttribute() , но атрибут buffer по-прежнему тот же
Каков наиболее правильный способ выполнить это?
Ответ №1:
Я пробовал Matrix4.applyToBufferAttribute() , но атрибут buffer по-прежнему тот же
Тогда, похоже, вы делаете что-то не так в своем приложении. Matrix4.applyToBufferAttribute()
применяет матрицу к данному атрибуту. Этот метод используется несколько раз в ядре three.js
, например, в BufferGeometry.applyMatrix()
:
Убедитесь, что после вызова метода установлено BufferAttribute.needsUpdate
значение true
. И да, это предполагаемый способ применения матрицы преобразования 4×4 к атрибуту буфера.
Комментарии:
1.
BufferAttribute.needsUpdate = true
Изменяет ли буфер в графическом процессоре?2. Правильно. Если установлено значение
true
, это указывает движок для обновления фактического буфера WebGL.3. когда я регистрируюсь
meshes[1].applyMatrix(mat);
перед этим и после этого, я получаю одинаковые значения, одинаковыеMesh.matrix
, одинаковыеMesh.geometry.attributes.position
, это нормально?4.
Mesh.matrix
должны быть идентичны. Данные атрибута действительно должны измениться. Не могли бы вы, пожалуйста, продемонстрировать проблему на живом примере ?