访问mixamo.com,选择一个角色,点击动画,选择一个,只需下载为.dae。
将文件放在Mac桌面上;点击文件信息)。它将完美的动画字符移动。
Xcode,在文件夹中拖动。点击.dae文件,点击底部的播放图标。它会完美地动画角色的移动。
现在,将角色添加到现有SceneKit场景中。例如:
let p = Bundle.main.url(forResource: "File Name", withExtension: "dae")!
modelSource = SCNSceneSource(url: p, options: nil)!
let geom = modelSource.entryWithIdentifier("geometry316",
withClass: SCNGeometry.self)! as SCNGeometry
theModel = SCNNode(geometry: geom)
.. your node .. .addChildNode(theModel)
(To获取几何体名称,只需查看.dae文本example)
你会完美地看到这个角色,在T型姿势
但是,似乎无法在角色上运行动画。
代码看起来像...
theAnime = amySource.entryWithIdentifier("unnamed_animation__0", withClass: CAAnimation.self)!
theModel.addAnimation(theAnime, forKey:"aKey")
不管我怎么努力它就是不动。
在添加动画时,角色会跳到不同的静态位置,并且不执行任何操作。(如果您安排“结束”动画removeAllAnimations()
,则它只是返回到T姿势。)
显然,dae文件是完美的,因为显示动画完美简单地在Mac查找器,和完美在实际屏幕上的.dae文件在Xcode!
简而言之,从上面的mixamo图片来看,有人能够让动画在SceneKit场景中运行吗?
(PS不是ARKit..场景工具包。)
1条答案
按热度按时间rmbxnbpk1#
首先,你只需要你的角色在T位置。下载该文件作为Collada(DAE)与皮肤。不要包括任何动画到这个文件。没有进一步的修改需要这个文件。
然后,对于任何动画效果,你会实现像走,跑,跳舞,或什么-这样做:
测试/应用您想要的动画在Mixamo的字符,调整设置,然后下载它。这里是非常重要的下载为Collada(DAE),并选择无皮肤!!!
这将为您要实现的每个动画给予一个DAE文件。此DAE不包含网格数据和装备。它只包含其所属模型的变形(这就是您选择下载不带蒙皮的DAE文件的原因)。
然后,您需要对包含动画的所有DAE文件执行两个附加操作。
首先,您需要精确打印每个包含动画的DAE的XML结构。您可以使用Notepad++中的XML工具在i.Ex.中完成此操作,或者在Mac上打开一个终端并使用以下命令:
然后在Mac上安装此工具。(https://drive.google.com/file/d/0B1_uvI21ZYGUaGdJckdwaTRZUEk/edit?usp=sharing)x1c 0d1x
使用此转换器转换所有DAE动画:(但不要使用此工具转换您的T型模型!!!)
否,我们已准备好设置动画:
您应在
art.scnassets
文件夹中整理DAE
让我们配置一下:
我通常将其组织在一个名为characters的
struct
中,但任何其他实现都可以添加以下内容:
然后可以在viewDidLoad变量characters = Characters()中初始化结构i.Ex.
注意使用正确的子节点!
在这种情况下,
childNodes[1]
是可见网格,childNodes[0]
将是动画节点。你也可以在你的代码中实现这个SceneKit扩展,它对于导入模型非常有用。(注意,它会把模型节点组织成一个新节点的查尔兹节点!)
我也添加了下面的扩展名。你以后在动画播放器中会用到它。
按如下方式处理角色设置和动画:(这里是我的类的简化版本)
在你初始化字符结构之后,你可以初始化类对象。
剩下的你会弄清楚,回来找我,如果你有问题或需要一个完整的示例应用程序:)