使用虚幻引擎3制作过场动画
概述
本文档对使用虚幻引擎内容管道创建过场动画的步骤进行了介绍。
实时 vs. 预渲染
创建 Matinee 的目的是在游戏过程中创建实时过场动画。实时过场动画使用了加载的游戏资源并实时控制它们来制作场景。在制作实时过场动画的时候,必须平衡需求使这个范围不会超出引擎提供的资源。Matinee 还可以用于制作预渲染过场动画,所以问题关键在于确定哪种方法对于您的情况最适用,预渲染场景还是实时场景。
对于预渲染过场动画,场景可能需要分辨率较高的角色、效果、光照和装置设计。尤其,必须要记住供引擎使用的资源的预算约束条件。除了引擎中提供的工具之外,预渲染过场动画需要视频编辑软件,并且在某些情况还需要其他录制设备。.
对创建场景的通道而言,进行这两种方法的过程是相同的;但是最终资源约束条件将会控制预渲染或实时场景的需求。
虚幻通道
注意虚幻中的过场动画通道,一个场景一个场景地进行操作可能会更容易,更确切地说,就是每个文件都将是一个其中有多个相机镜头的场景,而不是一个文件中只对应一个相机镜头。可能会有一些需要一个这样做的情况;尤其是在基于对话的场景中,一个文件就足够了。
在虚幻中,尤其是在创建实时过场动画的时候,通道会围绕在场景周围。所以,对于一个典型 20 个镜头的预渲染场景,您将需要在一个 3D 工具套装(比如,Maya) 中为每个镜头(或者每个镜头的虚幻项目)制作一个场景。在虚幻中,您选取一个完整的场景,然后在 Matinee 中使用过场动画工具进行相机剪辑诸如此类的工作。
小结: 在虚幻的实时过场动画中,在 Actor 实时运动的过程中您可以剪辑相机镜头,与此同时在幕后进行某些特定处理(相机等等)。
其他考虑事项
在虚幻中构建过场动画场景的时候要注意其他一些事项:
- Scene Complexity(场景复杂度) 。这个场景需要的所有必需属性和网格物体的影响因数。
- Environment(环境) 。您是要将全部镜头放入一个关卡场景中,还是需要更多场景?
- Number of characters(角色数量) 。如果您有 5-8 个角色,那么可以实时制作这个场景;如果是成群的角色,那么应该使用预渲染。
- Interaction with the environment(与环境交互) 。可以实时进行一些操作;但是绝大多数情况,可能需要仿造大量情景。如果这个场景必须要更加生动逼真,那么可以选择使用预渲染场景。
- Length of scene(场景的长度) 。
- 其他:
- Lighting Complexity(光照复杂度) 。
- Effects(特效) 。粒子 - 大小及详细情况。
- Character complexity(角色复杂度) 。从细节的角度上看,细节越多,需要的资源越多。
需要实时地妥善处理资源,否则,请考虑使用预渲染。
准备工作
最初通常使用提纲、脚本和情节串连图板设计场景。
通过以下几个方面可以确定内容需求:
- 角色
- 考虑重复使用以避免白白创建了那些可能永远不会在游戏中出现的场景;它有多重要?它是否值得创建?
- 动画
- 不属于一般游戏性设置的内容
- 动作捕获数据以及其他关键帧数据
- 获取您需要定义的选项避免重新拍摄,同时避免出现任何可能永远用不上的多余数据
- 音频
- 获取对话: 声音导航;尽量早地显示编辑内容
- 检查脚本;"广播剧”- 在动作捕获的过程中: 有基于动作声音脚本读取的角色动作
- 还会考虑“性能捕获”(vs. 广播剧): 在一个镜头中捕获所有内容(声音脚本等等)
- 特效
- 属性
通过这些,可以在全部制作过程完成之前尽早做出决定。在这个时候出现的任何错误消耗的性能会少得多。这样做的目标是避免多余的声音导航或动作捕获数据,与此同时还可以防止需要重新捕获或重新拍摄。
以 T 字形来回移动骨架网格物体可以在引擎中进行预可视化(动画分镜头等等),与对话同步。这样做可以帮助感知场景的状况。
资源
使用动画中的资源和音频来构建过场动画场景,同时为这个场景系列构建关卡、添加网格物体、特效和光照。
引擎工具
主要使用虚幻编辑器工具套装中的以下工具:
页面
场景布局和调色
调色板是包含那些需要进行设定的预先生成 Matinee 数据的文本文件。基本上,Kismet 中的每个对象都只是个代码,而且这个代码可以作为文本进行复制。这样,在构建使用相同设置的场景时可以节省时间。
创建一个调色板:
- 点击处于活动状态的对象,Ctrl-C 复制到粘贴板
- 在空白的文本文件中粘贴为文本(请参阅
Begin Object
)
- 为所有这些创建文本文档
- 将您需要的内容复制为文本,然后在 Kismet 中使用 Paste here(粘贴在这里)...
示例:
- 创建一个新的 Matine,它将会是一个空白的场景。
- 将长度设置为 1:00 或者是任何您希望您的调色板的站立长度。
- 添加摄影师轨迹、一些相机镜头轨迹、角色骨架网格物体轨迹、属性组、粒子特效轨迹、其中包含空白声音文件的空白声音组、光照等等。您可以将这些组安排放入到组织结构的子文件夹中。
- 数据在是适当的位置被保存为一个 调色板 。
- 复制文本数据,放入到 Kismet 中,而基础场景配置在适当的位置。
- 使用这个流程设置您的过场动画场景要与每次从头开始构建它相比可以节省大量时间。
下面是一个 Matinee 场景调色板的示例: Big_Matinee_Pallette.txt 复制这个文件中的所有代码,然后将其粘贴到 Kismet 中。这时候应该会出现一个新的子项目。打开。您将会发现一个新的 Matinee,其中添加了一些对过场动画 Kismet 功能的支持。打开这个 Matinee 对象,然后可以看到已经为它创建的组和轨迹。进行选取并使用它! 它将会节省一些准备时间!
它还可以用于生成 Character Pallette(角色调色板)。针对给定的一组场景,通常场景中会有四个角色,那么您可以设置一个调色板简化为每个场景设置它们的流程。在空白 Matinee 中,您可以创建它们,然后按照您喜欢的方式将它们排成一行。确保设置了所有标志 – 确保启用标志进行 SkeletalMesh 更新,在没有渲染的时候确保描画了所有没有在相机上的动画,要插入的运动的物理可以确保运动、分配的物理资源等等 – 确保为角色的基础规则配置了初始设置。还可以装配枪支,这样以后就不需要装配它们了。只要设置完成后,您就可以同时选择所有角色,复制粘贴图到文本中,保存为一个角色调色板
只要引进了 Matinee 以及角色,选择这些角色;然后在 Kismet 中,右击创建变量。为角色创建所有变量设定,这些设定稍后可以插入到 Matinee 中。在打开 Matinee 的时候,设定所有角色将其应用到动画中,并使它们可以移动。
在制作调色板的时候,为相机制作一个也是一个不错的主意 – 单独或者使用角色组都可以。
记住对于武器附件最好是从一边到另一边将角色全部集中在一个调色板中。您还可以将它们放置在彼此顶部,因为所有动作捕获数据都有一个 (0,0) 参考点(在世界中归零定位);然后从这个零点中平移出来。如果您在这里放入所有动画,那么它们都将会进行相应地移动。这样可以避免从零点重新定位。如果角色从原点移走,您将必须做更多的工作调整所有与最初动作捕获它的方式有关的内容。它尤其适用于对话场景,可以节省时间。当然,其他时间,它们可能离得很远,而且有可能不需要它。
拍摄场景并润色
只要设置并放置好所有内容后,就可以 拍摄 场景。只要在游戏环境(相机等等)中对这个场景进行划分之后,那么您就可以研究较高的细节 – 诸如清除“摇摄手”(抓住枪械,没有夹住装备等等)、表情处理(不在相机上的不需要让嘴动)、特效、划分网格物体(更多可以将场景排成一行的属性和制造气氛的元素)以及光照这样的次要工作。与此同时,在特效后面的是声音设计通道(爆炸、跳弹、音乐等等) – 场景的声效。
声音设计(音频、音乐)完成后,您可能希望稍微进行一些润色工作(相机会调整完善关键帧处理,使它可以更加平滑或像“手控”的那样更加粗糙)。这些绝技可以起到很大的作用!
可以重新导入所有次要内容。
优化
需要了解场景资源和预算的重要性。
对于场景,加载动画通常在大的软件包中进行。结果是占用大量内存,尤其是对于控制台游戏机平台而言。可以选择通过 烘焙和剔除 过程查看在 Matinee 中所使用的内容。这样做的目标是只选取那些需要的内容 – 绝对最小值 – 得到更加典型的内存占用量。
Matinee 数据中的 bakeandpruneonbuild 标志会自己从 AnimSet 中冒泡取出需要的动画并将其向下烘焙到游戏关卡中。通常只会对烘焙到控制台游戏机平台的情况进行这项操作,并且可以让关卡设计师更清楚关卡大小和资源使用情况。
有时,在使用游戏中动画的时候它可能会出现问题;如果进行了烘焙和剔除,那么这个数据实际上是另一个副本! 这样,它就是一个可以节省更多内存的实例。烘焙和剔除处理通常对于那些为过场动画制作的自定义动画更有帮助;但是节省关卡大小 vs. 删除多余的动画这一点非常重要。
帮助和技巧
在使用很多工具时, 一直准备好适应工具的变化并根据您的工作流程进行调整,这是个不错的主意。下面是一些可以从最新的工具集中获益最多的有效方法和策略。
轨迹相关性
如果您有一个运动轨迹,它可以与初始位置(默认值)相关,或者与世界相关。
与世界相关
无论您在 3D 空间的物理世界任何地方,如果您记下了一个关键帧,它就会在世界中的相应地点。
与初始位置相关
每当角色不活动的时候,它们都会处于初始位置;关键帧主要基于初始状态下它们在世界中所处的位置。将其设置为默认值,避免弄乱场景而要重新制作场景。
例如,考虑将场景布局成一个厨房。如果需要您移动场景中的所有对象,那么只需在 Matinee 关闭的状态下选择所有对象并移动它们;然后所有东西都会在它应该在的地方。如果必须移动世界中的某些物体,那么使用它可以灵活地移动。否则,所有关键帧将必须重新进行动画处理,基本上要重新制作整个场景。
剔除
在 Matinee 进行编辑工作需要一些技巧,因为这里有一个特别长的相机镜头,您需要再加进来一个相机,在 NLE 中,您只需来回拖拽它,这个组中所有关键帧都要照顾到,否则您可能会将这一切弄得乱七八糟。对于给定的相机镜头剪辑 ‐ 需要缩减 – 可以将一个 Event 轨迹放置在 Director Group 中;确定您希望它所在时间栏,然后将其放入一个关键帧中;这样您可以进入下一个编辑并为动画放置时间栏,然后剔除它们得到一个简洁版的剪辑片段。确定这里有关键帧;为这个组放置一个 in(输入端)和 out(输出端),从 Edit(编辑) 菜单中选择 Select Keys in Section(在部分中选择帧) 菜单,这样将会在绿色部分中选择所有帧,然后移动它们。接下来您可以整体移动它们,或者使用箭头键关键帧它们。这样可以标记您要将这些关键点移动到的位置。Event 轨迹适用于编辑点;您甚至可以将它编辑为“在此处剪辑”供以后使用。
音频
虚幻的声音在 3D 空间 (5.1) 中。
对于场景中的音频设计,您可以将声音轨迹放置在摄影师轨迹中,其他任何地方都可以。如果这个声效被放置在 Director Track 中,那么意味着它将会是 FULL STEREO(左、右中心)。如果在角色上加声效,例如 – 在骨架网格物体组中 – 那么声音将会从 3D 空间中的网格物体发出。这将会使音频听起来好像是在一个面发出来的, 或者是在它们与相机相关的地方。
当前,在角色上加声效将取决于角色的原点(零标记);对于动作捕获动画,它们通常会平移到距离它们的原点很远的位置! 推荐的解决方法是在 Matinee 中使用空的立方体,它在游戏中是看不到的。将这个空的立方体放置在场景中,并将其附加到角色的头上。然后,创建一个附加到这个盒子的组,并在这个盒子里面放置一个声音轨迹。
键盘快捷方式
下面是一些供更多 NLE 类型操作使用的键盘配置(在 Matinee 中)。
空格键 | 开始/停止 |
J | 倒退 1 |
K | 暂停 |
L | 以这个帧速率向前播放 |
I | 输入端: 输入点 2 |
O | 输出端: 输出点 |
R | 将动画剪辑剪为一半 – 或者 剔除 – 高亮显示时间栏左方的动画轨迹,然后按下将其分割为 2 个动画 |
+ | 在时间轴上放大时间栏所在的位置(靠近退格键,而不是数字板中的那个加号) |
- | 缩小时间栏所在的位置(靠近退格键,而不是数字板中的那个减号) |
左箭头 右箭头 | 在某一时间移动一帧 3 |
1. 注意 :JKL 控制键与 Final Cut Pro 等等中使用的按键控制相似;JKL 是您的三个中间手指对应的位置。
2. 技巧 : 在时间轴中放置标记,matinee 中的绿色区域代表循环播放;您可以移动您在 Matinne 中滑动的时间栏,然后按下 I 并滑动到另一个位置,按下 O 可以看到另一个循环标记。
3. 帧: 确保没有选中任何项(在空白区域点击),来回滑动,使用左箭头或右箭头在某个时间将整个序列移动一帧。选择一个关键帧,您可以使用箭头向左或向右单独一个关键帧。
渲染过场动画序列
您可以使用以下命令渲染出每一帧来在编辑器中渲染出整个的动画序列。
GameName.exe -dumpmovie -benchmark -fps 30
您或许会注意到在过场动画的前 10-15 帧,关卡的贴图并没有完全地加载。如果不想在过场动画的开始时花费几秒钟的缓冲时间,来获得更充足的时间来加载其它东西,事实上您可以编辑器配置文件来关闭贴图动态载入功能。进入到您游戏的 Config 文件夹并编辑 Engine.ini 文件。搜索关键字 bUseTextureStreaming
- 您或许会搜索到几个选项。设置这些选项的值为 false(假) 。保存文件,这样就应该没有贴图动态载入问题了。
注意 :当您完成时,一定要保存一个配置文件的备份版本。
对于预渲染,您可以使用下面的命令获得最佳品质:
Game.exe <MapName> -Benchmark -MAXQUALITYMODE -NoTextureStreaming -DumpMovie -FPS=30 -ResX=1280 -ResY=720
视频捕捉
由于不同的需求可能会需要不同的硬件和软件,下面是目前 Epic 内部使用的一些硬件和软件:
- Aja IO 主板用于捕获直接的 HDMI,它可以避免额外的视频处理
- Final Cut Pro 可以在 Mac 上进行编辑工作
Important!
You are viewing documentation for the Unreal Development Kit (UDK).
If you are looking for the Unreal Engine 4 documentation, please visit the Unreal Engine 4 Documentation site.