在世界轴上旋转网格 - THREE.js

时间:2015-12-06 19:03:48

标签: javascript three.js

我在旋转物体时遇到困难。我目前正在使用THREE.Shape来配置自定义形状,在创建形状后,我将其配置为网格并将其位置设置为:

buildingMesh.position.set( -70, -300, levelY );

现在,由于mesh以及camera的位置,它看起来好像站起来了。

看起来像这样: First image

现在我最近添加了一个围绕世界轴旋转的Orbital相机,一旦相机移动,这就是它的外观:

Second Image

现在这是有道理的,因为在使用y axis时从未配置Three.Shape。我现在要弄清楚的是如何将该物体转动,使其看起来像是站立起来,如第一张图片所示。我尝试在x,y,z轴上使用旋转,但它似乎总是只在对象轴内旋转。

有什么建议吗?

我在另一个问题上发现了我试过的东西:

rotateAroundWorldAxis: function(object, axis, radians) {
        this.rotWorldMatrix = new THREE.Matrix4();
        this.rotWorldMatrix.makeRotationAxis(axis.normalize(), radians);
        this.rotWorldMatrix.multiply(object.matrix);        // pre-multiply
        object.matrix = this.rotWorldMatrix;
        object.rotation.setFromRotationMatrix(object.matrix);
    }

2 个答案:

答案 0 :(得分:0)

尝试:

mesh.rotate.x = Math.PI // will rotate over x axis 180 degree

其中'网格'是您创建的对象(您可以旋转' y'以及' z')

答案 1 :(得分:0)

因此,这里的主要问题是网格是由多个层构建的。所有这些图层实际上必须组合成一个Object3D,这反过来又让我只做:group.rotateOnAxis(axis,Math.pow(Math.PI, 2) / 2);

希望这有助于将来的任何人。