Search code examples
rotationthree.jsplane

Rotate a plane on its edge in three.js


I wanted to rotate a plane, but I can't figure out how to set the rotation axis. I'd like to rotate a plane around its edge.

I've seen solutions suggesting matrix transformations but they lacked explanation so I couldn't apply them.


Solution

  • Ok I figured it out. What you have to do is create a parent 3D object and add the plane to it. Once, added, you have to translate it by 50% and start rotating the parent object.

    var object = THREE.SceneUtils.createMultiMaterialObject( new THREE.PlaneGeometry( 200, 50, 4, 4 ), [material] );
    
    var parent = new THREE.Object3D();
    object.applyMatrix( new THREE.Matrix4().makeTranslation( 0, 25, 0 ) );
    parent.add(object);
    parent.rotation.x = 1;
    
    scene.add(parent)