.dae 格式的3D模型的动画大战

最近在看利用Scenekit显示3D模型,选用了自带动画的模型。需求是要求能自己控制模型的动画。

.dae格式模型在加载后如果有动画,会自动加载模型动画,永久重复。

一、移除动画

想要控制模型的动画就要先将自身的动画移除,因为不知道会在那个子节点带有动画,所以排除掉一层一层过滤带动画节点的方式。挣扎好久终于找出了方法:

//移除模型自带的动画效果

NSArray *allNodes = [sceneSource identifiersOfEntriesWithClass:[SCNNode class]];

for (NSString *nodeName in allNodes) {

    SCNNode *nodeKey = [sceneSource entryWithIdentifier:nodeName withClass:[SCNNode class]];

    [nodeKey removeAllAnimations];

}

先找到模型中的所有节点的名字,再通过方法找到节点,移除节点所带有的动画。

二、添加动画

要添加动画其实很容易,获取到动画数据,就可以直接添加到模型上了。

NSArray *animationIDs = [sceneSource identifiersOfEntriesWithClass:[CAAnimation class]];

NSUInteger animationCount = [animationIDs count];

NSMutableArray *longAnimations = [[NSMutableArray alloc]initWithCapacity:animationCount];

CFTimeInterval maxDuration = 0;

for (NSInteger index = 0; index

[node addAnimation:animationGroup forKey:@"animation"];

你可能感兴趣的:(.dae 格式的3D模型的动画大战)