如何在ThreeJS中将网格旋转90度?

Zaa*_*aay 36 javascript 3d rotation matrix three.js

我有一个网格,我想在三个JS内旋转90度.这是当前形势的图像: 在此输入图像描述

我希望选定的网格平行旋转到大网格.我试过像这样旋转矩阵:

matrix =   new THREE.Matrix4().makeRotationX(1.57)
Run Code Online (Sandbox Code Playgroud)

但网格进入奇怪的旋转.是否有更简单的方法将其旋转90度?

Abs*_*lit 45

threejs旋转使用Radians(你可能知道)

你可以用它

mesh.rotation.x = Math.PI / 2;
Run Code Online (Sandbox Code Playgroud)

要么

mesh.rotation.set(new THREE.Vector3( 0, 0, Math.PI / 2));
Run Code Online (Sandbox Code Playgroud)

  • `mesh.rotation.set(new THREE.Vector3(0,0,Math.PI / 2));`在r96上不起作用。使用`setFromVector3`而不是`set` (3认同)
  • 工作得很好.谢谢! (2认同)
  • `mesh.rotation.set(0, 0, Math.PI / 2)` 对 r101 来说没问题。将 `rotation.set()` 与 Vector3 一起使用会在属性 `matrix` 和 `matrixWorld` 中给出 `NaN` 值,这会使您的对象从场景中消失,在控制台中不显示任何内容。 (2认同)

Har*_*GUL 17

您可以使用此功能旋转对象:

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);
Run Code Online (Sandbox Code Playgroud)

  • 不好`THREE.Math.degToRad()`或`THREE.Math.radToDeg()` (7认同)

小智 7

假设meshToRotate需要在X轴上旋转90度.然后执行以下操作.

var meshToRotate = new THREE.Mesh( geometry, material );

//Rotating mesh by 90 degree in X axis.     
meshToRotate.rotateX( Math.PI / 2 );
Run Code Online (Sandbox Code Playgroud)


Tib*_*Tib 5

在r96上测试过,也可以使用

mesh.rotation.setFromVector3(new THREE.Vector3( Math.PI / 2, 0, 0));
Run Code Online (Sandbox Code Playgroud)

  • `mesh.rotation.set( Math.PI / 2, 0, 0 );` (4认同)

小智 5

对于X轴,您可以使用rotateX()方法

\n
mesh.rotateX(Math.PI / 180 * 90)\n
Run Code Online (Sandbox Code Playgroud)\n

例如: 是 1\xc2\xba 度步长

\n
Math.PI / 180 = 0.17453292519943295\n
Run Code Online (Sandbox Code Playgroud)\n

结果 90\xc2\xba 是

\n
0.17453292519943295 * 90 = 1.5707963267948966\n
Run Code Online (Sandbox Code Playgroud)\n

https://en.wikipedia.org/wiki/Euler_angles

\n
rotateX()\nrotateY()\nrotateZ()\n
Run Code Online (Sandbox Code Playgroud)\n