zoukankan      html  css  js  c++  java
  • 进阶光照与材质之物体和材质

    第四章主要介绍分析真实世界中某些常见材质的特性与细节,作者提醒我们应该时刻关注大自然真实世界中材质的特点,加强自己的思考与敏锐的观察力和感知力对渲染实现很有帮助。
    作者主要对如下材质进行了分析:
    塑料
    木头:树,木材,被油漆过的木材
    叶子和植物
    金属
    混凝土和石头:混凝土,砖石,自然界的石头
    皮肤
    头发和毛发
    大气
    半透明材质:玻璃,水
    油漆
    旧的磨损的材质



    塑料

     
     
    塑料有很多种颜色形状甚至有的上了不同的漆,但是它的材质构成是一致的。
    大部分塑料由白色或半透明的基质构成,这些基质充满了染色粒子,像下图这样
     
    当 光照射到塑料物体上时,一些光在最边上的表面反射,在一些特别的角度我们会看到光的颜色(高光点)并且部分变为白颜色(塑料基质的颜色)。一些光穿透物质 并且从染色粒子处反射,这些粒子将会吸收部分波长的光,并且反射,吸收的光的颜色我们看不到的,我们看到塑料的颜色全都是染色粒子反射的光。这个效果在光 滑的塑料上非常明显。
    在粗糙的塑料表面上光的穿透和反射不怎么均匀,此时的高光(镜面反射)范围很大而且亮度很淡,这由两个原因产生:
    1.粗糙的平面反射方向不相同,恰好被眼镜吸收的反射光少了许多
    2.因为平面粗糙,所以有细小的凹凸,有凹凸就会在表面上产生阴影,这些表面上凹凸产生的小阴影阻挡了入射光线
    塑料的高光颜色来自基质的颜色,所以基本上是灯光&基质(白/半透明)的颜色

    木头

    木头有很多种形式,森林里的树,家里的地板等等。

     
     
     
     
    渲 染树最重要的的就是渲染树皮和暴露的木头,在自然界中树皮因为树的生长而变得粗糙。树皮的所有细节都来自其几何构造,因为树皮的开裂和翘起而产生明暗关 系,翘起的树皮会带来阴影并且产生暗部,开裂的树皮内部收不到光线而变得黑暗。如果此时的树皮贴图取自真实的树的画切记要处理掉阴影和高光部,否则在游戏 中会带来错误的结果。
    还可能会有地衣苔藓等使粗糙度变得不同
    树皮的颜色也不统一,比如说桦树,如下图,一个树的树皮的颜色存在不一致,粗糙度也不相同,加一个额外的光泽度贴图可以解决这个问题
     
    另外想要模拟树的裂痕和翘起的几何处理也很简单,就是曲面细分加上displacement texture



    木材

     
     
     
     
    在木材的渲染中最值得注意的就是木材的纹理,可以通过对颜色的改变,比如一张贴图来简单的实现纹理,但是纹理包含有很多特性,在纹理处会有更多的凹凸和皱纹。其他地方的光泽度和粗糙度也各不相同(也许是因为树液和树油浓度不同分布不均导致)。
    木材是有一定程度的各向异性的,纹路的方向影响光反射的方式。

    被油漆过的木材

     
    一般的家具和地板都是被油漆过的木材,这种材质保留了木材原本的颜色,但是却有着光滑的表面能够反射大量光线,被亮光漆反射的光线比木材要多得多。不同的亮光漆有不同的反射颜色和效果。
    光泽度能体现一个材质的新旧,使用程度和质量,可以用一个变量来调节亮光漆的反射和原木的比重来反映油漆木材的新旧程度。但是如果此时木材很旧的话,注意木材颜色贴图也要做的很旧。

    叶子和植物

     

     

    就像树皮一样,渲染植物也不止是一张颜色贴图那么简单。它们存在叶脉和褶皱,大多数的叶子是一面光滑一面粗糙的,粗糙的一面甚至还有一些细小的绒毛相互影响光照的计算

    大多数的叶子和植物是半透明的,光能穿透照射到植物和叶子内部,导致植物和叶子内部反射、折射和吸收光线,产生了一种有趣的现象叫做次表面散射,使光照在叶片的背面,我们能从正面看到叶片的内部结构。

    Unity3d shader之次表面散射(Subsurface Scattering)

    当初在枝繁叶茂的雨林之中,大量的叶片挡住了许多光照,内部昏暗,此时抬头看到被光照到的叶子是明亮发绿的,说明还是会有部分光照穿透叶片照射下来,此时的光携带了叶片的颜色,所以当时的光照氛围是发绿的。

    Unity3d 真实的植物渲染



    金属


    无 绣的金属与塑料非常像,他们的表面都很光滑,所以高光都很强。但是他们不同的是,金属是电介质材质,塑料是非电介质材质,金属的反光更多的是自己本身的颜 色,而塑料高光更多的是光照的颜色。如下图比较,看下面对地板的反射,金的反射是金色,黑色塑料的反射还是地板的白颜色。
     
    二者的两外一个重要的区别是金属没有像塑料一样的的基质,除非在金属表面粉刷亮光漆之类的。
    另外,不同的金属的反射光线的方式也不同,因为他们的分子结构不同,所以他们在微观级别的反光不同。这种结构会导致金属反光因反光颜色的不同而不同。相同物质的表面处理不同反光方式也不相同,比如光滑的钢和打磨过的钢,如下图。
     

    混凝土和石头

    混凝土

     
     
     
    混凝土是由多种矿物和石头组成的,是一个复合材质,所以他们有不同的粗糙度和表面构造,并且存在大量的凹凸,产生许多小阴影,光源位置改变时,阴影也会随之改变,这又要注意取贴图的问题,切记在真实世界中取贴图要去掉高光,阴影,和当时光照颜色,还原最本真的材质。

     
     

    比较常见的是红砖石,表面依旧凹凸不平,并且每块砖的颜色都不相同。

    自然界的石头

     
     

    自然界的石头包含上面所说的的特性,不同的石头能给玩家带来处在真实环境中的感觉。
    有些游戏为石头建立的面数很低,这是不对的,因为真实石头的细节同时存在于几何和着色。

    皮肤

    皮肤渲染要在游戏中给人带来尽可能真实的效果,让玩家感觉就像在和真实的人互动一样,人皮肤的颜色基本上一致,有些地方会因为油脂的分布和褶皱、毛孔等存在表面结构的不同,和叶子一样也存在次表面散射现象。

    Unity3d 屏幕空间人体皮肤知觉渲染&次表面散射


    大气效果

    博主感觉这个不应该放到材质里讲。。。
    大气效果与游戏氛围息息相关,我们可以通过控制大气颜色,色调,浓度来传达游戏此刻的状态与氛围

    unity3d shader之实时室外光线散射(大气散射)渲染

    半透明材质

     
     
     

    半透明材质存在反射,折射与色差现象。

    Unity3d BTDF实时折射模拟有粗糙度的半透明物体

    色差:光学玻璃的折射率随通过的光波的波长变化而变,它对短波长的光的折射率比长波长的折射率更大,当白光通过三棱境时,我们可以观察到彩虹光谱。由对波长的折射率不同而引起的彩虹光谱称之为色散现象(Dispersion)。
     
    效果是这样的:
     
     


    玻璃

    反射,折射,还需要考虑厚度对折射的影响
    光滑的玻璃会反射周围环境,光线反射的数量与到眼睛方向的角度有关,对于曲面玻璃,比如高脚杯,远离眼睛的两侧(靠左右)比靠近眼睛的一侧(前面)反射程度更强
     

    磨砂玻璃与光滑玻璃的表面粗糙度不同,反射效果也不同
     

     
     

    除了对流体波动的处理,水与糖浆是不同的。还要注意水会产生焦散现象。清澈的水,浑浊的水,表面上漂浮着油之类的浑浊物。
    对于江河湖海,要处理眼睛与水的距离,离得近颜色改变,清澈见底,离得远只能看得见颜色。

    Unity3d PBR海水渲染

    unity3d 制造自己的水体water effect(二)

    unity3d 制造自己的水体water effect(一)

    旧的材质

    总结如下:磨损,擦痕,颜色变化,锈迹斑斑,性状改变


    近期更新下一章


    博主近期渲染:

    近期渲染


     

                                  ---- by wolf96












  • 相关阅读:
    20165212第八周学习总结
    20165212第八周课上测试补做
    20165212实验二面向对象程序设计
    Titanic生存预测
    聚类算法数据生成器make_blobs
    k-means
    监督学习、无监督学习与半监督学习
    在线Latex公式编辑器
    西瓜书课后习题——第四章
    ML经典数据集
  • 原文地址:https://www.cnblogs.com/zhanlang96/p/5371261.html
Copyright © 2011-2022 走看看