使用three.js,如何确定网格面向哪个平面?

时间:2016-03-30 03:26:34

标签: javascript 3d three.js

我试图建立一个简单的游戏,从一桶枪中射出东西。到目前为止,我有一个简单的组,一个立方体和一个圆柱作为桶添加。当我旋转组(每次90度)时,枪管朝向不同的方向移动并且一切都很好。

我的问题是,我无法为我的生活找到一种方法来确定我的枪管指向哪个方向。我需要知道如何识别镜筒附着的立方体的面以及它所面对的3D世界的哪个部分...... X +,Y +,Z +,X-,Y-,Z-。请原谅我,如果我的词汇在描述这一点时完全没错。我没有发布任何尝试,因为他们根本没有工作。

请查看此CodePen,了解我尝试做的事情......

...而且这里的代码只是因为我无法将其发布到SO / O上。

var geometry = new THREE.BoxGeometry( 50, 50, 50 );
var material = new THREE.MeshNormalMaterial();
var cube = new THREE.Mesh( geometry, material );
    var cylgeo = new THREE.CylinderGeometry( 10, 5, 100, 32 );
        var cylmesh = new THREE.Mesh( cylgeo, material );

        cylmesh.rotateZ(Math.PI/2);
        cylmesh.translateY(35);


var group = new THREE.Group();

group.add( cube );
group.add( cylmesh );

scene.add(group);

1 个答案:

答案 0 :(得分:0)

首先,构建你的"枪"因此,默认情况下,桶通过修改代码来指向正z轴:

cylmesh.rotateX( Math.PI / 2 );

在场景中添加辅助轴,以便您可以看到自己在做什么:

scene.add( new THREE.AxisHelper( 100 ) );

在此配置中,当父group的旋转为零时,枪管指向正z轴。

如果旋转了父group,则可以获得组(因此桶)的方向:

var vector = new THREE.Vector3(); // create once an reuse
...
group.getWorldDirection( vector );

vector的返回值将是指向与桶相同方向的单位长度向量。

three.js r.75