Choose your operating system:
Windows
macOS
Linux
虚幻引擎4(UE4)支持的标准 动态模糊 假设对象表面上的点在帧间保持直线移动,然后利用其在上一帧所处位置的信息来应用模糊效果。此设置适用于从一个位置将对象移至另一位置。但在应用于单帧内旋转180度的对象时,例如飞速旋转的汽车车轮,此方法会产生视觉误差。在本例中,动态模糊朝向于车轮一侧的点,然后假设其以直线运动至车轮另一侧,而非圆周运动。
为了协助解决此问题,我们开发了特殊 径向动态模糊 材质,使对象仿佛在快速旋转,接着应用相应的模糊效果,以获得更准确的结果。在下列范例图像中,可以看到在旋转对象上使用标准动态模糊的结果(左侧)与使用径向动态模糊材质的结果(右侧)的对比。
本教程将对在对象上设置径向动态模糊材质的过程进行讲解。
必要设置
为讲解本指南,我们将使用 内容示例 样本项目中的资源。若尚无此样本项目,请在启动器的 学习(Learn) 选项卡下载并安装。
我们将在 Materials_Advanced 贴图中构建示例,其中已设置径向动态模糊的工作范例。而要在自己的项目中使用径向动态模糊材质,只需在 内容浏览器 中选择并点击 MI_RadialMotionBlur 材质实例,然后在 资源操作(Asset Actions) 下选择 迁移资源(Migrate Assets) 选项。
迁移资源工具将自动在迁移中包括MI_RadialMotionBlur和基础径向运动模糊(RadialMotionBlur)材质。欲了解本主题更多信息,参见
步骤
确保关闭UE4编辑器。在项目文件夹中,打开 Config 文件夹并找到 DefaultEngine.ini。
用文本编辑器打开 DefaultEngine.ini,然后在 [/Script/Engine.RendererSettings] 段添加 r.CustomDepth=3。
接着,需要两个 网格体:要应用径向动态模糊的网格体,以及将其覆盖的"虚拟"网格体。虚拟网格体不仅要覆盖将被模糊的对象,还要完全覆盖其旋转时掠过的空间,其应尽量紧密包裹掠过的空间,而不与原始对象的几何体相交。
在上述示例图像中,要应用模糊效果的网格体应用了标准材质,而"仿真"网格体是一个环绕它的凸包,用黄色线框显示。注意,它与静态网格体紧密贴合,且不穿透静态网格体。可以决定使用自己的网格体,但出于本指南的目的,将使用资源 SM_Wheel 和 SM_Wheel_Blur,可在 Content/ExampleContent/Materials/Meshes 下的内容示例项目中找到它们。
将 SM_Wheel 拖入场景来新建 StaticMeshActor。
在此 StaticMeshActor 的 细节面板(Details Panel) 中,点击 蓝图/添加脚本(Blueprint/Add Script) 以基于此Actor新建蓝图。将其命名为 BP_StaticMesh_MotionBlur,并保存到 Content/Blueprints 文件夹。此Actor将转换为新的蓝图Actor类型,同时自动打开 蓝图编辑器。
在 蓝图编辑器 中,找到 组件面板(Components Panel) 并选择网格体的 静态网格体组件(StaticMeshComponent)。然后,在 细节面板(Details Panel) 中,找到 渲染(Rendering) 下的 高级(Advanced) 部分。将 渲染自定义深度通道(Render Custom Depth Pass) 设为True,然后将 自定义深度模具值(Custom Depth Stencil Value) 设为5。
在 组件面板(Components Panel) 中,点击 添加组件(Add Component) 按钮。在下拉列表中选择 静态网格体(Static Mesh) 以添加新的静态网格体组件(StaticMeshComponent)作为基础网格体的子级。将此网格体重命名为"MotionBlur Mesh"。
在 细节面板(Details Panel) 中,将运动模糊路(MotionBlur)网格体的静态网格体设为 SM_Wheel_Blur。将其旋转以适应基础网格体,并确保其已应用 MI_RadialMotionBlur 材质。
结果
应用 MI_RadialMotionBlur 材质实例后,基础网格体现会仿佛在快速旋转。下图中展示的是普通静态网格体(左侧),与之相对的是一个将径向运动模糊(RadialMotionBlur)应用于虚拟网格体(围绕基础网格体)的网格体(右侧)。
注意:无需旋转基础网格体或Actor即可获得此效果。相反,径向运动模糊材质自身将创造对象在旋转的假象。可使用 MI_RadialMotionBlur 材质实例中的 角度(Angle) 和 边缘半径(RimRadius) 参数来调整此效果的表现。
在以下两个图像序列中,展示了调整 角度(Angle) 和 边缘半径(RimRadius) 材质输入值后,径向模糊的视觉效果所受到的影响。
可使用此新建Actor类型来创建使用径向动态模糊效果的所有对象。变更同时用于基础网格体和虚拟网格体的静态网格体,虚拟网格体同时需使用径向运动模糊材质的材质实例,并确保虚拟网格体在旋转时尽量与基础网格体掠过的区域紧密相匹。
最后,若要让不同对象使用不同设置,可基于 径向运动模糊 材质新建材质实例,并对其进行相应设置。欲了解创建材质实例方式的更多信息,参见创建和使用材质实例相关指南。