РЕДАКТИРОВАТЬ: Замена всего моего ответа, потому что я не знал, что 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 );