如何在不看"无标题动画"的情况下导出DAE文件以便在Scene Kit中使用?

use*_*632 12 blender collada scenekit swift

我正在尝试将在Cheetah 3D和Blender 3D中创建的动画加载到Scene Kit中,但我得到的是一堆"无标题动画",每个动画都是相同的动画.

有谁知道如何从Blender或Cheetah 3D正确导出这些,以便Scene Kit可以使用它们?

Fli*_*Fun 29

我挖了这个因为它也让我烦恼.所有"无标题动画"都是每个骨骼的单独动画.您可以从xcode右侧面板中的属性inspecter获取id.像这样使用swift,你可以得到你的动画.

let urlOfScene = Bundle.main.url(forResources: "your url", withExtension: "dae")
let source = SCNSceneSource(url: urlOfScene, options: nil)
let armature = source.entryWithIdentifier("Armature", withClass: SCNNode.self) as SCNNode

let animation = armature.entryWithIdentifier("your bone id", withClass: CAAnimation.self) as CAAnimation
Run Code Online (Sandbox Code Playgroud)

必须对骨架中的所有骨骼进行此操作.**烦人!*

Apple使用3dmax进行所有示例项目,这些项目仅为每个collada文件显示一个动画.这是因为3dmax在一个动画下输出所有骨骼,而搅拌机将每个骨骼分开.

Temp Work Around 使用TextEdit或在.dae文件的末尾添加.xml扩展名并使用xml编辑器打开它(很多都是免费的在线).xml编辑器更容易使用.向下滚动到动画起始块.它看起来像......

<library_animations>
<animation id= "first_bone"> 
<source id= "first_bone-input"> 
Run Code Online (Sandbox Code Playgroud)

把它改成......

<library_animations>
<animation>                      ---this is the only modified line
<source id="first_bone-input"> 
Run Code Online (Sandbox Code Playgroud)

在每个动画结束时将是一个结束块,如此...

</animtion>                      ---delete this line as long as its not your last bone    
<animation id="second_bone">     ---delete this line too
<source id="second_bone-input">  
Run Code Online (Sandbox Code Playgroud)

当然在你最后一个骨头的末尾离开动画结束块就像这样......

</animation>
</library_animations>
Run Code Online (Sandbox Code Playgroud)

这将在您的.dae文件中为您提供一个动画,该动画与您的文件同名,并在末尾添加-1!

编辑 - 这是一个Automator服务的链接,将为您转换上述代码!

Automater collada converter下载

将文件解压缩并放入〜/ Library/services文件夹中.从那里你可以右键单击你的collada文件并向下滚动到ConvertToXcodeCollada和presto!完成后会弹出一个窗口(大约半秒钟).

  • 刚添加了一个服务链接,将文件转换为Xcode兼容的Blender动画.请享用!处理纹理和Scenekit的教程! (2认同)

NC_*_*DEV 1

我正在解决同样的问题,但我正在使用 Maya,如果您下载WWDC 2014 的 SceneKit 幻灯片

\n\n

文件 AAPLSlideAnimationEvents.m 有一些导入带有多个 \xe2\x80\x9cuntitled-animations\xe2\x80\x9d 的 DAE 文件的示例,如您所描述,希望有帮助

\n