Zero Density 带你了解 AR 合成初学者指南
了解如何将物理世界和虚拟图形与 Reality Engine 的直观 AR 管道无缝匹配。
如果您对增强现实感兴趣,Zero Density 的免费软件 Reality Engine 是一个很好的起点。虚幻引擎原生平台包括实时合成系统及其专有键控技术 Reality Keyer。不用说,如果您想在素材上实时合成 3D 视觉效果,它是一个非常方便的工具。
在本教程中,我们将带您完成 Reality Engine 中的快速 AR 合成设置,并揭示如何通过将物理世界与虚拟图形无缝匹配来创建逼真的实时合成。阴影和灯光对于令人信服的合成至关重要,我们将帮助您完全控制这些,而无需使用任何额外的摄像机或渲染开销。对于这个特定的场景,我正在合成一架 CG 钢琴和来自工作室摄像机的视频。在继续进行投影设置之前,我将从场景和节点图的基本设置开始。然后,我将教你如何添加虚拟灯光和阴影,为你的合成增加更多的真实感。
免费下载 REALITY ENGINE
让我们从您的 AR 场景的基本场景设置开始。首先,前往 Zero Density 的网站 zerodensity.tv 并下载 Reality Engine 的免费社区版。

设置您的场景
下载软件后,打开 Reality Editor 并导入 3D 模型。在这种情况下,我使用的钢琴模型已经应用了反光材料。如果您愿意,也可以使用 Place Actors>Lights 菜单在此处添加灯光,但为了获得最大控制,我稍后将直接从 RealityHub 中的节点图中添加这些灯光。

获得环境反射
接下来,我们需要添加背景以确保 3D 对象上的反射看起来逼真。我决定使用从我的工作室环境中捕获的 HDRI 背景。这意味着我会得到一些很好的环境反射,可以完美地模仿我物理工作室中的反射。为此,请单击 Place Actors>Lights>HDRI 背景选项。



添加您的实时摄像机源和跟踪数据节点
现在转到 Nodegraph/Actions 选项卡并创建一个基本的 AR 合成设置,如右侧的屏幕截图所示。如您所见,我的 Camera 节点正在从预先配置的跟踪节点接收跟踪数据。此外,Camera 节点的输出连接到 Mixer 节点的 Channel1 输入,这让我可以预览我的虚拟场景输出。让我们监控通道 A 上的 SDI 输出,以及 Advance Preview Monitor 通道 B 上的虚拟摄像机输出,以确保虚拟世界和物理世界对齐。如果您需要调整转换,只需选择您的 Piano 节点并使用 Transform 属性将其正确对齐到物理工作室环境。


投影设置
现在,让我们通过右键单击任何空白区域,然后打开 System Nodes 菜单并输入“ProjectionCube”,将 ProjectionCube 节点添加到我们的节点图中。接下来,再次打开 System Nodes 菜单并将 Projection 节点添加到场景中。ProjectionCube 将从物理摄像机接收未失真的 SDI 信号。现在,确保将 ProjectionCube 输出连接到 Projection 节点的 Actor 输入。最后,将 Projection 节点的 Projection 输出连接到 Camera 节点的 Projection 输入。完成后,您的节点图应该看起来像我在屏幕截图 5c 和 5d 中所做的那样。




添加跟踪数据
到您的投影节点投影节点还需要来自跟踪节点的跟踪数据。为此,请将跟踪节点的输出连接到投影节点的跟踪输入。


将您的 SDI 输出添加到投影设置
现在,投影设置已准备好接收来自物理演播室摄像机的不失真视频输入。要添加它,打开系统节点菜单并搜索“Undistort”,然后将节点添加到您的 Rgraph 中。确保将 Undistort 节点输出连接到 Projection Video 输入,如我上面的屏幕截图所示。

将您的 SDI 馈送连接到 UNDISTORT 节点
请记住,Undistort 节点需要两个输入。确保将 Undistort 节点输入连接到物理相机的输出和跟踪节点的输出。

从另一个角度检查您的设置
现在我们需要从不同的角度检查我们的投影设置。这让我们可以将 ProjectionCube 与物理环境尽可能地对齐,因此所有反射材料都能捕捉到正确的反射,物理环境可以接收到正确的虚拟阴影。为此,请调出 System Nodes 菜单并将 Camera 节点添加到您的节点图中。再次执行相同操作,但这次添加一个 UserTrack 节点。将 UserTrack 节点的 Track 输出连接到 Camera 节点的 Track 输入,如我上面的屏幕截图所示。

预览您的相机输出
现在通过右键单击 Camera 节点的输出预览相机输出,然后选择 Channel B。单击 UserTrack 节点的游戏手柄图标(图 10a)以在场景中移动,然后单击 Tracked Camera 上的调试图标 节点以查看场景内的跟踪摄像机。

设置虚拟灯光和阴影
此时,我们可以开始处理灯光和阴影。首先右键单击节点图的背景以调出 System Nodes 菜单,然后添加一个 Spotlight。打开调试模式,这将帮助您在场景中正确定位灯光。使用左侧的“属性”面板调整一些灯光参数,并在此阶段选择一个可用的 ZD 阴影通道来测试场景的外观。



掌握阴影
为了查看和控制阴影,我们接下来必须将投影材质预设从 Masked 更改为 LitMasked。为此,请选择您的 Projection 节点并使用左侧“属性”面板中的“材质”下拉菜单将材质从 Masked 切换到 LitMasked。接下来,将输入添加到自定义后期处理材料的后期处理节点,并将其连接到新的后期处理材料。为此,请使用 System Nodes 菜单将新的 PostProcessMaterial 添加到场景中。现在,选择新添加的 PostProcessMaterial 节点,并从左侧的 Properties 菜单中选择 RealityShadowsAO 材质预设,为您的场景添加阴影。





把它放在一起
现在是时候在 CompositePasses 节点的帮助下开始将所有内容合成到您的场景中了。右键单击节点图的背景以调出 System Nodes 菜单,然后搜索 CompositePasses 节点。


该节点需要来自跟踪节点的跟踪数据和来自物理相机的视频输入,以及来自虚拟相机的虚拟场景渲染、阴影、光晕和反射。将 CompositePasses 输出连接到 Mixer 节点的 Channel1,然后将 CompositePasses Track 输入连接到 TrackModifier 节点的输出。


现在,将 CompositePasses Video 输入连接到 Delay 节点的输出,并将 CompositePasses Render 输入连接到 Camera 节点的输出。最后,将 Camera Shadow 输出连接到 CompositePasses 节点的 Lighting 输入,并将 Camera 的 Reflection 输出连接到 CompositePasses 节点的 Reflection 输入。您甚至可以在将所有引脚连接在一起时观察场景中发生的变化。


匹配您的灯光以实现
可信的结果,我们现在必须尽可能地使虚拟世界与物理世界相匹配。为此,请选择您的 SpotLight 节点,然后在“属性”面板中更改“变换”值。您的目标是移动虚拟聚光灯,使其与现场的物理灯光非常匹配。将新的 SpotLight 节点添加到您的场景中,以使您的物理灯光与虚拟灯光保持匹配;不要忘记为每个灯光选择单独的阴影通道。
现在选择您的 PostProcessMaterial 节点并在“属性”面板中更改 ShadowOpacity 以匹配场景中的其他真实阴影。




使它成为现实
为了使这种合成更加逼真,我们需要控制环境光遮蔽。这为最终合成添加了更丰富、更逼真的结果,为原本平坦的图像增加了更多深度。这对于 AR 来说非常重要,尤其是当您希望将 3D 图形彼此靠近或靠近地板等物理表面时。在 PostProcessMaterial 节点上打开调试模式,并将 PostProcessMaterial 属性中 DebugColor 的 Alpha 更改为 1,000。它现在应该变成粉红色。
接下来,更改属性菜单下 AOMASK 选项的参数,如屏幕截图所示。这添加了一个额外的控件,有助于为环境光遮蔽遮罩用户定义的区域。您还可以在没有任何额外步骤的情况下看到钢琴能够从物理工作室接收逼真的反射。您现在应该有一个很棒的逼真的合成来开始您的增强现实项目!根据您的场景,您现在可以处理反射或进一步的灯光和阴影:选择权在您手中。






