三个js定义几何的轴

时间:2014-09-08 15:58:45

标签: javascript three.js

我有一个盒子几何,

我想定义几何体的正面,设置一个框:

var materialArray = [];
    materialArray.push(new THREE.MeshBasicMaterial( { map: THREE.ImageUtils.loadTexture( 'test/Three.js/images/xpos.png' ) }));
    materialArray.push(new THREE.MeshBasicMaterial( { map: THREE.ImageUtils.loadTexture( 'test/Three.js/images/xneg.png' ) }));
    materialArray.push(new THREE.MeshBasicMaterial( { map: THREE.ImageUtils.loadTexture( 'test/Three.js/images/ypos.png' ) }));
    materialArray.push(new THREE.MeshBasicMaterial( { map: THREE.ImageUtils.loadTexture( 'test/Three.js/images/yneg.png' ) }));
    materialArray.push(new THREE.MeshBasicMaterial( { map: THREE.ImageUtils.loadTexture( 'test/Three.js/images/zpos.png' ) }));
    materialArray.push(new THREE.MeshBasicMaterial( { map: THREE.ImageUtils.loadTexture( 'test/Three.js/images/zneg.png' ) }));
    var MovingCubeMat = new THREE.MeshFaceMaterial(materialArray);
    var MovingCubeGeom = new THREE.BoxGeometry( 100*meter, 50*meter, 300*meter, 1, 1, 1, materialArray );
    myMesh = new THREE.Mesh( MovingCubeGeom, MovingCubeMat );       
    scene.add( myMesh );    

当我使用myMesh.lookAt(myTarget)瞄准目标时,纹理“zneg.png”(应该是对象的前面)的一侧位于背面,对象面向“zpos.png”面向到了目标。

如何定义对象的正面和底部,或顶部和背面,以便简单地使用旋转?

谢谢。

1 个答案:

答案 0 :(得分:2)

当一个物体处于默认方向时,它被认为是在其内部正z轴的方向上看。 (例外是相机,它在内部负z轴的方向上看。)

当您致电object.lookAt( target )时,旋转对象使其内部z轴指向目标方向。

如果希望几何体的另一面朝向内部正z轴,请在创建几何体后立即对其应用变换。

geometry.applyMatrix( new THREE.Matrix4().makeRotation( 0, Math.PI, 0 ) );

编辑:您也可以使用其中一种内置方法。例如,

geometry.rotateY( Math.PI );

three.js r.100