zoukankan      html  css  js  c++  java
  • 3dmax文件导出到ms3d文件.

    在工作室制作一个动作类休闲游戏的过程中经过比较选择了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 :

    attachments/month_0411/jg9m_snap0138.jpg



    (3) 然后,首先输出角色的静态模型,输出为 *.PSK 文件。这个模型文件中,包含了角色的皮肤和骨骼信息。

    (3-1) 首先要打开 ActorX 工具箱。
    (3-1-1) 到 3dsmax 右栏,点击小锤子图标切换到 Utilities 面板,点击 [More...] :

    attachments/month_0411/1xp4_snap0139.jpg


    (3-1-2) 在弹出的 Utilities 窗口中,双击 "ActorX" :

    attachments/month_0411/52t9_snap0140.jpg


    (3-2) 在 ActorX 面板中,点击 output folder (输出文件夹) 一栏旁边的 Browse 按钮选择模型文件的保存目录,这同时也是稍后输出动作文件的保存目录;然后在 mesh file name (模型文件名) 一栏中给你要输出的模型文件取个名字。

    attachments/month_0411/41s8_snap0143.jpg


    (3-3) 然后点击 Save mesh/refpose (保存模型/参考姿势) 按钮来保存角色模型。在保存过程中会相继弹出下面两个对话框:

    attachments/month_0411/liao_snap0146.jpg


    attachments/month_0411/63u9_snap0147.jpg


    (3-4) 如果弹出错误信息,你需要根据错误提示做一些相应的纠正。很多情况下,可能是你的输出选项没有设置好,需要在 ActorX - Setup 面板中修改一些相应的选项:

    attachments/month_0411/fc5i_snap0148.jpg


    每一个具体选项不再具体讲解,详细请参考这一页的下半部:
    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 (动画范围) 一栏中,给你要输出的这段动画序列指定一个输出的帧的范围,格式是 "开始帧-结束帧";
    整个设置如下图:

    attachments/month_0411/olds_snap0151.jpg


    (4-2) 然后首先我们要做的,是动画的采集 (Digest Animation) 。点击 [Digest animation] 按钮,看状态栏的进度条走完,就完成了动画的采集,但是这时候,仅仅是完成了这个动作序列的动画的数据取样,并没有把它保存起来,所以还需要进行下一步,就是动画的管理。

    (4-3) 点击 [Animation manager] 按钮,打开 AcoorX animation manager (动画管理器) 面板:

    attachments/month_0411/52u9_snap0152.jpg


    (4-3-1) 在这个面板的左栏,我们会看到已经有了一个动画序列,名字是 "dance" ,我们可以使用中间的 move [-->] 、 [<--] 按钮,把这个动画序列移动到右边的 Output Package 一栏,也就是准备输出这个动作;

    (4-3-2) 然后点击右边的 [Save] 按钮,骨骼动画序列就会被保存到指定的动作文件中:

    attachments/month_0411/rogv_snap0153.jpg


    保存成功后会弹出如下对话框:

    attachments/month_0411/52t8_snap0154.jpg


    (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

    attachments/month_0411/da3h_snap0158.jpg


    (3) 你可能发现两处毛病:首先,骨骼可能错位了;其次,没有纹理贴图。这两个问题都不难解决:
    (3-1) 首先你必须详细阅读 MilkShape 3D 的 Help ,学会各种简单操作;
    (3-2) 纹理贴图的问题,在 Materials 面板点击这个按钮就可以选择贴图:

    attachments/month_0411/b91f_snap0159.jpg


    (3-3) 骨骼错位的问题,配合三视图,利用 Model 面板,首先使用 [Select] 按钮选择全部顶点,然后使用 [Move] 和 [Rotate] 工具来使角色的皮肤对齐角色的骨骼。
    注意一!不要动骨骼;
    注意二!在对齐时,必须确保下方的 Animation 栏处于未激活状态,也就是 [Anim] 按钮未被按下,一排动画播放键处于失效状态。
    等一切搞定后再点击 [Anim] 按钮播放动画。

    attachments/month_0411/fc5i_snap0161.jpg


    (3-4) 调好的模型和骨骼:

    attachments/month_0411/52t9_snap0165.jpg



    (4) 现在就该输出了。

    FILE->SAVE就可以保存为ms3d模型了.在irrlicht几乎支持所有常见的动画格式.ms3d支持的是比较好的.1.0版本有些问题,不过后来的版本更正了.希望irrlicht的明天会更好.也希望有更多的人来使用研究这个引擎.





  • 相关阅读:
    如何在word中添加视频
    在vc中使用MapX时,如何在视图类中响应鼠标消息
    在vc6中检查一个目录是否存在,如果不存在就创建该目录
    Google推出中文图书搜索简体中文试用版(zz)
    用敏捷软件方法开发界面(zz)
    选择文件对话框的封装
    在vc6中如何使某个状态栏的按钮使能和失效
    MapX对图层的引用和创建实例
    有尊严的生命(zz)
    三十岁的男人(zz)
  • 原文地址:https://www.cnblogs.com/flysnow/p/768235.html
Copyright © 2011-2022 走看看