Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在世界轴中旋转网格-THREE.js_Javascript_Three.js - Fatal编程技术网

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

Javascript 在世界轴中旋转网格-THREE.js,javascript,three.js,Javascript,Three.js,我旋转物体有困难。我目前正在使用THREE.Shape配置自定义形状,创建形状后,我将其配置为网格,并将其位置设置为: buildingMesh.position.set(-70,-300,levelY) 现在,由于网格的位置以及相机的位置,它看起来像是站着的 下面是它的样子: 现在,我最近添加了一个绕世界轴旋转的轨道相机,一旦相机移动,它的外观如下: 现在这是有意义的,因为使用Three.Shape时从未配置过y轴。我现在想弄清楚的是,我怎样才能转动那个物体,使它看起来像是站着的,如第一幅

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

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

现在,由于
网格
的位置以及
相机
的位置,它看起来像是站着的

下面是它的样子:

现在,我最近添加了一个绕世界轴旋转的
轨道
相机,一旦相机移动,它的外观如下:

现在这是有意义的,因为使用
Three.Shape
时从未配置过
y轴。我现在想弄清楚的是,我怎样才能转动那个物体,使它看起来像是站着的,如第一幅图所示。我曾尝试在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);
    }
尝试:


其中“网格”是您创建的对象(您也可以旋转“y”和“z”)

因此这里的主要问题是网格是由多个层构建的。实际上,所有这些层都必须分组到一个
Object3D
中,这样我就可以简单地执行:
group.rotateOnAxis(axis,Math.pow(Math.PI,2)/2);

希望这对将来的任何人都有帮助

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