我正在将第三方 .dae Collada 文件作为场景加载到 SceneKit 项目中。
.dae 文件中有许多不同的动画,设置在不同的时间/帧。我试图弄清楚如何将它们分开并通过引用名称引用每个单独的动画。 dae 文件中没有易于理解的参考名称 - 动画全部设置为一个动画。
我能够将动画解析为 CAAnimation 对象,并使用以下代码验证我是否已成功完成此操作:
SCNScene *scene = [SCNScene sceneNamed:@"art.scnassets/man.dae"];
SCNNode *man = [scene.rootNode childNodeWithName:@"Bip01" recursively:YES];
CAAnimation *animation = [man animationForKey:@"test_Collada_DAE-1"];
[man removeAllAnimations];
[man addAnimation:animation forKey:@"animation"];
有没有办法为我的 CAAnimation 对象设置开始和结束帧或时间?解析各种动画的最佳方法是什么?我希望我不必手动将 dae 文件拆分为多个文件并单独加载每个文件。
3D 工具通常将多个动画导出为带有子动画的单个动画。在这种情况下,SceneKit 会将这些动画加载为带有子动画的 CAAnimationGroup。因此,一种选择是“解析”动画组的子动画并检索您想要的动画。另一种选择是使用 SCNSceneSource 按名称检索(子)动画(但这仅在您的 3D 工具在导出 DAE 时导出名称时才有效)。
如果您需要“裁剪”动画(即从较长的动画中提取从 t0 开始、持续时间为 D 的动画),CoreAnimation 有一个 API:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)