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