您当前的位置:首页 VR开发 图形|算法 正文

基于物理渲染(PBR)的车漆技术

查看: 1160| 评论: 0 2017-9-15 05:45 PM| 发布者: administrator |原作者: congcong009

前段时间研究车漆,话说电影《老炮》里被划伤的恩佐补漆要了六爷10万,观众的第一反应都是我去这么贵,富二代你敲诈吧!但是贵吗?想想真不贵,估计还不止!亲身经历补漆的时候,听四爱思店小哥吐槽调漆喷漆有多麻烦,色差稍有不对就是一扇门白一扇门灰,好车做漆那都是全车一起做。更何况炭纤维车身的恩佐,重新走一次喷烤磨收才收10万,良心富二代啊!

车漆和PBR(基于物理渲染)技术

真实车漆

按照传统 Diffuse+Spec 的 Shading 着色模式,稍微加点 Mix 属性,你用任何3D 软件,都大概能得出这么个效果:

车漆和PBR(基于物理渲染)技术

眨眼一看真不错,要是在学校这个当作业肯定拿高分了。不过如果把这个效果贴到论坛,你会发现大部分的反馈无外乎是『啧啧效果不错,可就是反光太强,过爆了』『 真棒!但和真实的车漆效果总有点哪里不一样呢?』。不错,这是一个很棒的3D 效果,但现在大众对 CG 效果的审美已不再是简单的渲染效果,而是被主流电影和特效带入到了一个非照片真实感不赞的阶段。你能做出这个效果,基本上可以说对材质的理解很到位了,可怎么在这个基础上做点提高呢?我们再看个别人做的车:

carpaint_8

仔细对比下是不是可以发现以下几个区别:

  • 别人的车在边缘处有光线的环境光细节,例如车顶和地盘区域。
  • 别人的车在高光位置存在两种边缘效果,远景面光源处是柔光渐变,近景反射处是硬线条的高光感。
  • 别人的车在材质通透感上更富有层次,红色和淡淡的橙色在不同区域的渐变效果不一样。

好吧,原来别人的车是有这么多细节的!看来我们有必要研究下真实世界的车漆是如何构成的。

真实世界车漆

下面这张图是一个工艺范例:

车漆和PBR(基于物理渲染)技术

在车身钢板之上,有电泳层、中涂层、色漆层和清漆层四个漆层组成,这四个漆层共同构成了我们目视所得的车漆层,如果你车要是被刮花了得补,修补的车漆仅相当于部分中涂层+色漆层+清漆层。每一个漆层的作用大致如下:

  • 电泳层:直接附着在白车身上,对车身有防腐保护,并为中涂层提供良好的附着环境。
  • 中涂层:附着在电泳层上,防紫外线,保护电泳层,并加强车身的防腐保护,为色漆层提供良好的附着环境,部分厂商的中涂层也能对色漆的色相起一定的衬托作用。
  • 色漆层:附着在中涂层,进一步加强车身的防腐保护,并展示色相,我们看到的各种颜色就是色漆层展示出来的。
  • 清漆层:附着在色漆层,更一步加强车身的防腐保护,并保护色漆层不受微小的刮擦,使颜色更透亮,减缓褪色现象。

所以在车漆制作过程中,喷完漆都要用烤的,让车漆快速烘干的同时,还能增加下一层漆的附着力。如果采用的是油性漆或水性漆,烘焙工艺和顺序也会不一样。那么,如果你的车要是被刮到了这个份上:

carpaint_1

划痕深到了底漆,补漆的时候就一定会出现色差或者厚度不均的情况,甚至颗粒度都有不匀产生橘皮效果的。这事你还真不能怪修车师傅打磨不用心,或者嫌赚的钱不够手上劲就松了点之类,而是这种涂层由于没有重新走从电泳就进烤房的流程,瑕疵难免的。

恩,歪楼了,我其实想说的是,开车一定要注意,平时也要多多保养不要任凭鸟屎粘在上面还放太阳下面烤,原厂漆弄坏了真可惜,恩佐的补漆费用这么一合计(算账一定要算上国内支持该车的设备成本和对应工时费),是不是你也觉得这富二代可真没讹诈六爷了吧!

好吧,我真实想说的是,车漆的视觉表现是由其物理特性来决定的,他不是我们普通看到的石头或者陶瓷,表面的反射和折射等光学效果如此单纯,他在不同环境和光线下表现的层次和色彩都会不一样。也正因为如此,我们的眼睛平时看惯了大街上的汽车,即使我们不知道为什么效果是这样,但也能第一时间感觉出我们用传统手段制作出的车漆不够真实。

那么车漆大致分为几种效果呢,简单分类如下:

  • 普通漆(素色漆):合成材质包括树脂、颜料和添加剂。最常见的颜色有白色、大红色和黄色。一般便宜的五菱宏光这些都是采用这类漆,色彩很纯,没有其他的层次感。车漆和PBR(基于物理渲染)技术
  • 金属漆:在素色漆中加有细微金属粒子的一种涂料,还能增加车漆硬度,是目前流行的一种车漆。最常见的是加有微细的铝粉,光线射到铝粒上后,又被铝粒透过漆膜反射出来,亮晶晶的。车漆和PBR(基于物理渲染)技术
  • 珠光漆:加入了云母粒,于是他的反光的方向性导致了色彩斑斓的视觉效果。它的抗氧化能力强,一般多出现在高端车型上。但是珠光漆修补比较麻烦,费用也相对较高一些。车漆和PBR(基于物理渲染)技术

现在市面上还有一些后端技术来调整漆面效果,例如封釉镀膜镀晶,但都是起保护作用为主,对视觉影响较小。改装车的话一般会用到哑光漆,或者其他无限骚包效果的花样贴膜,另外还有特种车辆例如军车(量产方式)是必须亚光不能有反光,这里都不单独讨论了。

了解如此,我们大致可以对车漆效果有了一定概念定位,要做什么材质的效果就可以按照其生产原理设计材质了。

CG 车漆

但是,我们在一些广告片或海报中,又会发现另外一个问题,那就是同一辆车在工作室灯光模式下和户外模式下的效果又不一样,例如下图对比:

车漆和PBR(基于物理渲染)技术这是一个标准的户外光影车漆效果,其光源采用的是环境光,对应3D 制作就是 HDR 照明模式。其表面车漆效果和前面的麦克昆基本一致,具备了和环境光线产生交互影响的细节,边缘明亮,特别是高光线条,动感十足。

车漆和PBR(基于物理渲染)技术

这是一个标准的室内拍摄片,其光影采用的是面光源等轮廓照明方式,沿着车身的位置做区域性打光,光线边缘柔软,车漆本色和高光过渡平缓,而有大幅度转折的位置才会出现明显的高光线条,目的是突出车身的造型细节。例如门上的一个凹槽轮廓,在这种角度光下可以看到明显的轮廓线,这在上面的那个效果图中是看不出来的。

那么打开 Blender 吧,我们按照刚才的思路,以分层的方式添加车漆效果,大致节奏如下图:

车漆和PBR(基于物理渲染)技术

设置一个基础场景,利用反光板作为打光设置,我喜欢红色,改下,效果如下:

车漆和PBR(基于物理渲染)技术

可以看到,按照真实车漆的制作,其实在反光板下会呈现出边缘明晰的高光效果,这其实是环境光效果下期望的效果,当然如果里觉得这个效果复核你的需求,也是可以的。可是这就和上面白色奔驰车的室内效果图略有区别,因此要想获得不一样的效果,不得不去修改材质。当然,不浪费这个材质,我将环境光设置为 HRR 照明模式,如下图所示。

车漆和PBR(基于物理渲染)技术

可以看到,光线的包围感更强,线条和光线层次很清晰,完全符合对一张效果图的制作需求。

对比发现,如果要制作的场景不同,那么在光线设计上会有不一样的思路和方法。而我们的材质展示是否会因此受到影响呢?毕竟光线和材质在不同场景中已经出现多对多的情况。根据上面测试,我不得不制作两套材质,放在不同环境光照和片面光照下,分别获得了希望得到的效果,效果如下:

车漆和PBR(基于物理渲染)技术车漆和PBR(基于物理渲染)技术

从上图可以看到,如果不分别调整材质,还真难获得对应的效果,而这两个材质的区别,也在于对菲涅尔和反光等属性的调整。那么问题也来了,是否可以有一种方法,让材质设计变得更简单,我只考虑其物理属性,不需要根据不同灯光设计甚至环境去做独立的设置呢?这样是否可以大大减少去应对不同场景下材质重复设计的压力,特别是游戏和动画等需要各种转场的案例。最近这段时间里,我一边尝试一边试图找寻答案,最后我发现了 PBR (Physically Based Rendering /基于物理的渲染)技术!

什么是 PBR?

其实不是一项特别新的技术,我搜索了下历史,大概2010年就在 Siggraph 会议上被提出了技术原型。最近随着游戏越来越多地使用3A 技术以及次时代制作手段去呈现 CG 级游戏画面,手游引擎 Unity5也完全支持 PBR,影视动画公司在为优化视觉效果的同时,尝试借助该技术去降低劳动压力,所以当皮克斯宣布为了 PBR 体系去修改了 Renderman 的架构时,PBR 在主流圈中逐渐火了起来。

PBR 不是仅针对材质,他其实是一个系统性渲染流程,包含了光线、材质、纹理、色彩管理等。在这个体系当中,无论是经由物理化材质实现的光照、阴影或者色彩变化,还是物体表面的材质特征都将会有非常大的提升。

PBR 看似如此复杂的技术,但背后的原则却很简单,就两条:

  1. 光线能量守恒定律。
  2. 菲涅尔效果无处不在。

光线能量守恒

物理上大家都了解能量守恒定律,这里我们用同样概念来理解光线。Specular 高光反射光与 Diffuse 漫反射光其实是相互排斥的,有你没我的感觉,因为离开表面的光总量不能比其接受的入射光强,两者的综合值加起来不能超过1,这意味着,如果你的希望材质有较高的高光反射效果(高反射率),就需要要去降低漫反射,能量守恒是 PBR 的一个重要的指导思想,可以让系统计算光线效果时,不会违法物理定律。

车漆和PBR(基于物理渲染)技术

上面这个图表现的,就是对于同一个材质,在100%的漫反射到100%的镜面反射转化过程中,光线总量是不会变化的。而我们的视觉路径大致是这样的:

车漆和PBR(基于物理渲染)技术

其实任何物体都会对光线有吸收,称之为平面散射,光线在接触物体后会分为两部分继续前进:进入物体表面的部分(折射,在物体内部传播中被吸收或散射),从表面出去进入人眼(反射)。

车漆和PBR(基于物理渲染)技术

但因为物体的表面材质不同,表面光线的方向变化也会有区别。平滑的表面偏移比较轻微,从而反射光的方向变化也较小,有了较清晰的反射,如上面图效果。而下面的表面粗糙,表面方向的变化范围也较广泛,反射光的方向变化也比较大,出现了模糊的反射。通常我们在材质中会用 Roughness 参数来控制,有时俗称这是在添加磨砂效果。

这里还有一点误区,就是我们常理解只有水这样的液体或果冻类软体,会存在光线穿透再折射或反射(通常使用 SSS 效果来表现这种质感),在现实世界中,我们如果只是看 Specular 高光效果,那这个理解是没问题的,但 Diffuse 漫反射呢?

车漆和PBR(基于物理渲染)技术

对于任何一个物体,当产生漫反射的光线到达物体表面时,一部分会经过折射,被材质吸收(或者说转变为热能,这就是太阳下的石头越烤越烫的原因),或者在内部进行散射。一部分散射光最终会重新返回表面,再从表面折射出来,并被摄像机或眼睛所捕捉到。那么形成漫反射效果的光在被物质吸收并散射后,会成为不同波长的光(也称跨越光谱),这也就给予了物体不同的颜色,比如金属会吸收所有的穿透光,也就没有任何漫反射部分,但金属氧化的部分会和一些表面残留物,构成少量的散射光,形成不同的颜色,而正因为散射的混乱比较均匀,从每个方向看起来都是一样,所以这点和镜面光效不一样。看个图就能明白了。

车漆和PBR(基于物理渲染)技术

所以你看,其实金属的漫反射属性是为0的。这样思考之后,就会发现一个问题,这和我们平时制作材质的思路好像有点不一样了呢?对,不过要将这种反射思路混合起来,还需要了解最重要的一个参数,就是刚才提到的,无处不在的菲涅尔效果。

Fresnel 菲涅尔属性

菲涅尔指的是:光在光疏介质传递到光密介质的时候,在一定的角度下会发生全发射。公式为sinc=n1/n2。其中两个n分别为两种介质的折射率。角度C为全反射的临界角度。听不懂是吧,哈哈太科学了,换个简单的方式解释吧,看个图。

车漆和PBR(基于物理渲染)技术

有没有发现,其实湖水是相当清澈的,我们看近景位置,水的穿透效果真好,水底一览无余,但是越往对岸看去,越发现水的反射效果越强,在最远处,也就是平面和视觉夹角最小的位置,可以看到湖面几乎成了一面镜子(100%的反射)。那么我们就可以用菲涅尔来定义这种效果,其指代的是材质的反射率和入射角(也就是光源入射向量和平面法线向量的夹角)的对应关系,也就是说,入射光的角度越大,反射率也会越强。

PBR 理论中,就是重点借助菲涅尔来修正材质的光线关系,这里略枯燥,但很重要哦,看下图!

车漆和PBR(基于物理渲染)技术

这是一个黑色的塑料材质,我们就称之为通用的非金属效果,其中,越接近边缘橙色区域,也就是视觉角度达到了90度,材质反射率可以无限趋近100%,而平视角度的反射率接近物体本身的值。对应现实中,水和液体的物理反射率是2%,砖块8%,其他有机材质和塑料是5%,半导体和晶体是15%~50% ,那么金属呢?看下图。

车漆和PBR(基于物理渲染)技术

我们可以看到,金属本身的反射率就是60%~90%,而当视觉角度逐渐加大时,金属和非金属都会无限接近100%反射,他们之间的唯一区别也就是效果的跨度感了。所以,制作材质的时候,是不是我们只需要设置物体的起始反射率就行了,剩下的逼近效果就留给系统自己完成,如何?

那么 PBR 中通常就会使用到前面讲到的 Roughness 光泽度属性,为物体提供一个基础反射率,设置其表面的最小反射值,然后剩下就交给系统,让其自动解算菲涅尔曲线,以满足不同角度的效果需求。

恩,终于在原理上说通了,那么系统内怎么处理 PBR 呢?


12
52VR.COM微信扫一扫
52vr公众号
专注于VR的学习、开发和人才交流

52VR开发交流

已有 0 人参与

发表评论

您需要登录才可以回帖 登录 | 立即注册

手机版|VR开发网 |网站地图 统计  津ICP备16006248号

GMT+8, 2017-12-18 01:49 AM

返回顶部