【发布时间】:2020-10-30 17:16:17
【问题描述】:
我一直在寻找解决这个问题的方法很长一段时间(意味着几天),但我还没有找到任何东西。可能是我想错了,没有办法,但我们试试吧!
我正在 Hololens 上记录手数据(目前是 Unity Hololens 输入模拟)。这基本上给了我一个float AnimationCurve 用于每个transform.position.x 到z 和rotation.x 到w 的每个手关节。现在我的目标是将这些曲线放入AnimationClip 并将其添加到AnimatorController(通过AnimatorOverrideController),它可以为手动装置制作动画并重放录音。到目前为止一切正常!
但是,Hololens 记录的手数据是世界范围的,而不是本地范围的。 (这是有道理的,因为当您想知道手在哪里时通常需要绝对坐标。)但是要为手设置动画,似乎我只能设置本地坐标,而我没有。
例子:
clip.SetCurve("", typeof(Transform), "localPosition.x", curve.PositionX);
在这里,剪辑从某个手部关节获取 x 坐标,并将其放到相应手部绑定关节的 localPosition.x 中。问题:curve.PositionX 是世界比例(绝对坐标),但 localPosition.x 采用本地比例(相对于其父级的坐标)。
我不能像这样简单地将"localPosition.x" 更改为"position.x":
clip.SetCurve("", typeof(Transform), "position.x", curve.PositionX);
即使 Transform 类具有两个属性,并且 position 是对象的世界比例位置。我不确定为什么这不起作用,但它给了我以下错误:
Cannot bind generic curve on Transform component, only position, rotation and scale curve are supported.
我知道对动画使用绝对坐标没有多大意义,但我根本没有其他任何东西。
有没有人有办法让我以一种明智、不太麻烦的方式处理这个问题?似乎我拥有所有重要的部分,我只是不知道如何将它们组合在一起。已经非常感谢了! :)
【问题讨论】:
标签: unity3d animation hololens