Javascript 如何将网格旋转90度?
我有一个网格,我想在三个JS内旋转90度。 以下是当前情况的图像: 我希望选定的网格与大网格平行旋转。 我尝试过这样旋转矩阵:Javascript 如何将网格旋转90度?,javascript,matrix,3d,rotation,three.js,Javascript,Matrix,3d,Rotation,Three.js,我有一个网格,我想在三个JS内旋转90度。 以下是当前情况的图像: 我希望选定的网格与大网格平行旋转。 我尝试过这样旋转矩阵: matrix = new THREE.Matrix4().makeRotationX(1.57) 但是网格会进行奇怪的旋转。有没有更简单的方法把它旋转90度 假设meshToRotate需要在X轴上旋转90度。然后执行以下操作 var meshToRotate = new THREE.Mesh( geometry, material ); //Rotating
matrix = new THREE.Matrix4().makeRotationX(1.57)
但是网格会进行奇怪的旋转。有没有更简单的方法把它旋转90度 假设
meshToRotate
需要在X轴上旋转90度。然后执行以下操作
var meshToRotate = new THREE.Mesh( geometry, material );
//Rotating mesh by 90 degree in X axis.
meshToRotate.rotateX( Math.PI / 2 );
threejs旋转使用弧度(您可能知道) 你可以用这个
mesh.rotation.x=Math.PI/2;
或
mesh.rotation.set(新的3.Vector3(0,0,Math.PI/2));
您可以使用此功能旋转对象:
function rotateObject(object, degreeX=0, degreeY=0, degreeZ=0) {
object.rotateX(THREE.Math.degToRad(degreeX));
object.rotateY(THREE.Math.degToRad(degreeY));
object.rotateZ(THREE.Math.degToRad(degreeZ));
}
// usage:
rotateObject(myPlane, 40, 30, 20);
经过r96测试,您也可以使用
mesh.rotation.setFromVector3(new THREE.Vector3( Math.PI / 2, 0, 0));
object.rotation.y=3.Math.degToRad(90);工作得很好。谢谢<代码>mesh.rotation.set(新的3.Vector3(0,0,Math.PI/2))代码>不在r96上工作。使用
setFromVector3
而不是set
mesh.rotation.set(0,0,Math.PI/2)
可以使用r101。使用带有矢量3的rotation.set()
在属性matrix
和matrixWorld
中提供NaN
值,这会使对象从场景中消失,在控制台中不显示任何内容。这是因为mesh.rotation
是THREE.Euler
而不是THREE.Vector3
,这是另一种对象类型。不好的THREE.Math.degToRad()
或THREE.Math.radToDeg()
,因为它会触发3次矩阵乘法,而不是1次。如果您想与单个网格交互(例如,用户操纵),则可以,但如果您重复调用该操作(例如动画…mesh.rotation.set(Math.PI/2,0,0)),则不建议使用该操作如果未启用自动更新,则需要调用code>mesh.updateMatrix()函数