骨骼动画

学习目标

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;

results matching ""

    No results matching ""