我在自主机器人领域工作。我通常会模拟一个机器人,没有可视化,导出位置和旋转数据到一个文件在大约30 fps,然后播放该文件在稍后的时间。目前,我将动画数据保存在一个自定义格式的JSON文件中,并使用three.js动画。
我想知道是否有更好的方法来导出这些数据?
我对动画不是很熟悉,但我怀疑我可能会导出到类似COLLADA或glTF之类的东西,并获得使用许多系统已经设置好要导入的格式的好处。
我有几个问题(一些具体问题和一些一般性问题):
发布于 2017-12-14 14:57:11
您描述的动画类型通常称为“烘焙”动画,其中一些计算已经采样,可能在30 ~ 60 fps,关键帧保存在较高的采样率。对于这样的动画,通常采用线性插值。例如,在Blender中,有一种方法可以运行Blender游戏引擎并将物理模拟记录到(密集的)关键帧中。
至于插值,这里有一个思想实验:考虑一下,基于多边形的渲染引擎想要绘制一个圆,但必须只使用直线。在圆的边缘周围计算了有限数量的点,几十个或数百个小线段填补了点之间的空隙。有足够的密度,或相机足够远的背面,它看起来圆,但线段确保没有泄漏或缺口,在未来的圆圈。同样的概念也适用于烘焙的关键帧(在时间上而不是在空间中)。有一个高的样本密度,直线(线性插值)填补了缺口。如果你用超慢的动作播放它,你可能会发现当新的关键帧到达时,速度的细微变化。但是在正常速度下,它看起来是正常的,并且帧速率不需要被锁定在采样速率上。
我建议在这里阅读一个关于glTF 2.0动画的一节 (免责声明,我是glTF贡献者和工作组成员)。特别是,使用线性插值来描述基于节点的动画。
对于机器人来说,你需要避开皮肤和基于骨架的动画。无论如何,这些东西并不总是与基于节点的动画兼容(我们最近在那里遇到了问题)。基于节点的动画更适用于具有关节关节等的非变形机器人。
https://stackoverflow.com/questions/47801741
复制相似问题