Tengo una malla que quiero rotar 90 grados en el interior de Tres JS.
Aquí está la imagen de la situación actual:
¿Cómo puedo girar una malla de 90 grados en ThreeJS?

Quiero la malla seleccionada para ser rotado paralelamente a la ampliación de la malla.
He tratado de rotación de la matriz como esta:

matrix =   new THREE.Matrix4().makeRotationX(1.57)

Pero la malla va en extrañas rotaciones. ¿Hay alguna manera más fácil de girar 90 grados ?

  • objeto.la rotación.y = TRES.De matemáticas.degToRad( 90 );
InformationsquelleAutor Zaay | 2015-04-27

4 Comentarios

  1. 43

    La threejs de rotación utiliza Radianes (como se puede saber)

    puede utilizar este

    mesh.rotation.x = Math.PI / 2;

    o

    mesh.rotation.set(new THREE.Vector3( 0, 0, Math.PI / 2));
    • Trabajó mucho. Gracias!
    • mesh.rotation.set(new THREE.Vector3( 0, 0, Math.PI / 2)); no funcionan en r96. uso setFromVector3 en lugar de set
    • mesh.rotation.set(0, 0, Math.PI / 2) es Aceptar con r101. El uso de rotation.set() con un Vector3 da NaN valores en las propiedades de matrix y matrixWorld que hace que su objeto de desaparecer de la escena, mostrando nada en la consola.
    • Eso es porque mesh.rotation es un THREE.Euler y no un THREE.Vector3, este es un tipo de objeto diferente.
  2. 16

    Se puede girar un objeto mediante el uso de esta función:

    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);
    • NO es bueno THREE.Math.degToRad() o THREE.Math.radToDeg()
    • Que es ineficiente, ya que va a desencadenar 3 matriz de multiplicaciones en lugar de uno. Estaría bien si desea interactuar con una sola malla, por ejemplo la manipulación por parte del usuario, pero no se recomienda si usted lo llama repetidamente por ejemplo una animación …
  3. 7

    Digamos meshToRotate necesita ser girado 90 grados en el eje X. A continuación, haga lo siguiente.

            var meshToRotate = new THREE.Mesh( geometry, material );
    
            //Rotating mesh by 90 degree in X axis.     
            meshToRotate.rotateX( Math.PI / 2 );
  4. 2

    Probado en r96, también puede utilizar

    mesh.rotation.setFromVector3(new THREE.Vector3( Math.PI / 2, 0, 0));
    • mesh.rotation.set( Math.PI / 2, 0, 0 );
    • de malla.updateMatrixWorld() debe ser llamado si la actualización automática no está habilitada

Dejar respuesta

Please enter your comment!
Please enter your name here