人物制作规范

3dsMax 环境设置

  • 使用米为系统单位. * 3dsmax 8中的z轴在引擎中是朝上的y轴
  • 人物模型在3dsmax 8中要朝着x轴的正方向

模型文件目录和命名

  • 人物模型需要存放在[ParaEngineSDK]/character的子目录中
  • 目录和文件名都必须是英文, 避免使用空格.
  • 我们一般将人物的所有文件(贴图和Max文件)都存放在同一个目录中。每个人物动作需要建立独立的Max文件。这些文件有相同的骨骼,模型以及命名前缀。
每个Max人物文件的命名是由命名前缀和参数组成的,参数部分用"(...)", 格式如下
   sObjectName (nAnimID [, fAnimSpeed] [, nonloop] [, nonloop]).max
      例如 "MyModel(0).max" ,  "MyModel(4, 1.234).max" ,  "MyModel(30, 0, nonloop).max". 

nAnimID 括号中的第一个参数 nAnimID 是一个[0,255]之间的整数, 表示引擎预先定义好的一些人物动作编号。例如0表示待机, 4表示走路, 5表示跑步. 详细的说明请见附录
fMoveSpeed 括号中的第一个参数 fMoveSpeed, 表示这个动画所代表的人物移动速度, 比如2.0米/秒. 如果没有,表示速度为0
nonloop 如果这里是nonloop, 表示这个动画是不循环的, 默认是循环。

比如一个小狗的人物,我们可以这样来建立文件目录,假设所有的贴图和Max文件都在character/my_product/dog/ 目录

   
   ..............................
   ./dog/dog(0).max
   ./dog/dog(4,2.5).max
   ./dog/dog(5,4.125).max
   ./dog/dog.tga
   ..............................

导出ParaEngine X文件

我们将0号待机动作称为标准动作, 但我们使用导出插件导出一个目录中的所有动画时, 要从0号标准动作开始。例如:

用3dsmax打开 ./dog/dog(0).max , 选择菜单file->export (ParaEngine X file), 如果您安装上述建立目录, 则不需要指定路径和名称, 比如随意输入"s", 点击确定. 如果你的模型正确。此时会弹出对话框, - 如果你只是测试当前模型,可以直接点击确定。 导出插件将在Max文件所在的目录生成文件"./dog/dog.x", - 如果你要导出最终的X文件, 选择export all character animations. 此时导出的X文件将包含的本目录中所有的Max动画。

建立模型

为了让同一个项目产品中的的动画可以尽量通用,我们建议所有的人物初始绑定姿势(Initial Bone Pose)是一样的。 我们建议使用著名的Da Vinci 达芬奇姿势作为初始绑定姿势。
  • 友情提示:请注意人物大小,朝向和姿势.

包围盒

Axis Aligned Bounding Box(aabb) 是一个能够近似代表人物的Box区域, 可以通过建立一个Box模型并将其命名为aabb指定。 这个区域被引擎用来做渲染优化,人物高度, 物理检测等用途。如果没有指定,则是网格没有绑定前的包围盒。

贴图和材质

  • 友情提示:在模型制作完成后,一般会赋予一张白色的贴图,导入到引擎中看一下效果, 检查人物大小,朝向,再进入下面的骨骼动画环节

骨骼动画

可以使用几乎任何人物骨骼动画, 例如skin, physique, biped (motion capture), bones,只要满足下面的要求.
  • 在绑定骨骼前不要放缩模型。 如果你这样做了,请重置Transform(Reset Transform).
  • 请在骨骼蒙皮前调整好骨骼的大小; 骨骼动画制作过程中要尽量避免使用骨骼放缩动画, 如果使用也只能是X,Y,Z同时放缩。
  • TIP 如果Skin蒙皮动画使用到了多个网格Mesh上, 那么只有骨骼最多的Mesh会被导出。可换装的人物往往是由许多Mesh部件组成的, 每个部件都有自己的蒙皮,此时我们需要建立一个Box, 并将场景中所有用到的骨骼蒙皮Skin到上面, 并随意赋予权重(可以使用Weight Tools快速实现)。这样做的目的是保证所有的骨骼都被导出。请注意在3dsmax 中, 每个点的蒙皮骨骼数有限制,所以在使用weight tool时, 你可能需要将骨骼分布到Box的多个定点Vertex上.
  • TIP 无论模型文件中有多少的蒙皮Skin, 必须保证他们都是在相同的初始姿势下绑定的,包括上面提到的Box。这是因为ParaEngine为每个人物只保存一个初始姿势的骨骼信息(为了节约磁盘空间和使用通用动画);然而3dsmax会为每个Skin保存各自的骨骼初始位置;那么如果多个蒙皮Skin是在不同的骨骼初始位置下添加的,引擎和3dsmax下的动画将会有很大的差异。所以如果不用CS骨骼,而用Skin, 建议单独建立一个没有动画的标准姿势文件保存这个绑定时的初始骨骼姿势,以便未来修改或添加新骨骼;如果用CS骨骼,CS内部本身会保留这个姿势,并可以随时切换,所以不必保存这个姿势。
  • 同上: 所有的点至少有一个骨骼影响(比如建一个没有贴图的Box,将所有的骨骼绑上去)
  • 在正常的Mesh中影响同一个点的骨骼不能超过4个,如果超过, 引擎只取前面4个. 这是为了性能优化
  • Biped骨骼做不了的东西,采用Box Link或Bone, 然后使用Skin。例如一些人物眼睛和嘴巴的位置动画. Note 如果要在CS骨骼之外,添加其他骨骼或Box时:注意必须在CS为标准姿势时绑定。
这样才能保证所有的人物动画的骨骼都是在同一个姿势下被绑定的。
  • TIP 我们强烈建议尽量使用CS Biped制作模型动画, ParaEngine引擎可以识别Biped的骨骼命名(英文), 因此可以使任何采用Biped的模型, 播放任何Bip或BVH等动作捕捉文件

注意事项

常用模型ID

这里指FileName(ID) .max 括号中的内容。
ID 含义Sorted ascending
153 CUSTOM0 附加待机动作,会随机插入到0号待机动作中
154 CUSTOM1 附加待机动作
155 CUSTOM2 附加待机动作
156 CUSTOM3 附加待机动作
1 DEATH 死亡
38 JUMP 跳动中,在空中的动作
39 JUMPEND 落地的动作
37 JUMPSTART 向上跳的起始动作
91 MOUNT 缺省的坐骑
5 RUN 向前跑
0 STAND 站立姿势
42 SWIM 向前游动
45 SWIMBACKWARDS 向后移动
41 SWIMIDLE 游泳(水中)的待机
43 SWIMLEFT向左游动
44 SWIMRIGHT向右游动
4 WALK 向前走
13 WALKBACKWARDS 向后走
Topic revision: r5 - 2009-07-29 - LiXizhi
 
This site is powered by the TWiki collaboration platform Powered by PerlCopyright © 2008-2024 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback