Unity3d 查找Unity中骨骼旋转与原始装备中骨骼旋转之间的偏移

Unity3d 查找Unity中骨骼旋转与原始装备中骨骼旋转之间的偏移,unity3d,game-development,quaternions,Unity3d,Game Development,Quaternions,目标: 计算可用于纠正骨骼变换的旋转,以便在手动旋转时骨骼按预期旋转 详细说明: 角色的骨骼变换不会正确地导入到Unity,即,左手的Z轴不会朝向手的顶部,而是向后,而右手的Z轴则向前 我的想法是创建一个类,将角色置于T形姿势,然后映射骨骼旋转。 (我假设Unity在幕后也做了类似的事情,这就是我的想法。) 因此,该类将与如下API一起使用: /// This should return the rotation, where the bone pointing forward rotated

目标:

计算可用于纠正骨骼变换的旋转,以便在手动旋转时骨骼按预期旋转

详细说明:

角色的骨骼变换不会正确地导入到Unity,即,左手的Z轴不会朝向手的顶部,而是向后,而右手的Z轴则向前

我的想法是创建一个类,将角色置于T形姿势,然后映射骨骼旋转。 (我假设Unity在幕后也做了类似的事情,这就是我的想法。) 因此,该类将与如下API一起使用:

/// This should return the rotation, where the bone pointing forward rotated by rotation.
/// Ie. when rotation = Quaternion.Identity the left hand should look forward.
Quaternion CorrectRotation(HumanBodyBones bone, Quaternion rotation)
{
    return Quaternion.Inverse(tPoseRotations[bone]) * rotation;
}
问题是,我似乎找不到一个好方法来映射这些旋转

我最后一次尝试是:

Vector3 boneDirection = (boneTransform.position - parentTransform.position).normalized;
Quaternion mappedRotation = Quaternion.LookRotation(boneDirection, parentTransform.up);

当给定其他旋转时,手跟随相同的偏移,因此除了这个不需要的偏移之外,它们工作正常


因此,基本上,我会感谢任何帮助来解决我的问题,无论是通过这种方式,还是使用不同的解决方案,这些解决方案适用于不同的钻机。

不幸的是,您的问题没有提供足够的详细信息来获得好的答案。在不知道更多的情况下,我会说,假设你成功地转移了T姿势,你的delta计算似乎很好,假设右侧乘法。你试过另一种方法吗?(四元数是不可交换的)你有没有试过将模型加载到搅拌器中,并验证那里的旋转?有可能模型是用一些错误的设置保存的,通过正确保存并重新导入Unity,Unity可以像正常情况一样自动读取它吗?