Clo*_*kex 4 c++ vector angle quaternions euler-angles
因为这是一个复杂的问题,通常会导致很多混乱(我之前已经问过这个问题的变体,但从来没有以正确的方式提出这个问题,也没有得到答案),我将尽量把它说清楚可能的。
事实:
我正在尝试做的事情:
我正在尝试在人形骨骼结构上播放动画,并使用扭矩(旋转力)将物理布娃娃推入与骨骼结构大致相同的姿势。
问题:
我可以在四元数中完全工作,直到需要将扭矩应用于刚体。该AddTorque 函数在欧拉角中有效工作,这意味着我不能使用四元数。我可以轻松地从四元数中提取欧拉角,但它们不可靠并且会导致布娃娃严重变形。
我需要的:
我需要从 Forward、Up 和 Right 向量计算可靠的 3D Euler 角(例如,那些不会从 + 翻转到 - “随机”)。我意识到这有点复杂,但这就是我在这里问的原因:我缺乏自己解决这个问题的知识和经验。
鉴于矢量本身是可靠的,我认为没有理由不能从它们计算出可靠的欧拉角。另外,我不知道我想要或需要欧拉角的旋转顺序,但我相信以后修改会很容易。
任何帮助将非常感激!
首先,我想说我完全通过@Tobias 的努力解决了我的问题。非常感谢!一直以来,我一直在从错误的一端解决问题。我假设我需要以AddTorque特定的方式使用(使用欧拉角)并从那里开始工作,但是 @Tobias(和稍后的 @JarkkoL)指出我需要以AddTorque不同的方式使用。
所以这就是我在 UnityScript(实际上是 JavaScript)中所做的:
var quat0:Quaternion;
var quat1:Quaternion;
var quat10:Quaternion;
quat0=transform.rotation;
quat1=target.transform.rotation;
quat10=quat1*Quaternion.Inverse(quat0);
rigidbody.AddTorque(quat10.x,quat10.y,quat10.z,ForceMode.Force);
Run Code Online (Sandbox Code Playgroud)
而且,出乎所有人的意料,这有效!!它只是……有效!当然,刚体立方体需要很长时间才能稳定下来,但那是因为我需要一个 PID 控制器。或者可能quat10需要标准化,不确定。我会解决的:)
我不知道您实际上可以单独使用 quat 的那部分。
| 归档时间: |
|
| 查看次数: |
6992 次 |
| 最近记录: |