首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在多个轴上同时旋转十轴

如何在多个轴上同时旋转十轴
EN

Stack Overflow用户
提问于 2014-07-08 12:38:30
回答 1查看 261关注 0票数 1

我正在用Decals开发Libdx应用程序。贴花是3d世界中的二维精灵。

我有问题当我说:

代码语言:javascript
复制
decal.setRotationX(angle)

一切正常,但当我说:

代码语言:javascript
复制
decal.setRotationX(angle);
decal.setRotationY(angle2);

贴花只绕Y轴旋转。

如何处理这个问题?我已经发现,Decal在源代码中使用四元数作为旋转,但目前我不知道如何定制它来满足我的需求。

Tnx提前!

编辑:

我设法用以下几个轴旋转贴花:

Decal.getRotation().setEulerAngles(偏航,俯仰,滚动);

现在我的问题是如何用TweenEngine动画这个?

在get值方法中,我有:

代码语言:javascript
复制
returnValues[0] = target.getRotation().getYaw();
returnValues[1] = target.getRotation().getPitch();
returnValues[2] = target.getRotation().getRoll();

在设置值方法中,我有:

代码语言:javascript
复制
target.getRotation().setEulerAngles(newValues[0], newValues[1],
                newValues[2]);

但标记不是移动或动画,它被塞在一个位置(在XYZ轴上稍微旋转)。

任何想法,在TweenEngine中的值是正确的,但不知何故,标记并不是刷新和旋转。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-07-08 12:48:51

如果你只想做一次,你可以这样做:

代码语言:javascript
复制
decal.rotateX(angleX);
decal.rotateY(angleY);
decal.rotateZ(angleZ);

这将“添加”给定的角度到当前的一个。

另一种方法是使用Quaternion的旋转Decal

代码语言:javascript
复制
decal.getRotation().setEulerAngles(yaw, pitch, roll);

下图显示了“偏航”、“俯仰”和“滚动”的含义:

滚动,俯仰,偏航http://i.msdn.microsoft.com/dynimg/IC79189.gif

编辑:我刚刚看到了JavaDoc of Decal.getRotation(),它说返回的四元数不应该被修改!我还检查了代码和Decal的所有其他方法设置了一个内部update标志,这将导致标记在下次呈现时更改。Decal.getRotation()没有设置此标志,因此对它的更改不会被识别。

似乎目前没有真正干净和简单的方式来设置旋转在所有三个轴在同一时间。解决办法可能如下所示:

代码语言:javascript
复制
decal.setRotationX(0);
decal.setRotationY(0);
decal.setRotationZ(0);
decal.rotateX(angleX);
decal.rotateY(angleY);
decal.rotateZ(angleZ);

它首先将所有角度重置为0,然后在每个轴上旋转,而不覆盖任何其他轴。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24632095

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档