![]() |
1
20
我花了一天的时间试图为动画编辑器找到完全相同的东西;下面是我是如何做到的:
以下是查找正交法线的代码,但是如果您只需要用于上述方法的代码,您可能会做得更好:
例如,如果你的四元数围绕X旋转90度,围绕Y旋转90度,你会发现如果你围绕Z分解旋转,它也将是90度。如果你想象一个向量做这些旋转,那么这是完全有意义的,但取决于你的应用程序,它可能不是你想要的行为。 对于我的应用-约束骨架关节-我最终得到了一个混合系统。矩阵/quat在整个过程中使用,但当谈到约束关节的方法时,我在内部使用了euler角,将旋转quat分解为每次围绕X、Y、Z的旋转。
|
![]() |
2
35
对于这个问题有一个优雅的解决方案,特别适用于四元数。它被称为“摇摆扭曲分解”:
这个代码的详细答案和推导可以在这里找到 http://www.euclideanspace.com/maths/geometry/rotations/for/decomposition/ |
![]() |
3
1
|
![]() |
4
1
minorlogic的答案指出swing-twist分解是迄今为止最好的答案,但它缺少了一个重要的步骤。问题是(使用minorlogic的伪代码符号)如果
下面是我自己的swing twist投影版本(在某些情况下使用不同的变量名,而不是minorlogic的变量名),并进行了点积校正。代码是针对jomljdk库的,例如。
|
|
5
0
不足以得到可重复的结果。我已经在纸上发展了这一点,我建议采取以下行动,选择与“你想找到旋转轴”正交的向量,即观察轴。有一个与观察轴正交的平面。你必须把四元数的旋转轴投射到这个平面上。使用这个结果向量作为与观察轴正交的向量将得到很好的结果。 感谢赛博为我定下了正确的方向。 |
![]() |
anti · FBXSDK,使用四元数设置旋转关键点? 7 年前 |
![]() |
Paul Spain · 如何用四元数调整欧拉角 7 年前 |
![]() |
mnen · 捕捉对象相对于另一个对象的位置和旋转 7 年前 |
![]() |
anti · 特征点到平面算法,返回四元数? 7 年前 |
![]() |
Matin Lotfaliee · 检查相机是否聚焦在精灵上 8 年前 |
![]() |
Vlad · SlimPath中的LookAt旋转具有Unity3D中的预期值 11 年前 |