进阶光照与材质之物体和材质

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

塑料


 
塑料有很多种颜色形状甚至有的上了不同的漆,但是它的材质构成是一致的。
大部分塑料由白色或半透明的基质构成,这些基质充满了染色粒子,像下图这样
 

光照射到塑料物体上时,一些光在最边上的表面反射,在一些特别的角度我们会看到光的颜色(高光点)并且部分变为白颜色(塑料基质的颜色)。一些光穿透物质
并且从染色粒子处反射,这些粒子将会吸收部分波长的光,并且反射,吸收的光的颜色我们看不到的,我们看到塑料的颜色全都是染色粒子反射的光。这个效果在光
滑的塑料上非常明显。
在粗糙的塑料表面上光的穿透和反射不怎么均匀,此时的高光(镜面反射)范围很大而且亮度很淡,这由两个原因产生:
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

时间: 2025-01-11 08:07:12

进阶光照与材质之物体和材质的相关文章

osg复制多个相同物体修改材质属性问题

转自http://www.cnblogs.com/ylwn817/articles/2153982.html 当通过osg复制多个相同物体时候,修改复制过来的某个物体材质属性时候,假设我们物体透明度,这个时候我们可能会发现修改某个物体,会导致其他复制过来的物体同样也被透明化.下面是解决方案:获得物体时候,只能获得自身材质,而不能去获得孩子材质,如果修改孩子材质,将会导致其他复制过来的也会被透明. 如下是详细代码: osg::StateSet *state = iter->second->get

进阶光照与材质之光照和反射模型

第五章讲述了一些漫反射模型和镜面反射模型的原理和数学公式 博主在unity中实现了一下,把部分结果贴在上面 有下面几个主题: 渲染公式 基本光照定义 光照和lambert法则 双向反射分布函数BRDF 漫反射材质原理简介与模型 镜面反射材质原理简介与模型 基本光照定义 对于我们眼睛可见的光对于表面的作用,他们会发生,反射,穿透,折射,吸收,或者表面自发光. 对于所有物体的光照基本公式如下 如果表面不发光则EmittedLight为0. 接下来会讨论许多种形式的反射函数reflectance Fu

进阶光照与材质之模拟真实世界的光照

读书笔记第二章,加了许多博主的理解和补充. 第二章讲的也是基础知识,补充了博主许多知识缝隙. 介绍了四中类型光的光照模型,点光源,面光源,方向光,聚光灯,和他们的光照模型,还简单介绍了下GI. 这章的几个topics: 1.理想的点光源 2.几何衰减 3.光照通过物质的衰减 4.方向光 5.面积光 6.聚光灯 7.本地和全局光照模型 8.环境光 作者首先介绍了真实世界中一些光的例子,有各种各样的形状颜色和大小.实时渲染需要每帧都来计算所以需要注意权衡消耗,离线渲染就可以慢慢渲染计算复杂的高品质G

利用第三方材质对物体进行描边【UE4】【C++】

效果图: 第一步,创建C++ Basic Code 第二步,定义键盘和鼠标输入的映射 第三步,修改 Rendering 中的 Custom Depth - Stencil Pass 第四步,找到GlobalPostProcessVolume [如果没有的话自行拖放一个PostProcessVolume组件] 将 unbound 勾选上 再修改 Blendables 为 PPI_OutlineColored 完整代码如下: MyPlayer.h // Fill out your copyright

根据 “Interactive Simulation of Elastic Deformable Materials“模拟的FEM材质的物体

“Interactive Simulation of Elastic Deformable Materials“  是篇不错的论文 可惜里面公式推导有误,修改后能得到很不错的优点.和PDB相比有好几点优点 1.基于力学模型推导,应此约束产生的能量可以有真实的钢性系数 0 - INF 所以除了普通的软约束 更能在统一框架下处理碰撞等硬约束,这点远优于 projective dynamics 2.模型基于速度应此是位置的线性展开和PBD求解非线性约束不同 线性话后约束的梯度在一个求解步是固定值.因此

RGBA HSB opengl光照模型

RGBA HSB HSV颜色模型对应于画家的配色的方法.画家用改变色浓和色深的方法来从某种纯色获得不同色调的颜色.其做法是:在一种纯色中加入白色以改变色浓,加入黑色以改变色深,同时加入不同比例的白色,黑色即可得到不同色调的颜色 1. 几个概念 环境光——经过多次反射而来的光称为环境光,无法确定其最初的方向,但当特定的光源关闭后,它们将消失. 全局环境光——它们并非来自特定的光源,这些光经过了多次散射,已经无法确定其光源位于何处. 散射光——来自同一方向,照射到物体表面后,将沿各个方向均匀反射,因

【浅墨Unity3D Shader编程】之二 雪山飞狐篇:Unity的基本Shader框架写法&颜色、光照与材质

本系列文章由@浅墨_毛星云 出品,转载请注明出处. 文章链接:http://blog.csdn.net/poem_qianmo/article/details/40955607 作者:毛星云(浅墨)    微博:http://weibo.com/u/1723155442 邮箱: [email protected] 本篇文章中,我们学习了Unity Shader的基本写法框架,以及学习了Shader中Properties(属性)的详细写法,光照.材质与颜色的具体写法.写了6个Shader作为本文S

《逐梦旅程 WINDOWS游戏编程之从零开始》笔记8——光照与材质

第14章 绘制出质感的世界--光照与材质 1. 光照与光源 在Direct3D中的光源类型和光照类型是不同的两个概念,光照模型描述的是光线的反射特征,而光源类型主要强调的是能够产生这些光照模型的方式以及光线的位置,方向,强度等特征. 四大光照类型 环境光:基于整个自然界环境的整体亮度,称为环境光或者背景光,没有位置或者方向上的特征,只有一个颜色亮度值,不会衰减,在所有方向和所有物体表面上投射的环境光的数量是恒定不变的(有点像我们白天的自然光).在Direc3D中设置环境光可以直接使用setRen

OpenGL光照2:材质

本文是个人学习记录,学习建议看教程 https://learnopengl-cn.github.io/ 非常感谢原作者JoeyDeVries和多为中文翻译者提供的优质教程 的内容为插入注释,可以先跳过 前言 在现实世界里,每个物体会对光产生不同的反应,钢看起来通常会比陶瓷花瓶更闪闪发光,木头箱子也不会像钢制箱子那样对光产生很强的反射 每个物体对镜面高光也有不同的反应,有些物体反射光的时候不会有太多的散射(Scatter),因而产生一个较小的高光点,而有些物体则会散射很多,产生一个有着更大半径的高