在工作室制作一个动作类休闲游戏的过程中经过比较选择了ms3d做为动画模型.这样我们就需要把美工制作的max文件转化为ms3d格式.下面是我们采用的方法.(基本引用燕尘的ogre模型导出的文章)
(1) 使用ActorX插件,将角色动画从 3dsmax 完整导出PSA,PSK文件;
(2) 使用 MilkShape 3D ,读入上一步导出的动画,转化为ms3d。
下面介绍一下详细步骤。
0. 使用的工具:
(1) 3dsmax 4, 5, 6, 7
主要是因为下面的 Unreal ActorX 插件的强大,拥有对应 3dsmax 4, 5, 6, 7 各个版本的全部输出插件,所以在这里, 3dsmax 的版本不是问题。
我用的是 3dsmax 6
(2) Unreal ActorX for 3dsmax plugin
(2-1) 插件下载
你可以去 UND (Unreal Developer Network) 下载对应你的 3dsmax 版本的 ActorX 插件。下载页面在这里:
http://udn.epicgames.com/Two/ActorX
这里还有 for Maya 4, 4.5, 5, 6 的 ActorX 插件。总之不管你使用 3dsmax 还是 Maya ,也不管你使用的是什么版本,这个插件的强大性可以保证你能够顺利输出,同时保证输出后的模型和动画文件遵守相同的规范,确保它们可以被 MilkShape 3D 顺利读取和最终输出。
(2-2) 插件安装
解压缩 ActorX_216_Max6.zip ,把里面的 ActorX.dlu 复制到 3dsmax 的 plugins 文件夹,例如 C:\3dsmax6\plugins
(2-3) 使用方法
插件的使用方法可以简单阅读一下这一页:
http://udn.epicgames.com/Two/ActorXMaxTutorial
(3) MilkShape 3D 1.7.0 或 1.7.1
这是一个共享软件,未经注册无法输出,考虑到燕尘小筑的国际影响,坚决不在这里放出注册机或注册码,诸君可以自己寻找各种适用版本。它的官方网站在这里:
http://www.milkshape3d.com
OK. 下面开始正式输出。
1. 第一步,使用 Unreal ActorX 插件,从 3dsmax 中输出角色模型 *.PSK 和骨骼动画 *.PSA 。
(1) 使用 3dsmax 打开原始角色动画文件 *.max 。
(2) 然后,你必须遵守一些必要的约束,对这个原始角色动画文件进行一些必要的预加工:
(2-1) 一次只能输出一个角色模型。如果你希望一次输出多个物体,比方说,你希望同时输出角色本身和角色手中拿着的武器,你需要先把角色本身转化为 Editable Mesh ,然后使用 Attach 功能将武器绑定为角色的子物体 (Sub Mesh) 。
(2-2) 角色的骨骼只能有一个根节点。如果需要输出的角色骨骼拥有多个根节点,你需要为它们新建一个共同的根节点。
(2-3) 最后是最重要的一点,忽略了这一点将会导致你输出的模型的法线和纹理产生严重的异常。你必须给你的模型的材质赋予一个“合法的”名字。这一条,是 Unreal ActorX 输出插件的一个严格规定,它要求所有的材质都必须带一个形如 “_Skin00” 、"_Skin01"、 "_Skin02" 这样的后缀。
例如,如果你的模型带有两个材质,原来的名字分别是 "MBody" 和 "MFace" ,那么,你需要把这两个材质分别改名为 "MBody_Skin00" 和 "MBody_Skin01" 。
更改材质的名字可以使用 Material Editor :
(3) 然后,首先输出角色的静态模型,输出为 *.PSK 文件。这个模型文件中,包含了角色的皮肤和骨骼信息。
(3-1) 首先要打开 ActorX 工具箱。
(3-1-1) 到 3dsmax 右栏,点击小锤子图标切换到 Utilities 面板,点击 [More...] :
(3-1-2) 在弹出的 Utilities 窗口中,双击 "ActorX" :
(3-2) 在 ActorX 面板中,点击 output folder (输出文件夹) 一栏旁边的 Browse 按钮选择模型文件的保存目录,这同时也是稍后输出动作文件的保存目录;然后在 mesh file name (模型文件名) 一栏中给你要输出的模型文件取个名字。
(3-3) 然后点击 Save mesh/refpose (保存模型/参考姿势) 按钮来保存角色模型。在保存过程中会相继弹出下面两个对话框:
(3-4) 如果弹出错误信息,你需要根据错误提示做一些相应的纠正。很多情况下,可能是你的输出选项没有设置好,需要在 ActorX - Setup 面板中修改一些相应的选项:
每一个具体选项不再具体讲解,详细请参考这一页的下半部:
http://udn.epicgames.com/Two/ActorXMaxTutorial
(3-5) 输出的模型文件为 *.PSK 。
(4) 最后就是骨骼动画文件 *.PSA 的输出。这个功能相当强大。
(4-1) 首先, ActorX - Epic Games 面板的上部是模型输出模块,下部就是骨骼动画输出模块。
(4-1-1) 在 animation file name (动画文件名) 一栏中,给你要输出的动作文件起个名字;
(4-1-2) 在 animation sequence name (动画序列名) 一栏中,给你要输出的这段动作起一个动作名,例如 dance 、 walk 、 run 、 attack 等等;
(4-1-3) 在 animation range (动画范围) 一栏中,给你要输出的这段动画序列指定一个输出的帧的范围,格式是 "开始帧-结束帧";
整个设置如下图:
(4-2) 然后首先我们要做的,是动画的采集 (Digest Animation) 。点击 [Digest animation] 按钮,看状态栏的进度条走完,就完成了动画的采集,但是这时候,仅仅是完成了这个动作序列的动画的数据取样,并没有把它保存起来,所以还需要进行下一步,就是动画的管理。
(4-3) 点击 [Animation manager] 按钮,打开 AcoorX animation manager (动画管理器) 面板:
(4-3-1) 在这个面板的左栏,我们会看到已经有了一个动画序列,名字是 "dance" ,我们可以使用中间的 move [-->] 、 [<--] 按钮,把这个动画序列移动到右边的 Output Package 一栏,也就是准备输出这个动作;
(4-3-2) 然后点击右边的 [Save] 按钮,骨骼动画序列就会被保存到指定的动作文件中:
保存成功后会弹出如下对话框:
(4-4) 就这样,动作文件被保存为 *.PSA 。
(4-5) 这个Animation manager 的动画管理功能十分强大,你可以做的不仅仅是保存单个动画序列,你还可以分别采集 (Digest) 多个动画序列然后把它们保存为一个动作文件,你还可以使用 [Load] 或 [Load As..] 按钮来读取一个现有的动作文件,对其添加或删除动作序列,然后再使用 [Save] 或 [Save As..] 按钮来保存修改过的动作文件。总之,这个动画管理器很强大,多多学习。
2. 使用 MilkShape 3D ,读取上一步生成的 *.PSK 和 *.PSA 文件,然后整合输出到 OGRE 。
(1) 打开 MilkShape 3D 。
(2) 使用菜单 [File] - [Import] - [Unreal/UT PSK/PSA ..] ,首先输入模型文件 *.PSK ,然后输入动作文件 *.PSA :
(3) 你可能发现两处毛病:首先,骨骼可能错位了;其次,没有纹理贴图。这两个问题都不难解决:
(3-1) 首先你必须详细阅读 MilkShape 3D 的 Help ,学会各种简单操作;
(3-2) 纹理贴图的问题,在 Materials 面板点击这个按钮就可以选择贴图:
(3-3) 骨骼错位的问题,配合三视图,利用 Model 面板,首先使用 [Select] 按钮选择全部顶点,然后使用 [Move] 和 [Rotate] 工具来使角色的皮肤对齐角色的骨骼。
注意一!不要动骨骼;
注意二!在对齐时,必须确保下方的 Animation 栏处于未激活状态,也就是 [Anim] 按钮未被按下,一排动画播放键处于失效状态。等一切搞定后再点击 [Anim] 按钮播放动画。
(3-4) 调好的模型和骨骼:
(4) 现在就该输出了。
FILE->SAVE就可以保存为ms3d模型了.在irrlicht几乎支持所有常见的动画格式.ms3d支持的是比较好的.1.0版本有些问题,不过后来的版本更正了.希望irrlicht的明天会更好.也希望有更多的人来使用研究这个引擎.
(1) 使用ActorX插件,将角色动画从 3dsmax 完整导出PSA,PSK文件;
(2) 使用 MilkShape 3D ,读入上一步导出的动画,转化为ms3d。
下面介绍一下详细步骤。
0. 使用的工具:
(1) 3dsmax 4, 5, 6, 7
主要是因为下面的 Unreal ActorX 插件的强大,拥有对应 3dsmax 4, 5, 6, 7 各个版本的全部输出插件,所以在这里, 3dsmax 的版本不是问题。
我用的是 3dsmax 6
(2) Unreal ActorX for 3dsmax plugin
(2-1) 插件下载
你可以去 UND (Unreal Developer Network) 下载对应你的 3dsmax 版本的 ActorX 插件。下载页面在这里:
http://udn.epicgames.com/Two/ActorX
这里还有 for Maya 4, 4.5, 5, 6 的 ActorX 插件。总之不管你使用 3dsmax 还是 Maya ,也不管你使用的是什么版本,这个插件的强大性可以保证你能够顺利输出,同时保证输出后的模型和动画文件遵守相同的规范,确保它们可以被 MilkShape 3D 顺利读取和最终输出。
(2-2) 插件安装
解压缩 ActorX_216_Max6.zip ,把里面的 ActorX.dlu 复制到 3dsmax 的 plugins 文件夹,例如 C:\3dsmax6\plugins
(2-3) 使用方法
插件的使用方法可以简单阅读一下这一页:
http://udn.epicgames.com/Two/ActorXMaxTutorial
(3) MilkShape 3D 1.7.0 或 1.7.1
这是一个共享软件,未经注册无法输出,考虑到燕尘小筑的国际影响,坚决不在这里放出注册机或注册码,诸君可以自己寻找各种适用版本。它的官方网站在这里:
http://www.milkshape3d.com
OK. 下面开始正式输出。
1. 第一步,使用 Unreal ActorX 插件,从 3dsmax 中输出角色模型 *.PSK 和骨骼动画 *.PSA 。
(1) 使用 3dsmax 打开原始角色动画文件 *.max 。
(2) 然后,你必须遵守一些必要的约束,对这个原始角色动画文件进行一些必要的预加工:
(2-1) 一次只能输出一个角色模型。如果你希望一次输出多个物体,比方说,你希望同时输出角色本身和角色手中拿着的武器,你需要先把角色本身转化为 Editable Mesh ,然后使用 Attach 功能将武器绑定为角色的子物体 (Sub Mesh) 。
(2-2) 角色的骨骼只能有一个根节点。如果需要输出的角色骨骼拥有多个根节点,你需要为它们新建一个共同的根节点。
(2-3) 最后是最重要的一点,忽略了这一点将会导致你输出的模型的法线和纹理产生严重的异常。你必须给你的模型的材质赋予一个“合法的”名字。这一条,是 Unreal ActorX 输出插件的一个严格规定,它要求所有的材质都必须带一个形如 “_Skin00” 、"_Skin01"、 "_Skin02" 这样的后缀。
例如,如果你的模型带有两个材质,原来的名字分别是 "MBody" 和 "MFace" ,那么,你需要把这两个材质分别改名为 "MBody_Skin00" 和 "MBody_Skin01" 。
更改材质的名字可以使用 Material Editor :
(3) 然后,首先输出角色的静态模型,输出为 *.PSK 文件。这个模型文件中,包含了角色的皮肤和骨骼信息。
(3-1) 首先要打开 ActorX 工具箱。
(3-1-1) 到 3dsmax 右栏,点击小锤子图标切换到 Utilities 面板,点击 [More...] :
(3-1-2) 在弹出的 Utilities 窗口中,双击 "ActorX" :
(3-2) 在 ActorX 面板中,点击 output folder (输出文件夹) 一栏旁边的 Browse 按钮选择模型文件的保存目录,这同时也是稍后输出动作文件的保存目录;然后在 mesh file name (模型文件名) 一栏中给你要输出的模型文件取个名字。
(3-3) 然后点击 Save mesh/refpose (保存模型/参考姿势) 按钮来保存角色模型。在保存过程中会相继弹出下面两个对话框:
(3-4) 如果弹出错误信息,你需要根据错误提示做一些相应的纠正。很多情况下,可能是你的输出选项没有设置好,需要在 ActorX - Setup 面板中修改一些相应的选项:
每一个具体选项不再具体讲解,详细请参考这一页的下半部:
http://udn.epicgames.com/Two/ActorXMaxTutorial
(3-5) 输出的模型文件为 *.PSK 。
(4) 最后就是骨骼动画文件 *.PSA 的输出。这个功能相当强大。
(4-1) 首先, ActorX - Epic Games 面板的上部是模型输出模块,下部就是骨骼动画输出模块。
(4-1-1) 在 animation file name (动画文件名) 一栏中,给你要输出的动作文件起个名字;
(4-1-2) 在 animation sequence name (动画序列名) 一栏中,给你要输出的这段动作起一个动作名,例如 dance 、 walk 、 run 、 attack 等等;
(4-1-3) 在 animation range (动画范围) 一栏中,给你要输出的这段动画序列指定一个输出的帧的范围,格式是 "开始帧-结束帧";
整个设置如下图:
(4-2) 然后首先我们要做的,是动画的采集 (Digest Animation) 。点击 [Digest animation] 按钮,看状态栏的进度条走完,就完成了动画的采集,但是这时候,仅仅是完成了这个动作序列的动画的数据取样,并没有把它保存起来,所以还需要进行下一步,就是动画的管理。
(4-3) 点击 [Animation manager] 按钮,打开 AcoorX animation manager (动画管理器) 面板:
(4-3-1) 在这个面板的左栏,我们会看到已经有了一个动画序列,名字是 "dance" ,我们可以使用中间的 move [-->] 、 [<--] 按钮,把这个动画序列移动到右边的 Output Package 一栏,也就是准备输出这个动作;
(4-3-2) 然后点击右边的 [Save] 按钮,骨骼动画序列就会被保存到指定的动作文件中:
保存成功后会弹出如下对话框:
(4-4) 就这样,动作文件被保存为 *.PSA 。
(4-5) 这个Animation manager 的动画管理功能十分强大,你可以做的不仅仅是保存单个动画序列,你还可以分别采集 (Digest) 多个动画序列然后把它们保存为一个动作文件,你还可以使用 [Load] 或 [Load As..] 按钮来读取一个现有的动作文件,对其添加或删除动作序列,然后再使用 [Save] 或 [Save As..] 按钮来保存修改过的动作文件。总之,这个动画管理器很强大,多多学习。
2. 使用 MilkShape 3D ,读取上一步生成的 *.PSK 和 *.PSA 文件,然后整合输出到 OGRE 。
(1) 打开 MilkShape 3D 。
(2) 使用菜单 [File] - [Import] - [Unreal/UT PSK/PSA ..] ,首先输入模型文件 *.PSK ,然后输入动作文件 *.PSA :
(3) 你可能发现两处毛病:首先,骨骼可能错位了;其次,没有纹理贴图。这两个问题都不难解决:
(3-1) 首先你必须详细阅读 MilkShape 3D 的 Help ,学会各种简单操作;
(3-2) 纹理贴图的问题,在 Materials 面板点击这个按钮就可以选择贴图:
(3-3) 骨骼错位的问题,配合三视图,利用 Model 面板,首先使用 [Select] 按钮选择全部顶点,然后使用 [Move] 和 [Rotate] 工具来使角色的皮肤对齐角色的骨骼。
注意一!不要动骨骼;
注意二!在对齐时,必须确保下方的 Animation 栏处于未激活状态,也就是 [Anim] 按钮未被按下,一排动画播放键处于失效状态。等一切搞定后再点击 [Anim] 按钮播放动画。
(3-4) 调好的模型和骨骼:
(4) 现在就该输出了。
FILE->SAVE就可以保存为ms3d模型了.在irrlicht几乎支持所有常见的动画格式.ms3d支持的是比较好的.1.0版本有些问题,不过后来的版本更正了.希望irrlicht的明天会更好.也希望有更多的人来使用研究这个引擎.