UDN
Search public documentation:

ActorXMaxTutorialCH
English Translation
日本語訳
한국어

Interested in the Unreal Engine?
Visit the Unreal Technology site.

Looking for jobs and company info?
Check out the Epic games site.

Questions about support via UDN?
Contact the UDN Staff

如何使用ActorX及Max导出动画

文档摘要:使用3DS Max 的ActorX导出动画的操作指南。

文档修改日志:最后由Erik de Neve (Epic)利用MaxScript界面注释及示例进行更新。

本文档假设您已经创建角色并为其装备就绪,仅就使用ActorX导出工具将模型及动画从Max导入Unreal的方法提供指南。同时,假定您已经阅读了UDN站点上的ActorX文档并且从概念上理解.PSK 文件与.PSA 文件的关系。

安装插件

  1. 下载Max的ActorX插件并将其复制到您的插件目录中。
  2. 运行Max,ActorX应自动加载。您可以在utilities(工具)标签下找到它。(如为首次使用,在您点击 more (更多)按钮时会找到它)

utilities.jpg

如果激活插件引起错误信息——最常见的是“failed to initialize(初始化失败)”,确认您的系统用最新的Windows系统更新,并下载安装最新版的Microsoft .Net framework更新,可以通过http://www.microsoft.com/downloads(在download product/technology box选择.net 并按下[go])获取。如果再次失败,从ActorX页面获得msvcr71.dll并手动将其放置于您的windows\system32文件夹或者ActorX插件的插件文件夹中。

场景准备时的注意事项

始终确保场景中的一切均属于一个单一层次。删除所有的占位符对象以及任何不属于网格物体部分的其它帮助符。

3DS Max对于骨骼中骨头的组成元素具有很大的灵活性——在缺省情况下,所有常规骨头以及所有连接几何形、虚拟物体甚至点帮助符(ActorX插件版本2.14以上)的适当父—子关系将被导出工具注释为骨骼骨头,只要它们组成一个单一的多级结构。

注意轴与方向:从Max导出时,将触发网格物体的Y坐标符号将反转以遵循Unreal的旋向性(坐标轴的相对方向)因此在Max中,如果Z轴是向上的,一个角色面向X轴远方且Y轴指向屏幕内远离浏览者,应该变为一个面向X轴远方,Z轴向上且Y轴指向浏览者的网格物体——如果没有提供其它应用于编辑器的网格物体属性如旋转或者缩小。

在一个场景中可以使用多个材质。这些材质可能成为网格物体的多个材质槽条目(slot),缺省情况下顺序是随机的,除非您通过添加“skinXX”标签到材质名称对其进行强制——例如,如果材质名称为Body(体)和Head(头),将它们重新命名为Body_Skin00和Head_Skin01,它将告诉导出工具在创建.PSK文件时遵守该顺序。您可以自由选择单个和“multi-sub(多个子)”材质。使用后者时,只要将所需的蒙皮顺序标签置于每个子材质上。这不仅影响骨骼网格物体的存储槽顺序,还可用于影响渲染顺序。

导出骨骼及网格物体

  1. 加载场景,其中包含你希望导出的角色。
  2. 通过进入工具(utilities)标签(见上文)并打开ActorX,弹出ActorX对话框。
  3. 如下填写各个字段:
    • Output folder(输出文件夹): 输入您希望保存.PSK文件的文件夹名称。我们推荐在您的角色文件夹下放置一个“Unreal Files”文件夹。此处浏览按钮非常有用。
    • Mesh file name(网格物体文件名): 输入.PSK文件的名称。我们推荐使用您的角色名称。
  4. 点击“Save mesh/refpose”按钮。您可以在动画的任意帧上进行该操作。建议将放松的、鹰式展翅姿态设为模型的基准姿势,以便于使用。

PSK name me

您保存mesh/refpose后,如果运行正常,将弹出几个窗口。

2 dialog boxes

导出动画

动画的导出分为两步。首先,加载包含动画的场景,并“采集”一个动画将其读入内存。根据您想要导出动画的数量重复多次。第二,将这些新动画添加到一个PSA文件将其保存并返回。

采集动画

  1. 加载包含您想要导出的动画的文件。
  2. 通过打开工具标签并打开ActorX选项,弹出ActorX dialog对话框 。(您可能还要点击“more(更多)”按钮,如上文所述)
  3. 如下填写各个字段:
    • Output folder(输出文件夹): 与上述skeleton/mesh相同。
    • Animation file name(动画文件名): 我们推荐使用与网格物体文件名相同(它们后缀名不同以有助于您区分)的名称。如果您想要将此动画添加到现有的.PSA 文件,输入现有.PSA 文件名。
    • Animation sequence name(动画顺序名称): 输入您希望动画在.PSA 文件中所具有的名称。
    • Animation range(动画范围): 指定当前场景中定义该动画的帧。(格式为“4-45”;数字,分号,数字)

PSA name me

  1. 确认范围滚动条及时间滚动条在第一帧时显示为0。(注意:这是一个我们用于避免ActorX周期性崩溃bug发作的迷信做法。你可以忽略该步骤,但后果请自负)
  2. 点击 Digest Animation (采集动画)。此操作完成后 不会 出现窗口,告诉您操作成功/失败。
  3. 根据您想要导出动画的数量,重复步骤1-5。我们推荐不要一次尝试过多操作,防止ActorX崩溃,造成工作要从头再来一遍。

将动画添加到一个.PSA 文件

一旦您采集了一个或多个动画,则您可以将它们添加到一个.PSA文件中。

anim-manager.gif

  1. 如果尚未显示,则弹出ActorX对话框。
  2. 点击 animation manager 按钮显示动画管理器。
  3. 如果您想将动画添加到现有的.PSA文件中,则点击 Load 加载该.PSA文件。(前提是您已按前章步骤3b中提供了动画文件的名称。如果没有,则使用 Load As ......按钮)
  4. animations 列表左侧您应该看到刚刚采集的动画。在右侧,您将看到任何已经存在于.PSA 文件中的动画。如果您正在创建一个新的.PSA 文件,此处将为空。
  5. 选择您的新动画并点击 --> ,将您的动画添加到输出包中。
  6. 点击 Save 保存该.PSA文件并返回。(假设之前您已经提供了该动画文件的名称)

psa saved

批处理

随着每个角色动画列表的增长,创建.PSA文件的过程开始要耗费相当长的时间。为了简化这一过程您可以用ActorX在某一步骤的指定文件夹中处理所有动画。

准备动画

批处理之前您需要对动画进行格式化。

  • 它们必须是.max文件格式
  • 所有要经共同处理的动画必须位于同一目录下
  • 必须正确设置每个文件的开始和结束时间。在3D-Studio中点击Time_Configuration time configuration按钮将此正确设置。
  • 在引擎中,文件名必须和所需动画名称一致。

导出动画

对动画进行正确设置后应按照以下步骤将其全部导出到一个.PSA文件。

  1. 在ActorX的 Output Folder (输出文件夹)字段中填入想要放置.PSA文件的位置
  2. Animation File Name (动画文件名)字段填入希望的.PSA文件的名称。
  3. 在此工具的 Actor X – Setup 部分,查看删除不使用的虚拟物体( cull unused dummies )。
  4. 仍然在 Actor X - Setup 部分点击 Process all Animations (处理所有动画)。ActorX将提示您所有的动画所在的文件夹。选择该文件夹并点击 Okay
  5. 既然动画已经被导入,点击 Animation Manager ,打开动画管理器窗口(参见上文)。左侧列表是您已采集的所有动画。右侧一栏是您在 Animation File Name (动画文件名)字段选择的.PSA文件中存在的动画。
  6. 选择您想从左侧一栏中导出的动画并点击 Copy(复制) ==> 按钮,将其复制到.PSA动画所在区域。
  7. 点击 Save(保存) 。.PSA文件将被创建。

其它的ActorX选项

在“ActorX – Setup”部分,您或许已经注意到在动画管理器按钮下有许多选项。我们将按顺序做出说明。

持久性设置及路径

这两个选项具备自解释;当您选中这两个选项时,即可保持您在上个字段中的设置,从而避免了以后导出网格物体或动画时重新输入设置。

蒙皮导出

这些选项将决定需要满足的条件来决定导出的几何形/动画。

所有蒙皮类型(All Skin-Type)

如果该选项被选中,文件中每个有蒙皮/体格修改器的网格物体都将被导出。如果在场景中有 任何 变形蒙皮,则 必须 选中该选项。如果未被选中,所有网格物体都被假设为刚性的,每个都分别由一个骨头控制。

所有贴图的蒙皮(All Textured)

所有带贴图的几何形都将被导出。

所有选中的蒙皮(All Selected)

所有当前被选中的几何形将被导出。相反复选框将导出任何 被选中的几何形。

强制基准姿势(Force Reference Pose) T=0

该选项将强制使用T=0的姿势为参考姿势。该选项仅在这样的情况下有用:您正将您的PSK从一个有其它帧动画的文件中导出,且滚动条的第一帧不是动画中编号为0的帧。缺省情况下,引擎将使用活动滚动条范围的第一帧导出PSK文件,这就是为何我们推荐将第0帧作为活动范围的一部分。

总体来说,您应将PSK从一个已知的、摆好姿势的静态参考姿势中导出,从而避免导出一个随机姿势作为您的参考姿势。

切线UV 分割(Tangent UV Splits)

保持该选项关闭。否则,忽略该选项。

烘焙平滑组(smooth group)

在UnrealEd中处理骨骼模型的平滑有点奇怪。如果您试图将平滑组置于一个角色模型上,导出工具将沿着组的边界破坏您的模型,并使得该部分已成为自己独立的部分。此过程包括沿着平滑的边界分离顶点。然后它将试图自己平滑各个独立的部分,尽管它仍然表现为一个更大的“连接的”网格物体的一部分。

换句话说,为了达到平滑的效果,您需要增加顶点的数量。您使用的平滑组越多,您需要的顶点就越多。因此在骨骼模型中不鼓励使用平滑组;推荐您不选中该选项。

骨头

删除不使用的虚拟物体 (dummy)

如果您在骨头链末端使用虚拟物体,该选项将删除它们并保存在内存中。

删除根虚拟物体

该选项不可用。

动作

固定根节点的净位移

如果您的模型活动时根骨头也在移动,该选项使你能够禁止该动作。这意味着:如果您在Max中创建了一个向前移动的跑动的动作循环,该选项将使其在UnrealEd中好似在正常跑动。

硬盘锁(Hard Lock)

忽略该选项

日志文件/无日志文件

这些是很清楚明白的。这些文件便于人们检查是否有些东西没有正确导出。您可以在此找到各种信息;有层次信息的骨头列表,顶点/面/帧号及材质#存储槽等。除证实骨骼及蒙皮数据均按期望方式被导出外,您或许还想想知道骨骼的内部名称等,以便于使用骨骼控制器或者附件。

脚本模板

过去UnrealScript在向Unreal导入模型和动画时是必须的。值得庆幸的是,现在并非如此。除非您知道使用这些字段的用途,否则忽略它们。

使用MaxScript批量导出

带有插件的2.18版本,所有主要的导出命令及开关都被表现为MaxScript命令。您可以使用脚本自动操作重复性的任务,比如从几个文件保存大量的动画序列。

在本MaxScript示例文件中详细注释了该命令。

为了不间断地进行批处理,使用MaxScript的导出工具命令将限制所有常见的ActorX确认对话框及弹出框,除了中断脚本的错误提示命令。

故障诊断

“节点ID不匹配(Unmatched Node ID)”警告

一个经常遇到的问题是“节点ID不匹配(Unmatched Node ID)”警告。这意味着场景中存在导出工具无法将其与骨头相关联的网格物体。例如一片没有被正确链接到主要层次的网格物体,但是其上有一个体格(Physique)或者蒙皮(Skin)修改器。正如在上述设置注意事项中所列的内容,场景中的一切必须属于一个唯一的、树状层次结构,在此所有骨头和所有物体最终表现为骨头,向下链接到骨骼的根骨头/根物体。确认任何biped、或虚拟的起辅助作用的几何形上都没有不小心附加的贴图,并且如果您不需要它(当您的所有蒙皮都是完全的Physique或Max蒙皮),在ActorX设置面板中不选择“Skin Export”下的“all textured”选项。

“无效体格骨骼影响数量(Invalid number of physique bone influences)”警告

通常这说明一个网格顶点有一个或多个骨头对其产产生影响,但它们有无效的——可能为零——的权重。尝试手动调节(体格或者蒙皮修改器)权重;如果不可以,重新设置网格物体的蒙皮。