Three.js学习笔记-注意事项

旋转

欧拉角(Euler angles)容易遭遇一个所谓“万向节锁(gimbal lock)”的难题,也就是在某些特定点(类似于地球南北极极点),物体的坐标突变会导致某个维度的旋转变换失效。Gimbal_lock因此,对象旋转总是使用其四元数 quaternion 属性来保存

矩形变换

1.修改position,quaternion,scale属性后交Three.js重新计算对象矩阵

object.position.copy(position);
object.quaternion.copy(quaternion);

默认matrixAutoUpdate 属性被设置为 true,这样矩阵将会被自动重新计算。 如果对象是静止的,或者你想手动控制计算过程来获得更好的性能,你可以设置该属性为false:object.matrixAutoUpdate = false; 在修改对象属性后,手动更新矩阵:
object.updateMatrix();
2.直接修改对象的矩阵

object.matrix.setRotationFromQuaternion(quaternion);
object.matrix.setPosition(position);
object.matrixAutoUpdate = false;

在这种情况下,matrixAutoUpdate 必须 被设置为 false,并且你应该要确保 不去 调用 updateMatrix。 否则手动修改会被自动计算所覆盖。

相机位置和目标自动更新

camera.aspect = window.innerWidth / window.innerHeight;
camera.updateProjectionMatrix();

猜你喜欢

转载自blog.csdn.net/u013270347/article/details/81120651