Три. js Сброс матрицы перед преобразованием - PullRequest
0 голосов
/ 24 марта 2020

Я хочу применить одно и то же матричное преобразование к three.js me sh несколько раз, но я всегда хочу преобразование, как описано в первом преобразовании. Как я могу "сбросить" матрицу me sh до ее значения перед преобразованием, прежде чем повторно применить преобразование?

Я пробовал следующее, но это не сработало

const identity = model.matrix.identity();
model.matrix = identity;
model.matrixWorld = identity;
model.updateMatrix();
model.updateMatrixWorld();
model.applyMatrix4(newMatrix);

1 Ответ

2 голосов
/ 24 марта 2020

РЕДАКТИРОВАТЬ: Замена всего моего ответа, потому что я не знал, что Object3D.applyMatrix4 обновляет свойства position / quaterion / scale в дополнение к изменению matrix.

Самый простой способ добиться этого - создать резервную копию исходного свойства matrix модели и скопировать его на место до следующего обновления. Это можно сделать, используя Object3D.userData.

// before doing any updates, ensure the local matrix is set from postion/quaternion/scale:
model.updateMatrix();

// back-up the matrix:
model.userData.originalMatrix = model.matrix.clone();

// reset the model before each update
model.userData.originalMatrix.decompose( model.position, model.quaternion, model.scale );
model.matrix.copy( model.userData.originalMatrix );
...