资讯
展览资讯 大型展会 灯光节 大型盛典 赛事 中标捷报 产品快讯 热门话题 艺术节 活动 演出 新闻 数艺报道 俱乐部签约
观点
大咖专访 观点洞察 书籍推荐 吐槽 设计观点 企业访谈 问答 趋势创新 论文 职场方法 薪资报价 数艺专访
幕后
幕后故事 团队访谈 经验分享 解密 评测 数艺访谈
干货
设计方案 策划方案 素材资源 教程 文案资源 PPT下载 入门宝典 作品合集 产品手册 电子书 项目对接
  • 0
  • 0
  • 0

分享

布料缓存工作流程

2023-10-31


模拟好的Chaos布料可以缓存,具体方法参见下文。这是使用Take Recorder的一个实验性工作流程,未来还会更新,包括解决缓存过大的问题、完善多步骤过程以及修复相应的错误。


我们将使用Take Recorder模拟过程来缓存Chaos布料。首先,我们要创建一个关卡,将资产添加到关卡序列中,添加一个Chaos缓存管理器,它将与Take Recorder协同工作,然后生成缓存的模拟。


使用Take Recorder可以同步模拟缓存和添加到Sequencer中的动画。要录制缓存,可以将缓存管理器(见下文)设为录制,然后点击编辑器中的模拟/运行按钮。接着,你需要手动将缓存添加到Sequencer中,手动同步缓存和动画。使用Take Recorder可以避免手动调整。(参见下文关于密集模拟网格体的警告)


以下是我们将介绍的主要步骤:

  • 关卡设置

  • Chaos缓存管理器

  • 创建关卡序列

  • 设置Take Recorder

  • 缓存模拟

  • 渲染布料缓存


加载Chaos缓存插件


首先,必须加载Chaos缓存插件,重启引擎。(虽然写的是Beta版本,但其实是一个实验性插件)



关卡设置


创建一个新的关卡——将角色添加到关卡中。在本文展示的例子中,我们将使用在Chaos布料Echo斗篷教程中创建的“BP_Echo3rdPersonCape”。




在关卡中添加一个电影摄影机Actor。


不一定要这么做,但如果使用根运动,设置一台摄像机跟随动作会很有帮助,尤其是在逐个镜头运行的时候。还可以用于使用影片渲染队列进行渲染。



为斗篷添加风的效果。



编辑摄像机(和风)。

别忘了调整光圈。

调整风的强度/风速——旋转蓝色箭头改变方向。




Chaos缓存管理器


将Chaos缓存管理器添加到关卡中。

Actor->Chaos->创建Chaos缓存管理器(在文件对话框中保存缓存)。

只有选中角色蓝图,“Actor”下拉菜单中才会显示这个选项。





缓存集合

通过Actor下拉菜单创建Chaos缓存管理器时,系统会提示你为新建的Chaos集合资产设置路径和名称。录制好之后,这个新资产将包含播放模拟需要的一切,但千万不能删除或移动录制组件引用的资产!Chaos集合内部引用了这些对象,如果找不到这些对象,它就没法工作。


缓存集合——刚刚在内容浏览器中创建的资产。如有需要,可以把它改成其他可录制的资产(假设你正在录制多个版本)。

缓存模式——在缓存管理器中,缓存模式可以设为静态姿势、播放或录制。录制时,当然要把它设为录制。而在播放时要将它设为静态姿势。

开始模式、开始时间——录制时保留默认值。

观察的组件——这里的每个元素分别代表要记录到缓存中的每个组件。如果发生错误,请先检查这些数据是否准确,再执行其他操作。“IsSimulating(正在模拟)”标记应反映关卡中Actor的状态。在这里记录是因为在录制和播放缓存时,缓存管理器会在组件上操纵该状态。我们要知道静止状态是什么,以便在缓存管理器操作完之后将组件恢复成该状态。通常情况下,这个标记都处于启用状态。


观察的组件

必须确保Chaos缓存管理器的“软组件引用”指向正在模拟的正确组件。5.2中的设置不正确。5.3已经改正,但是最好再检查一下。


创建关卡序列


由于我们将使用Take Recorder来生成布料缓存,事先创建一个关卡序列会很有帮助。如果你已经创建过关卡序列,可以直接跳转到设置Take Recorder部分。





创建一个空白的关卡序列。



保存新建的关卡和关卡序列。接下来,我们要在关卡序列中添加Actor。




在关卡序列中添加Actor

关卡序列->+轨道->Actor到Sequencer

将Actor添加到我们创建的关卡序列中

  • 添加摄像机

  • 添加角色

  • 添加动画

  • (添加风)





添加Echo蓝图



选择+轨道 - 添加CharacterMesh0




添加动画



这个动画片段的时间很短,我们要延长动画,延长缓存时间。



延长动画片段。在这个例子中,动画将循环播放,从而增加缓存的帧数。



现在,我们已经添加好关卡序列需要的所有元素。

保存关卡、关卡序列和Chaos缓存合集(如有需要)。


双击内容浏览器中的关卡序列,重新打开这个关卡序列(如果没有在另一个选项卡中打开)。


测试关卡序列 - 在编辑器中模拟和运行,观察风对斗篷的影响。

(需要使用“模拟”来模拟风对布料的影响)


设置Take Recorder


打开Take Recorder。

窗口->过场动画->Take Recorder

参阅Take Recorder文档了解详情:

https://docs.unrealengine.com/5.1/zh-CN/take-recorder-in-unreal-engine/



此时你可能会发现,之前创建和保存的关卡序列消失了。我们要通过Take Recorder界面重新加载之前保存的关卡序列。




使用第三个按钮来选择加载/设置之前保存的关卡序列。

  • 打开序列到录入



现在,我们已经通过Take Recorder加载之前保存的关卡序列。

可能需要拖动时间轴上的滑块,重新评估编辑器。



将Chaos缓存管理器添加到Take Recorder中

在Take Recorder中,将Chaos缓存管理器Actor添加到Take Recorder源中。


源->来自Actor->Chaos缓存管理器




我们只需要Chaos缓存轨道。不要勾选“开始时间(StartTime)”。



检查Take Recorder设置(齿轮图标蓝色高亮显示就能打开下列设置)。



设置录制时钟源

“设置录制时钟源”是一项很重要的设置。如果按指定和固定帧率运行模拟(参见下文“关于缓存密集网格体的注意事项——项目设置和配置”),Tick、平台和相对时间码都可以提供适当的缓存生成长度来匹配动画播放。


“音频”和“自定义”尚未经过测试。“时间码”会改变关卡序列中的时间轴,因此不建议使用。“播放每一帧”是一项独特的设置,需要你手动缩放已完成的缓存轨道,以匹配Sequencer动画的长度,但是可能需要模拟不按固定速率播放的密集网格体。


以下内容截取自Take Recorder文档:

  • Tick:使用默认的世界Tick差量来计时。响应世界和Actor暂停状态,但可能容易受到累加错误的影响。

  • 平台:使用平台时钟来计时。不响应世界和Actor暂停状态。

  • 音频:使用音频时钟来计时。不响应世界和Actor暂停状态。

  • 相对时间码:使用相对于时间码提供者的时间来计时。不响应世界和Actor暂停状态。

  • 时间码:使用当前的时间码提供者来计时。不响应世界和Actor暂停状态。

  • 播放每一帧:一种调试模式,在前进到下一帧之前,每一帧将保持Sequencer.SecondsPerFrame秒。不响应世界和Actor暂停状态以及时间膨胀。音频也不会同步。

  • 自定义:在外部创建和定义的自定义时钟源。

设置录制时钟源–Tick



可选:设置录制时钟源–播放每一帧



确保勾选“录制到可拥有”



在大纲中双击Chaos缓存管理器节点。

“缓存模式”应设为录制(RECORD)



缓存模拟


目前,缓存过程分为两个步骤。我们要先强制编辑器进行模拟,再点击Take Recorder中的录制按钮,不过未来这两个步骤会合并。如果不在编辑器中点击模拟,就无法缓存像风这样的关卡效果。


缓存:

先点击编辑器中的模拟按钮(激活风的效果)。



再点击Take Recorder中的录制按钮。



Chaos缓存管理器将在关卡序列中生成缓存。


缓存完成后,在编辑器中点击停止模拟按钮。

你可以在关卡序列中看到缓存,如果布料缓存不大,你还可以在Sequencer中来回拖动时间轴上的滑块。缓存数据保存在Chaos布料集合文件(和Chaos布料管理器实例保存在一起)中。你要手动保存缓存文件。


静态姿势

缓存完成后,缓存模式会自动变为“静态姿势”。虽然名称不是很直观,但它的意思是指缓存已被设为在Sequencer中播放。



绘制缩略图(可选)

在摄像机Sequencer轨道中关闭(右键单击摄像机切换轨道),以节省性能开销。



Sequencer轨道时间尺度

如上所述,如果模拟使用的录制时钟源是“播放每一帧”,则对齐轨道末尾和红色记录线。这可以是一个变化的值。在这个例子中,我们将偏移值设为6(右键单击缓存轨道->属性->时间尺度),同步缓存轨道和动画轨道的结尾。由于布料网格体模拟和处理器速度有所不同,可能需要设置不同的值。



重新模拟缓存


如果想重新模拟缓存,可以右键单击关卡序列中的Chaos缓存管理器轨道,此时会弹出一个上下文菜单。删除选项在中间位置。现有模拟可能无法正确重置,具体取决于删除缓存的时间帧。参见下文的“失真布料状态修复”。


通过删除缓存轨道而不是重新模拟,可以正确并强制将Chaos缓存管理器的“缓存模式”重置成录制(RECORD)


重置后,你就可以重复上面的缓存模拟步骤,生成一个新的缓存。


渲染布料缓存


重要!!!

目前,为了使用缓存渲染模拟,必须关闭Take Recorder。否则,MRQ或旧的影片创建者将会重新模拟并覆盖你的缓存。这是一个已知的问题。


在此之前,请先保存关卡、关卡序列和Chaos缓存集合。


然后在细节面板中,将Chaos缓存管理器设为“静态”。


最后,重新打开用于创建布料模拟缓存的关卡序列,然后运行MRQ或旧版渲染器。


使用影片渲染队列(MRQ)渲染

首先要加载影片渲染队列插件。



MRQ的FFmpeg设置

强烈建议你为影片渲染队列安装ffmpeg编码器。它可以自动利用渲染图像生成一段影片。

https://dev.epicgames.com/community/learning/tutorials/BbYV/unreal-engine-how-to-use-ffmpeg-with-the-command-line-encoder-in-movie-render-que



双击“设置”列的“未保存配置*(Unsaved Config*)”,将命令行编码器(和FFmpeg编码器)添加到你的影片渲染队列中。



点击左上角的“+设置”按钮,选择“命令行编码器”。点击右下角的“接受”按钮返回影片渲染队列对话框。


现在,你可以点击影片渲染队列对话框右下角的“渲染(本地)”或“渲染(远程)”按钮生成影片。


使用影片场景捕获(旧版)渲染影片

使用影片场景捕获(旧版)渲染与使用MRQ渲染相同,除了添加FFmpeg编码器的选项。关闭Take Recorder,确保关卡序列已关闭。将Chaos缓存管理器设为“静态”,然后用保存的缓存打开关卡序列。




点击“捕获影片”按钮生成影片。


失真布料状态修复


有时候(比如在模拟过程中)布料可能会卡在一个错误位置。要想重置姿势,一种方法是在“播放”和“录制”这两种缓存模式之间来回切换。


此外,还要确保你的文件已保存。有时候这也可以避免布料失真。


Take Recorder状态不良


如果Take Recorder无响应,可能需要先关闭Take Recorder,再重新打开(重新加载你的关卡序列)。


有关缓存密集网格体的注意事项


缓存可能需要一段时间,请耐心等待(参加下文的“缓存阶段”)。

如果你使用的布料模拟网格体十分庞大,缓存大小可能非常大。(根据我们的经验,模拟网格体的顶点数量大约为10k+个,数量达到20k+就要注意了。)这是一个已知的问题,将来会解决。对于实时网格体来说,不需要考虑这些注意事项。


缓存阶段

  • 在编辑器中点击“运行”,再在Take Recorder中点击“录制”。

  • —------日志-开始记录信息

  • 等待右下角的Take Recorder信息消失。

  • —------日志-结束记录信息

  • 等待保存最终的缓存。

  • 在编辑器中停止模拟。

  • 手动保存缓存集合。


这些阶段可能需要很长一段时间才能完成,具体取决于模拟网格体的分辨率和设置。


项目设置和配置

重要:对于分辨率非常高的网格体来说,可能要修改项目设置/配置文件,以确保能正确计算模拟。


在你的配置目录中是“DefaultEngine.ini”配置文件。将最大物理差量(MaxPhysicsDelta)调高,比如设为“10000”。这个值需要在配置文件中设置。


勾选“使用固定帧率”并设置一个值。




“使用固定时间步(UseFixedTimeStep)”有一个命令行选项。

重要!对于固定时间步来说,选择项目设置或命令行选项,不要同时选择两者。根据测试,同时启用两者会导致两者相互抵消。


分步

启用分步很重要。如果在上面使用剪切/粘贴,这个选项就会正确设置。



在编辑器中确认帧率固定在30fps(或者你设置的其他帧率),为此你可以使用视口中的“显示FPS”选项(Ctrl + Shift + H)。



最后说明


在虚幻引擎中缓存布料是一个循序渐进的过程。我们意识到目前的工作流程还存在限制和有待改进的地方,我们希望未来能解决这些问题。


阅读原文

* 文章为作者独立观点,不代表数艺网立场转载须知

本文内容由数艺网收录采集自微信公众号虚幻引擎 ,并经数艺网进行了排版优化。转载此文章请在文章开头和结尾标注“作者”、“来源:数艺网” 并附上本页链接: 如您不希望被数艺网所收录,感觉到侵犯到了您的权益,请及时告知数艺网,我们表示诚挚的歉意,并及时处理或删除。

数字媒体艺术 新媒体艺术 科技艺术

9302 举报
  0
登录| 注册 后参与评论