three.js中如何旋转物体position坐标系

在three.js中导入了外部创建的几何体,我想使物体本身的坐标系围绕Y轴旋转45度:

object.rotation.y=Math.PI/4;

object.position.x=1;

但是旋转后物体的坐标并没有变化,即物体的世界坐标还是(1,0,0)。请问我改如何实现这种想法,以上程序错误在哪里?谢谢大家的解答。

3个回答

我找到解决方案了,分享给大家,rotation改变的是子对象的坐标系,但是不改变本身的坐标系角度,所以想要改变其自身的坐标系方向,可以为其添加父对象,然后改变父对象的rotation。
temp=new THREE.Object3D();
temp.add(object);
temp.rotation.y=Math.PI/4;
此时object的XZ坐标系就旋转了45度。

rotation是绕物体本身中心点旋转。要绕坐标Y轴旋转需要自行计算其旋转后坐标,再设置。 像你的代码object.rotation.y=Math.PI/4;如果加上贴图
和定时旋转,你就会发现物体其实是在做自转。

yequan506200797
裤兜响当当 回复freedamjustice: 谢谢您的解答,我能理解您的意思,但是除了自行计算器旋转后的坐标还有其他的设置方法可以改变Position的坐标系么?
4 年多之前 回复
freedamjustice
freedamjustice 顺便补充一下,你要的效果其实等于地球绕太阳公转,但你的代码只是地球自转,我想这样说应该形象一点
4 年多之前 回复

我找到解决方案了,分享给大家,rotation改变的是子对象的坐标系,但是不改变本身的坐标系角度,所以想要改变其自身的坐标系方向,可以为其添加父对象,然后改变父对象的rotation。
temp=new THREE.Object3D();
temp.add(object);
temp.rotation.y=Math.PI/4;
此时object的XZ坐标系就旋转了45度。

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问
相关内容推荐