3d 旋转,然后在three.js中平移

3d 旋转,然后在three.js中平移,3d,three.js,3d,Three.js,我想旋转一个用3.PlaneGeometry创建的平面,但是我有一些问题 FirstPersonCamera相机前面的轴是多少? 我自己的测试显示X-前/后,Y-上/下,Z-左/右,我对吗? 为了使用这些平面生成立方体,我使用了以下代码(剪切仅用于显示X轴面)。出于我不理解的原因,在块和正交基之间有一个小的空间。似乎在平移后应用了旋转。我怎样才能修好它 此处的完整代码(使用ctrl+单击向后移动):在转换位置之前尝试更新矩阵: mesh.matrix.setRotationFromEuler(

我想旋转一个用3.PlaneGeometry创建的平面,但是我有一些问题

  • FirstPersonCamera相机前面的轴是多少?
    我自己的测试显示X-前/后,Y-上/下,Z-左/右,我对吗?

  • 为了使用这些平面生成立方体,我使用了以下代码(剪切仅用于显示X轴面)。出于我不理解的原因,在块和正交基之间有一个小的空间。似乎在平移后应用了旋转。我怎样才能修好它

  • 此处的完整代码(使用ctrl+单击向后移动):

    在转换位置之前尝试更新矩阵:

    mesh.matrix.setRotationFromEuler(new THREE.Vector3(0, Math.PI / 2),  'XYZ');
    mesh.updateMatrix();
    mesh.translate(...);
    

    回答这个问题:指定必须应用平移/旋转的顺序的最佳方法是使用多个节点

    var pitchNode = new THREE.Object3D( );
    var yawNode = new THREE.Object3D( );
    var rollNode = new THREE.Object3D( );
    var positionNode = new THREE.Object3D( );
    
    // here come the order
    scene.add( pitchNode );
    pitchNode.add( yawNode );
    yawNode.add( rollNode );
    rollNode.add( positionNode );
    
    var pitchNode = new THREE.Object3D( );
    var yawNode = new THREE.Object3D( );
    var rollNode = new THREE.Object3D( );
    var positionNode = new THREE.Object3D( );
    
    // here come the order
    scene.add( pitchNode );
    pitchNode.add( yawNode );
    yawNode.add( rollNode );
    rollNode.add( positionNode );