骨骼动画
学习目标
1.理解骨骼动画的含义
百度百科
当前有两种模型动画的方式:顶点动画和骨骼动画。顶点动画中,每帧动画其实就是模型特定姿态的一个“快照”。通过在帧之间插值的方法,引擎可以得到平滑的动画效果,在骨骼动画中,模型具有互相连接的“骨骼”组成的骨架结构,通过改变骨骼的朝向和位置来为模型生成动画。 骨骼动画比顶点动画要求更高的处理器性能,但同时它也具有更多的优点,骨骼动画可以更容易、更快捷地创建。不同的骨骼动画可以被结合到一起——比如,模型可以转动头部、射击并且同时也在走路。一些引擎可以实时操纵单个骨骼,这样就可以和环境更加准确地进行交互——模型可以俯身并向某个方向观察或射击,或者从地上的某个地方捡起一个东西。多数引擎支持顶点动画,但不是所有的引擎都支持骨骼动画。
苹果官方
骨骼动画是一种简化复杂几何形状的动画的技术,比如游戏中人的特征,动画骨架是一个简单的控制节点的层次结构,本身没有可见的几何对象,将骨头和几何对象进行结合,当你移动这个骨头控制的节点时允许SceneKit 去自动使几何对象变形。
2.学习骨骼动画相关的类(SCNKinner)
接下来学习一个类的使用
- SCNKinner 能干什么?
提供一些方法可以将节点的骨骼动画进行分离,你可以使用这个对象管理从Scene文件导入的骨骼动画与节点和几何对象之间动态关系。这个类在平时开发过程中,不怎么用的,大家了解一下即可!
怎么使用骨骼动画?
一般情况下,游戏设计师使用3D 工具创建一个皮肤模型,包含了骨骼的动画,保存在一个场景文件中,你从场景文件中导入这个骨骼模型,然后让他们运动起来.
- 另外你也可以直接从场景文件中导入动画对象直接操作骨头节点
您还可以单独创建一个自定义的几何和骨架数据的皮肤模型
我们先找一个带骨骼的模型文件,分析一下它的结构
如何将一段完整的动画,分阶段执行,我们刚才看见了这段动画的时间为0~24秒左右。
首先先介绍一个类(SCNSceneSource)
主要用于管理场景文件的读取任务,也可以读取NSData对象哦!你懂了吧,如果这个模型,我们从网络传输的话,可能就需要使用这个类了。 这个类暂时不详细讲解,后面我会补上,今天主要用到它的两个方法。
N0.1
- (NSArray<NSString *> *)identifiersOfEntriesWithClass:(Class)entryClass;
作用:获取场景中包含的某一类对象的标识(数组),可以获取的类型有 SCNMaterial, SCNScene, SCNGeometry, SCNNode, CAAnimation, SCNLight, SCNCamera, SCNSkinner, SCNMorpher, NSImage
NO.2
- (nullable id)entryWithIdentifier:(NSString *)uid withClass:(Class)entryClass;
作用:根据对象的ID 和对象的类型,获取对象本身
NO.3
+ (nullable instancetype)sceneSourceWithURL:(NSURL *)url options:(nullable NSDictionary<NSString *, id> *)options;
作用:初始化方法
NO.4
- (nullable SCNScene *)sceneWithOptions:(nullable NSDictionary<NSString *, id> *)options error:(NSError **)error;