2 yequan506200797 yequan506200797 于 2016.04.05 16:19 提问

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

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

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

object.position.x=1;

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

4个回答

yequan506200797
yequan506200797   2016.04.06 19:38
已采纳

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

CSDNXIAON
CSDNXIAON   2016.04.05 16:50

three.js 绕其边缘旋转
----------------------同志你好,我是CSDN问答机器人小N,奉组织之命为你提供参考答案,编程尚未成功,同志仍需努力!

freedamjustice
freedamjustice   2016.04.06 14:26

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

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

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

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!