编程3D动画?

Wil*_*iam 7 3d animation

处理3D游戏动画的不同方法有哪些?你是否以某种方式编程建模器中的动画,以及文件,而不是在游戏中读取和实现它们,还是创建动画函数来动画你的静止矢量?

编程方面的一些好教程在哪里?谷歌只给了我建模师的一面.

Ada*_*eld 18

在生产环境中,动画师使用Autodesk的3DS Max等专用工具生成3D模型的关键帧动画.对于每个模型的每个动画,动画师为模型构建一些称为关键帧的姿势,然后将其导出到游戏的数据格式中.

然后游戏加载这些关键帧,并在特定时间为模型设置动画,它选择两个最近的关键帧并在它们之间进行插值以提供平滑的动画,即使是少量的关键帧也是如此.

动画模型通常使用骨骼层次结构构建.有一个根骨,它控制模型在游戏世界中的位置和方向.所有其他骨骼都是相对于某些父骨骼定义的,以创建树.模型的每个顶点都与特定骨骼相关联,因此可以使用更少数量的参数控制模型:每个骨骼的相对位置,方向和比例.

平滑蒙皮是一种用于提高动画质量的技术.通过平滑蒙皮,顶点不仅仅绑定到一个骨骼,但它可以绑定到多个骨骼(通常是硬限制,例如4,设置;顶点很少需要超过3)并具有相应的权重.这使得动画师的工作变得更加困难,因为他必须在关节附近的顶点做更多的工作,但结果是更平滑的动画,关节周围的扭曲更少.

或者,一些游戏使用程序动画,从而在运行时构造动画数据.根据一些算法计算骨骼位置和方向,例如反向运动学布娃娃物理学.其他选项当然可用,但必须由程序员编码.

而不是在程序上为骨骼设置动画并使用正向运动学来确定所有模型顶点的位置,另一个选择是在程序上自己生成每个顶点的位置.这允许更复杂的动画不受骨骼层次结构的约束,但当然它要复杂得多,而且难以做得更好.


joh*_*003 5

在游戏中处理动画的不同方法?

对于字符,通常:

  1. 骨骼变形
  2. 混合形状
  3. 有时甚至是完全动画的网格(LA. Noire 就是这样做的)
  4. 在最近的《古墓丽影》中,我们使用计算作业来模拟头发的数千条样条线,顶点由这些样条线通过顶点着色器控制。

通常这些是由在运行时插入的关键帧动画驱动的,有时我们会添加代码来按程序驱动影响(骨骼、混合形状权重等)。

对于一些刚性移动的简单对象,有时设计会对整个对象进行动画控制,而不必对其进行变形。有时,像灌木这样的简单东西可以通过使用类似于混合形状的东西来移动,在这种情况下,您在一些极端情况下具有完整的网格姿势,然后在这些极端情况之间进行某种混合。

至于教程……嗯……您是对自己编写动画的数学感兴趣,还是对在游戏中添加一些动画角色并专注于游戏玩法更感兴趣?

就玩游戏而言,Unity 是一个非常棒的游戏平台。

但是,如果您有兴趣了解一般动画或游戏的数学知识,以下是我作为入门阅读的内容:

  • 用于 3d 变换的矩阵(确保您了解交换律、结合律和分配律,并了解每行和每列代表的含义 - 它们比看起来更简单)
  • 旋转四元数(不太直观,但与轴和旋转紧密耦合)

并且不要遗漏基础知识:

  • 矢量点积
  • 矢量叉积

也像 10 年前一样,我写了一个简单的动画库,它非常简单,没有大多数更高级的概念,所以如果你想了解它是如何工作的基本概念,这不是一个糟糕的地方:http:// animadead.sf.net

祝你好运!