QuakeIV动画部分

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

我觉得如果你英语可以的话,可以考虑原文阅读,我自已以前英语根本一塌糊涂的!!!!
现在虽然也不强!
我认为quake4的关卡模型对于理解doom3的代码有所帮助,因此翻译

QuakeIV动画部分

动画 - 创建.md5anims和.md5meshes

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

  1. 人物创作 此步骤包括建模网格的lo-poly版本,安装网格,蒙皮 和 应用材质。
  2. (过去没有翻译好)
  3. 动画人物。
  4. 为角色的.def文件添加动画。
  5. 将网格和动画导出到游戏中。

角色创作

Quake IV引擎使用 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 / mesh
anim characters / anims / idle.ma -dest characters / anims / idle
anim characters / anims / walk.ma -dest characters / anims / walk
anim 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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值