目录
一、定位网格
网格其局部原点位于世界空间 (-1, 2, 1),即 mesh.position 位于 (-1, 2, 1);
设置网格位置方法:
mesh.position = new Vector3(2, 3, 4);//(2, 3, 4)
//(-1 + 2, 2 + 3, 1 + 4) = (1, 5, 5)
mesh.position.addInPlace(new Vector3(2, 3, 4));
mesh.translate(new BABYLON.Vector3(2, 3, 4), 1,
BABYLON.Space.WORLD); //(-1 + 2, 2 + 3, 1 + 4) = (1, 5, 5)
mesh.position.x = 2; //(2, 2, 1)
mesh.position.y = 3; //(2, 3, 1)
mesh.position.z = 4; //(2, 3, 4)
mesh.position.x += 2; //(-1 + 2, 2, 1) = (1, 2, 1)
mesh.position.y += 3; //(1, 2 + 3, 1) = (1, 5, 1)
mesh.position.z += 4; //(1, 5, 1 + 4) = (1, 5, 5)
//生成的位置取决于网格的方向。在不知道网格旋转的情况下,不可能给出结果位置。
mesh.translate(new BABYLON.Vector3(2, 3, 4), 1, BABYLON.Space.LOCAL);
mesh.setPositionWithLocalVector(new BABYLON.Vector3(2, 3, 4));
mesh.locallyTranslate(new BABYLON.Vector3(2, 3. 4));
position和setPositionWithLocalVector的向量是位置向量。translate、localTranslate和addInPlace的那些是方向向量。
二、网格旋转
1、旋转方法
旋转沿着轴设定:
mesh.rotation = new BABYLON.Vector3(alpha, beta, gamma);
beta 围绕局部 y 轴旋转,然后 alpha 围绕局部 x 轴旋转,最后 gamma 围绕局部 z 轴旋转。
2、自定义旋转
mesh.rotation.addRotation(Math.PI / 2, 0, 0)
.addRotation(0, 0, Math.PI / 3).addRotation(0, Math.PI / 8);
将形成网格的当前旋转,进一步围绕 x 轴旋转 π/2,然后围绕 z 轴旋转 π/3,然后围绕 y 轴旋转 π/8。
指定轴的方向矢量和角度是产生旋转的另一种方法。这就是在世界空间或局部空间中使用旋转方法的方式。
mesh.rotate(new BABYLON.Vector3(1, 0 -1), Math.PI / 3, BABYLON.Space.WORLD);
mesh.rotate(new BABYLON.Vector3(1, 0 -1), Math.PI / 3, BABYLON.Space.LOCAL);
3、旋转四元数
四元数是一个四维向量 (x, y, z, w),要成为旋转四元数,它必须是单位向量,即 x 2 + y 2 + z 2 + w 2 = 1,我们已经使用了 rotate 来设置网格的旋转四元数。旋转属性相同,rotationQuaternion属性以局部原点为旋转中心设置网格的方向。除了旋转,您还可以通过使用直接获得旋转四元数
mesh.rotationQuaternion = new BABYLON.Quaternion
.RotationAxis(new BABYLON.Vector3(1, 0, -1), Math.PI / 3);
RotationAxis方法的参数是轴方向和角度。轴方向矢量应在世界空间中表示。任何旋转四元数都可以转换为欧拉角以与mesh.rotation一起使用,