学习ThreeJS 05 矩阵变换

每个3d空间的物体都包含一个matrix, 这个matrix包含了位置, 旋转和缩放这些属性

  • 更新方法
    quaternion, 这里出现了四元数, 3d引擎内出现四元数是很正常的事情, 原因是通过直接修改空间物体的三个旋转角, 并不能令物体平滑的转向, 并可能产生死锁的问题(当延y轴旋转90度, 则x,z轴在一个轴线上, 这样无论怎么转x,z都无法转动第三个转角)
object.position.copy(start_position);
object.quaternion.copy(quaternion);

虽然其他类的自动更新是关闭的, 但是matrix的自动更新是开启的, 如果物体是静止的, 或者想手动更新则把自动更新关闭

object.matrixAutoUpdate = false;
//手动更新api
object.updateMatrix();
  • 直接修改matrix属性
    上面的是修改物体的属性, 下面是直接对matrix进行修改, 这里matrix自动更新必须设置为false, 并且也不进行updateMatrix()调用, 这样才能保证修改值能有效反馈回引擎
object.matrix.setRotationFromQuaternion(quaternion);
object.matrix.setPosition(start_position);
object.matrixAutoUpdate = false;
  • 对应世界的matrix
    每个物体的matrix是对应其父级的属性, 如何获得对于全局3d场景的matrix属性?
object.maxtrixWorld

这个属性如何更新?

object.updateMatrixWorld().
  • 再聊旋转和四元数
    引擎内提供了两种方法处理物体旋转, 欧几里得角和四元数.
    想直接改变角度可以使用函数
setRotationFromEuler()

你可能感兴趣的:(学习ThreeJS 05 矩阵变换)