Quake4动画部分

来源:互联网 发布:mac应用程序删不掉 编辑:程序博客网 时间:2024/06/07 11:18

原文地址 https://www.iddevnet.com/quake4/Animations

需要翻墙以后人机验证才能进入该英文网站阅读,强烈建议进入原文阅读,我认为quake4的关卡模型对于理解doom3的代码有所帮助,因此翻译

Quake4动画部分

动画 - 创建.md5anims和.md5meshes

让动画人物进入游戏有四个步骤:

  1. 人物创作 此步骤包括建模网格的lo-poly版本,安装网格,剥皮网格和应用材料。
  2. 动画人物。
  3. 为角色的.def文件添加动画。
  4. 将网格和动画导出到游戏中。

角色创作

Quake 4引擎使用Maya将网格和动画转换为可用的.md5。创建角色的指南:

  • 需要使用三角形多边形和平面的Lo-poly网格是有效和清洁的。
  • 网格必须有UV。
  • 在将网格绑定到钻机之前冻结转换并删除网格上的历史记录。
  • 不超过四个关节可能会影响任何一个顶点。
  • 网格必须使用平滑绑定选项绑定到钻机上。
  • 在绑定到网格之前,关节不应在其上具有缩放偏移。
  • 角色必须有起源。引擎使用原始信息放置和移动游戏中的角色。对于AI目的,原点应限制在根关节或重心的Z平移。对于多人游戏,原点应保持静止。原点在Y中的翻译应为零。(Y在玛雅。)
  • 引擎使用硬件剥皮来创建网格。因此,创建网格的文件应尽可能地具有尽可能中立的角色。
  • 创建并使用参考文件。对主机或网格的任何更改只能在该文件中进行。在Maya中创建动画文件时,使用唯一标识字符的前缀引用引用文件。
  • 使用Maya中的Hypershade工具应用着色器。创建一个材质,点击颜色通道旁边的框,选择“文件”。将.mtr文件中显示的着色器名称输入到“图像名称”框中。将着色器应用于网格。
  • 将文件保存为ascii(.ma)而不是二进制(.mb)是个好主意。这样,如果需要,可以通过文本编辑器编辑文件。

动画人物

在玛雅动画的角色正常。对于那些刚接触动画的人而言, 理查德·威廉姆斯的“动画师生存套件”是一个很好的开始。互联网上还有数以千计的Maya特定动画技术教程(http://www.highend3d.com)。

AI和NPC使用的动画可以在空间中移动,只要原点被适当地限制在角色上。多人动画在躯干和腿之间分开,因此应在其上进行动画化。保存动画时,请确保时间滑块包含预期的帧范围。将使用该范围导出动画。否则,可以在.def文件的导出块中指定一个范围(见下文)。

3.将动画添加到角色的.def文件中

字符的.def文件包含定义字符行为的变量。字符可用的动画列在.def文件中,Maya文件根据该信息以.md5的形式导出到游戏中。动画文件将添加到导出块中,然后在模型定义块中进一步定义。游戏编辑器的可用动画列表使用模型定义的信息进行更新。

3.1出口块

导出块包括:1.)选项行,2.)用于创建网格的Maya文件,3.)一个或多个Maya动画文件。对于字符.def文件,导出块应包含run,walk和idle动画。

导出new_character{options -prefix nc_ -scale .3937 -align ALL-keep muzzle_flash网格字符/ anims / mesh.ma -dest字符/ anims / meshanim characters / anims / idle.ma -dest characters / anims / idleanim characters / anims / walk.ma -dest characters / anims / walkanim characters / anims / run.ma -dest characters / anims / run}

3.2选项行

上述示例包含导出.md5的最常用的选项:

  • 前缀:在引用主文件时,Maya会要求添加到联名的前缀。在此处指定前缀。

  • 缩放:您可以在导出时调整角色的比例。

  • 对齐:这将使指定的Maya节点与其所有子节点对齐,以面向正确的方向。

  • 保持:发动机将修剪附着在皮肤上的皮肤重量很少或没有的关节。如果这些关节需要保留在.md5中,则必须在这里指定。

一些可能有用的其他命令:

“-rename”用法:-rename [joint name] [new name]““-parent”用法:-parent [joint name] [new parent]““-dest”用法:-dest [filename]““-range”用法:-range [start frame] [end frame]““-cycleStart”用法:-cycleStart [循环第一帧]““-rotate”用法:-rotate [yaw]““-nomesh”“-clearorigin”“-clearoriginaxis”“-ignorescale”“-xyzprecision”用法:-xyzprecision [precision]““-quatprecision”用法:-quatprecision [precision]““-jointthreshold”用法:-jointthreshold [最小关节重量]““-skipmesh”用法:-skipmesh [要跳过的网格名称]““-keepmesh”用法:-keepmesh [要保留的网格名称]““-keepmeshprefix”用法:-keepmeshprefix [要保留的网格的前缀]““-jointgroup”用法:-jointgroup [group name] [joint1] [joint2] ... [joint n]“

3.3模型定义块

模型定义块:1.)定义模型的名称,它将出现在游戏编辑器中,2.)定义.md5动画的名称,因为它们将出现在游戏编辑器和Modview中,3.)定义字符的通道,4.)允许在动画的特定帧上播放声音和效果。

模型model_new_character{        mesh -dest characters / anims / mesh.md5mesh                通道躯干(*腰)        通道腿(*臀部起点 -  *腰围)        anim idle -dest characters / anims / idle.md5anim        anim walk -est characters / anims / walk.md5anim        {                框架7脚步                框架14脚步        }        anim run -dest characters / anims / run.md5anim}

请参阅SDK附带的现有.def文件以获得其他示例。多人模型和动画通过player.def和player_meshes.def进行定义和导出。海洋AI模型和动画通过ai / char_marine.def导出。

4.将网格和动画导出到游戏中

导出网格和动画将Maya文件转换为游戏使用的md5,如.def文件中所定义和列出。首先需要定义Maya所在的位置,以便引擎可以找到它。按着这些次序:

同时按下Windows键和暂停/中断键。单击高级选项卡。点击“环境变量”。单击“新建”并创建一个新的变量名称:MAYA_LOCATION变量值应该是Maya目录的路径,即 C:\ Program Files \ Alias \ Maya6.0 \

准备导出时,访问控制台并键入:

exportmodels ai / new_character.def

确保在'def'目录下面包含任何子目录。此命令将导出自上次导出该.def文件的模型以来已更新的导出块中的任何动画或网格。尚未更新的动画和网格将被忽略。使用命令'reexportmodels'将导出def文件中的每个动画和网格,无论它们是否被更新。

除非在导出块中特别定义,否则md5anim的帧范围将从源文件的时间滑块中拉出。然而,引擎假定每个动画都以帧1开始,而不管时间滑块范围在何处。如果时间滑块从帧10开始并在帧20结束,则.md5anim将从帧1开始,并以帧11结束。因此,将所有源动画从帧1开始是一个好主意。

要定义导出块中的范围:

anim walk.ma -range 10 20  - 散步

如果网格或动画等有任何错误,引擎将列出错误,导出将失败。一个常见的错误是在.def文件中出现语法错

误,这将导致导出错误,或导致成功导出,其中字符实际上不会出现在游戏中(一个简单的框显示在其位置)。如果发生这种情况,请冲洗.def文件以获取任何拼写错误,无效路径,打开的大括号等。否则,如果导出成功,新的.md5将可用于游戏编辑器和Modview。

0 0