谷歌3D模型工程师分享:关于glTF的色彩精度

2022-09-27 12:10:36来源:YiVian


查看引用/信息源请点击:映维网Nweon

为大家提供建立流程和设定期望所需的背景

映维网Nweon2022年09月27日)交互式3D模型是继图像和视频之后的下一种媒体类型,所以,行业越来越多地使用和其他渲染器在商业环境、博物馆和其他地方来显示相关的3D模型。用户对确保所呈现的像素准确表示模型所基于的真实对象感兴趣。因此,需要一个质量保证过程来确保3D模型本身已被准确设计,并且模型的呈现逼真。

日前,主要在谷歌负责的资深软件工程师埃米特·拉里什(EmmettLalish)撰文介绍了关于glTF的色彩精度,从而为大家提供建立流程和设定期望所需的背景:

无我VR 聚合新闻

Khronos的glTF是第一种指定基物渲染(Physically-BasedRendering/PBR/基于物理的渲染)的3D模型格式,这意味着它包含以真实世界单位定义光在物理方面应如何反射和折射的材质属性。这意味着渲染器可以在GPU着色器中自由创新,以创建基础物理的越来越精确的近似,因为glTF没有指定任何单一近似。

这同时意味着,尽管不同的渲染器可能会在精度和速度之间进行不同的权衡,但你可以确信,即便在不相关的codebases中,glTF看起来都会一致(尽管不是像素相同)。我们将glTF称为3D的JPEG,因为它经过压缩以实现高效的web交付,并且可以由大量viewer一致呈现。

乍一看,不同的glTF查看器可能不一致,但这通常不是由于渲染差异,而是由于默认场景设置。基于物理的渲染意味着场景将环境光作为输入,就像真实相机一样。因此,类似于获得一致的照片,我们不仅需要相同的对象,并且需要相同的照明和camera设置。Viewer的默认设置没有标准,因此有意识地将其设置为一致的值非常重要。这正是我们所做的事情,以显示glTF渲染收敛于各种流行渲染器的状态。

2.渲染色彩与baseColor匹配有什么问题?

关于PBR,需要明确的最重要的一点是,它准确地表示入射光和材质特性之间的相互作用,其中除了baseColor之外,金属度和粗糙度同样非常重要。然而,给定像素的渲染输出仅为RGB,这意味着如果它与baseColorRGB匹配,则根据定义,入射光和其他材质属性不会以任何方式影响生成的图像。

我们从一个简单的例子开始:六个具有均匀材料的球体。顶行为白色(baseColorRGB:[1,1,1]),底行为黄色(baseColorRGB:[1,1,0])。从左到右依次为闪亮金属(金属度:1,粗糙度:0)、闪亮塑料(金属度:0,粗糙度:0)和哑光塑料(金属度:0,粗糙度:1)。最左边的大约可以认为是抛光的银和金。

无我VR 聚合新闻

具有不同均匀材料的球体的基本示例

请注意,具有相同baseColor的不同材质渲染方式不同。哪些像素与baseColorRGB匹配?事实上,如果你真的希望渲染像素与基色RGB值匹配,glTF有一个专门的扩展:KHR_materials_unlit。这个扩展不基于物理,因此适用于标签和3D扫描等仅生成RGB纹理的情况,其中所有应用的照明都作为捕获过程的一部分烘焙。这是上面模型在unlit扩展时的外观:

无我VR 聚合新闻

使用glTFUnlit扩展的球体与上面相同

显然,照明在提高三维模型逼真度方面十分重要。下一个常见的想法是选择一个很好的均匀中性照明场景,使输出RGB值“接近”预期的baseColor。嗯,很容易产生一个均匀的照明环境,但对于PBR来说,结果可能会令人惊讶:

无我VR 聚合新闻

这里。照明旨在均匀(从各个侧面),但不统一,从而提供足够的纹理来区分材质类型。

它是纯灰度的,因此不会改变材质的色调。这与室内照明可能会偏黄、室外照明可能会偏蓝或日落可能会偏红相反。PBR将忠实地产生camera在场景中捕捉到的色彩,当然,色彩在中性照明下看起来与同一物体不同。

无我VR 聚合新闻

3.渲染与摄影相比如何?

3D渲染(尤其是PBR)旨在模拟摄影,而摄影反过来又旨在模拟人眼和大脑。大脑部分必不可少,因为真实照片的目标是通过查看它来唤起与查看原始场景相同的感知。这非常困难,因为打印照片反射的光或显示器发出的光的强度明显低于真实世界,对比度也较低。即使是HDR显示器的对比度都比眼睛在正常室外看到的要低几个数量级。

谢天谢地,我们的大脑对我们的感知进行了大量的调整,包括校正对比度。这允许我们能够以非常压缩的动态范围打印照片,同时依然能提供真实日落的感觉。这种动态范围的压缩我们称之为色调映射。在摄影中,你可以将其视为从相机的原始图像到最终图像的转换。在具有曝光叠加的现代摄影中,它变得更加重要,在这种摄影中,可以产生比传感器在单次拍摄中所能产生的更高动态范围的原始图像。

无我VR 聚合新闻

CES,它是电影行业开发的标准,广泛用于3D渲染。与大多数色调映射曲线一样,它在对比度范围的中心焦点处是相当线性的,然后逐渐向外,将亮和暗的长尾巴平滑地压缩到所需的零到一输出范围。其思想是,与场景的大部分相比,人类感知的过亮和过暗区域之间的差异较小。然而,由于为额外明亮的高光保留了一定的输出范围,因此表示亚光baseColor输入范围的剩余范围同样有所减少。这就是为什么纸白色球体不会产生白色像素。

有时,在处理哑光对象并尝试将输出色彩与baseColor进行比较时,你会注意到这种色调映射压缩,并将其识别为明显色调差异的来源。通常马上想到的办法是,通过不应用色调映射来解决这个问题。

但问题是“无色调映射”并不存在,因为不知何故,unbounded输入范围必须转换为编码器期望的zero-to-one范围。如果不执行这个步骤,编码器将简单地钳制这些值,相当于一个具有尖角的分段线性色调映射函数,并会为有光泽的对象引入感知错误,如下面的示例所示。

无我VR 聚合新闻

请注意,即使不增加曝光,你都无法区分闪亮和哑光白色塑料球。由于哑光白色球体的一半现在渲染为纯白色,因此没有足够的净空来容纳闪亮的高光。同样,由于通过钳制值移除了着色,所以球体的上半部分将失去其3D外观。勾选复选框以返回ACES色调映射,从而进行快速比较。切记,在切换后再回头看。人类感知的另一个技巧是它对锚定的依赖程度。从饱和黄色切换后,黄色看起来会立即褪色,但环顾四周后,这种感觉会消失。

这个例子同时突出了良好色调映射函数的第二个关键元素:去饱和过度曝光的色彩。查看金色球体(左下角),并与应用ACES色调映射的上一版本进行比较。金属的baseColor与入射光相乘,因此金色球体上的白光会产生黄色反射(完全饱和的黄色,在这种情况下是完全饱和的baseColor)。使用钳制色调映射时,高光确实是饱和的黄色,但这在视觉上看起来并不正确,即使你可以证明它在物理上是正确的。

好的色调映射曲线(如ACE)不仅会压缩亮度,而且会将色彩推向越亮的白色。这就是为什么金色球体的高光会变成白色而不是黄色。这遵循了相机传感器和我们眼睛在对过度曝光的彩色光做出反应时的行为。你只需观察蜡烛的火焰或火花就能看到这种效果,其中最亮的部分尽管色彩不同,但看起来都是白色的。对于感兴趣的读者,英伟达在这里提供了更多关于色调映射和HDR的详细信息。

避免色调映射的最后一种方法是选择曝光,令所有像素都在[0,1]范围内,从而避免值钳制。对于具有低动态范围照明的哑光对象,这可以提供半体面的结果,但对于有光泽的对象,它会完全崩溃,如以下屏幕截图所示。

无我VR 聚合新闻

8.我们可以得出什么结论?

遗憾的是,没有简单的答案,因为色彩和感知是复杂的,甚至比基于物理的渲染更复杂。希望这个背景介绍能够为你的创作和验证过程提供一个框架。关于PBR,需要记住的最重要一点是,渲染色彩与材质baseColor相比会有所不同,这使得下面的演示非常逼真。

无我VR 聚合新闻

请注意,产品的色彩在每个环境中有多大的不同,但这正是使其看起来逼真的原因

新闻媒体更多>>
  • VR网
  • Yivian
  • 青亭网
  • 麦逗VR
  • VR陀螺
  • 魔多VR