文章

在 AR 快速查看和 RealityKit 中添加视觉效果

利用建模策略,让增强现实体验在外观和性能之间取得平衡。

概览

AR 快速查看支持多项建模功能,帮助你的 App 以令人惊叹的方式精彩逼真地呈现虚拟内容。在整合这些功能时,请务必做好管理和测试,以便优化增强现实体验性能。

AR 快速查看使用 RealityKit 呈现增强现实体验,你可以设计模型来充分利用 iOS 13 及更高版本上提供的 RealityKit 功能。例如,粗糙度属性会影响光线在哑光表面上的漫反射方式。RealityKit 利用多重散射算法实现粗糙效果,从而增强虚拟内容的纹理和真实感。此外,你还可以使用透明涂层选项,为虚拟内容增添光泽感。

截屏显示了两个并排放置的木制玩具,用来展现添加模型功能的效果。左侧的玩具图像没有多重散射粗糙效果和透明涂层;右侧的玩具图像使用了多重散射粗糙效果和透明涂层。

利用透明涂层为 3D 内容增添光泽感

你可以利用透明涂层选项,为增强现实体验中的模型增添光泽感和高光效果。

截屏显示了两个并排放置的弹珠,用来展现应用透明涂层的效果。右侧的弹珠图像更有光泽,并且顶部呈现了反射高光效果。

RealityKit 通过添加第二个镜面波瓣来渲染透明涂层。要在 App 的虚拟内容上呈现一层透明涂层,请在设计模型时使用下列输入:

clearcoat

在 0 和 1 之间进行归一化处理的标量浮点数,用来指示透明涂层镜面波瓣的强度。

clearcoatRoughness

在 0 和 1 之间进行归一化处理的浮点数,用来指示透明涂层表面的感知粗糙度。

在下图中,垂直方向显示了 clearcoat 参数在 0 和 1 之间变化的效果,水平方向显示了 clearcoatRoughness 参数在 0 和 1 之间变化的效果,其中左下角为 (0, 0) 对应的效果。

截屏显示了一大批 3D 模型,每个模型具有不同的 clearcoat 参数。垂直方向显示了 clearcoat 在 0 和 1 之间变化的情形,水平方向显示了 clearcoatRoughness 在 0 和 1 之间变化的情形。右下角的模型暗淡哑光,而左上角的模型光泽亮丽。

进行光效和反射精度设计

RealityKit 的多重散射粗糙效果会影响哑光质感模型表面上的光线反射或漫反射方式。通过使用 RealityKit 呈现虚拟内容,AR 快速查看会以逼真的方式处理模型的粗糙度、金属质感和镜面反射分量。请配置 3D 素材资源的粗糙度、金属质感和镜面反射输入值,让反射和漫反射恰当地融合在一起。

粗糙度分量控制表面的纹理。当粗糙度值为 0 (光滑) 时,会形成镜面反射;当粗糙度值为 1 (粗糙) 时,则会形成漫反射,从而使表面暗淡哑光。下图显示了 roughness 参数在 0 和 1 之间变化的效果,其中 0 位于左侧。

截屏显示了一排虚拟物体,它们的粗糙度值从 0 向 1 变化,其中 0 位于左侧。

金属质感分量定义模型是呈现出绝缘体质感 (0) 还是金属质感 (1)。下图显示了 metallic 参数在 0 和 1 之间变化的效果,其中 0 位于左侧。

截屏显示了一排虚拟物体,它们的金属质感值从 0 向 1 变化,其中且 0 位于左侧。

对于绝缘体材质,镜面反射分量让你可以控制表面的反射程度,范围从 0 (不反射) 到 1 (全反射)。下图显示了 specular 参数在 0 和 1 之间变化的粗糙效果,其中 0 位于左侧。

截屏显示了一排虚拟物体,它们的镜面反射值从 0 向 1 变化,其中 0 位于左侧。

优化模型几何结构和透明度

在利用各项功能有效呈现虚拟内容的同时,请采取相应措施,打造灵敏的增强现实体验。由于每个模型网格都会产生绘制调用,因此为实现最佳效果,请将 USDZ 文件中的网格数量限制为 50 个左右。为了减少绘制调用次数,同时保持相同数量的几何结构,请合并采用相同材质的物体。但请注意,如果合并会导致渲染器无法进行剔除处理,则可能不会带来性能提升。

投射阴影和光线追踪阴影的资源开销取决于模型几何结构的复杂程度。为了增强性能并防止在光照效果方面过多地使用内存,请将 3D 素材资源几何结构的多边形数量控制在 100,000 个以下。

模型透明度会增加片段着色器针对每个像素的运行次数;当用户直接查看或者以全屏模式查看模型时,开销会相当高。要通过缩短 App 在像素着色上所用的时间来提升性能,在创作 App 虚拟内容时应谨慎使用透明度。

控制纹理内存

为获得最佳效果,请尽量将纹理尺寸设为 1024 x 1024 像素或更低,并确保不超过 2048 x 2048 像素。如果有多个较小的纹理,请使用纹理坐标指定它们的位置,将它们合并为一个较大的纹理。为确保纹理满足 AR 快速查看的内存限制要求,从而让你的模型能够正常显示,请将纹理总数限制为 6 个。

如果在运行时发现任何分辨率差异,请换到拥有更多内存的设备上进行测试,并检查是否存在任何差异。AR 快速查看会自动为模型纹理生成多辨别率纹理。AR 快速查看还会在运行时根据需要按比例缩小纹理,从而将内存用量控制在一定的预算 (具体取决于设备) 范围内。

在各种设备上测试功能

在开发模型时,为了实现最优性能,请从保守配置着手,确保 AR 快速查看能够在较早的 iOS 设备 (iPhone 6s 和第一代 iPad Pro) 上为你的模型提供支持。通过从支持 AR 快速查看的最早设备入手,你可以避免在测试阶段削减虚拟内容的功能。

另请参阅

快速查看

利用 AR 快速查看预览模型

显示用户能够移动、缩放并与他人共享的模型或场景。

class ARQuickLookPreviewItem (英文)

用于自定 AR 快速查看体验的对象。

在 AR 快速查看中添加 Apple Pay 按钮或自定操作

提供一个横幅,让用户可在增强现实体验中轻点这个横幅来进行购买或完成自定操作。