最近在看利用Scenekit显示3D模型,选用了自带动画的模型。需求是要求能自己控制模型的动画。
.dae格式模型在加载后如果有动画,会自动加载模型动画,永久重复。
一、移除动画
想要控制模型的动画就要先将自身的动画移除,因为不知道会在那个子节点带有动画,所以排除掉一层一层过滤带动画节点的方式。挣扎好久终于找出了方法:
//移除模型自带的动画效果
NSArray *allNodes = [sceneSource identifiersOfEntriesWithClass:[SCNNode class]];
for (NSString *nodeName in allNodes) {
SCNNode *nodeKey = [sceneSource entryWithIdentifier:nodeName withClass:[SCNNode class]];
[nodeKey removeAllAnimations