编程3D动画?

时间:2009-04-01 04:58:51

标签: animation 3d

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

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

2 个答案:

答案 0 :(得分:18)

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

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

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

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

或者,一些游戏使用程序动画,从而在运行时构建动画数据。骨骼位置和方向根据某些算法计算,例如inverse kinematicsragdoll physics。其他选项当然可用,但必须由程序员编码。

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

答案 1 :(得分:4)

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

对于角色,通常是:

  1. 骨骼变形
  2. 混合形状
  3. 有时甚至是完全动画的网格(LA。Noire那样做)
  4. 在最近的“古墓丽影”中,我们使用计算作业来模拟头发的数千个样条线,顶点由这些样条线控制,并带有顶点着色器。
  5. 这些通常由在运行时插值的关键帧动画驱动,有时我们会在程序上添加代码来驱动影响(骨骼,混合形状权重等)。

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

    至于教程 ......嗯......您是否有兴趣自己编写动画的数学,或者您是否更感兴趣在游戏中获得一些动画角色并专注于游戏玩法?

    为了玩游戏,Unity是一个非常棒的平台。

    如果您有兴趣了解动画或游戏的数学,那么这就是我作为入门读物的内容:

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

    不要遗漏基础知识:

    • 矢量点产品
    • Vector Cross Product

    也像10年前一样,我写了一个简单的动画库,它非常简单,没有大多数更先进的概念,所以如果你想了解它是如何工作的基本概念那么它不是一个好看的地方:{ {3}}

    祝你好运!