25. Three.js如何更新对象的转换(Matrix transformations)?

299 阅读1分钟

14.jpg

1. 方式一

  1. 修改对象的positionquaternionscale属性,让three.js重新计算来自这些属性的对象矩阵:
object.position.copy( start_position ); object.quaternion.copy( quaternion );

默认情况下,matrixAutoUpdate属性设置为true,并且将自动重新计算矩阵。

如果对象是静态的,或者您希望在重新计算时手动控制,则可以通过将属性设置为false来获得更好的性能:

object.matrixAutoUpdate = false;

更改任何属性后,手动更新矩阵:

object.updateMatrix();

2. 方式二

  1. 直接修改对象的矩阵。 Matrix4类有各种修改矩阵的方法:
object.matrix.setRotationFromQuaternion( quaternion );
object.matrix.setPosition( start_position );
object.matrixAutoUpdate = false;

请注意,在这种情况下,matrixAutoUpdate 必须设置为false,并且您应该确保不调用updateMatrix

调用updateMatrix将破坏对矩阵所做的手动更改,从positionscale重新计算矩阵,依此类推。