有哪些不同的方法来处理3D游戏的动画?你是否以某种方式在建模器中编写动画,从而在文件中,然后读取并在游戏中实现它们,或者你创建动画函数来动画你的静止矢量?
关于这方面的编程方面,哪里有一些好的教程?谷歌只给了我建模师的一面。
发布于 2009-04-01 05:20:38
在生产环境中,动画师使用专门的工具生成3D模型的关键帧动画。对于每个模型的每个动画,动画制作人为模型构造了许多称为关键帧的姿势,然后将这些姿势导出为游戏的数据格式。
然后,游戏加载这些关键帧,并在特定时间为模型设置动画,它会拾取最近的两个关键帧,并在它们之间进行插值以提供平滑的动画,即使关键帧数量很少也是如此。
动画模型通常使用骨骼层次构建。有一个根骨骼,它控制模型在游戏世界中的位置和方向。所有其他骨骼都是相对于某个父骨骼定义的,以创建树。模型的每个顶点都绑定到特定的骨骼,因此可以使用数量少得多的参数来控制模型:每个骨骼的相对位置、方向和比例。
平滑蒙皮是一种用于提高动画质量的技术。使用平滑蒙皮,顶点不会仅绑定到一个骨骼,但可以使用相应的权重将其绑定到多个骨骼(通常设置硬限制,如4;顶点很少需要大于3)。这使得动画师的工作更加困难,因为他必须对关节附近的顶点做更多的工作,但结果是一个更平滑的动画,关节周围的扭曲更少。
或者,一些游戏使用过程动画,从而在运行时构造动画数据。骨骼的位置和方向是根据某种算法(如inverse kinematics或ragdoll physics )计算的。当然,也可以使用其他选项,但它们必须由程序员编码。
与通过程序设置骨骼动画并使用正向运动学来确定所有模型顶点的位置不同,另一种方法是仅以程序方式单独生成每个顶点的位置。这允许不受骨骼层次约束的更复杂的动画,但当然它要复杂得多,也更难做好。
发布于 2014-03-15 13:22:37
在游戏中处理动画的不同方式?
对于字符,通常为:
甚至是全动画网格(
这些通常是由在运行时插入的关键帧动画驱动的,有时我们添加代码来驱动影响(骨骼,混合形状权重等)。从程序上讲。
对于一些刚性移动的简单对象,有时设计会对整个对象进行动画控制,而不必使其变形。有时,像灌木这样简单的东西可以通过使用类似于混合形状的东西来移动,其中你在几个极端中有一个完整的网格姿势,你可以在这些极端之间进行混合。
至于tutorials...好吧..。你是有兴趣自己为动画写数学,还是更有兴趣在游戏中加入一些动画角色,专注于游戏的玩法?
对于游戏而言,Unity是一个非常棒的游戏平台。
然而,如果你对理解动画或游戏的数学感兴趣,以下是我作为入门读物阅读的内容:
用于3d变换的
不要遗漏了基本的东西:
向量点Product
另外,就像10年前我写了一个简单的动画库,它非常简单,没有大多数更高级的概念,所以如果你想了解它的基本工作原理,这是一个不错的地方:http://animadead.sf.net
祝好运!
https://stackoverflow.com/questions/704115
复制相似问题