【风宇冲】Unity3D教程宝典之Shader篇:第十九讲凹凸贴图

原创文章如需转载请注明:转载自风宇冲Unity3D教程学院


                                 Shader第十九讲  凹凸贴图


本讲分为两个部分
一:原理
二:实现

                                                        一:原理

(1)眼睛与光
让我们来看看一个粗糙的表面。
     
【风宇冲】Unity3D教程宝典之Shader篇:第十九讲凹凸贴图


  从远处看,你判断这个物体是粗糙的的唯一证据是在它表面上下的亮度有改变。你的大脑能够获得这些亮暗不一的图案信息,然后判断出它们是表面中有凹凸的部位。左边的一幅图就说明了这一点。你可以发现它是一个浮雕式的表面。一些矩型和字母被印入表面,但是它们摸上去就像是一个隐藏的监控器的玻璃。如果这个图像是在适当的位置上,那么它除了改变亮度,不需要再做任何其他的工作。

  那么你也许会问:我是怎么知道哪些点要亮,哪些点要暗呢?这不难。绝大多数人生活在这样一种环境下——这个环境的大多数光源来自上方(译者注:比如白天主要的光来自太阳,夜晚主要的光来自天花板上的日光灯)。所以向上倾的地方就会更亮,而向下倾的地方就会更暗。所以这种现象使你的眼睛看到一个物体上亮暗区域时,可以判断出它的凹凸情况。相对亮的块被判断是面向上的,相对暗的块被判断是面向下的。所以我只需要给物体上的线条简单得上色。

  如果你想要更多的证据,这里还有一幅几乎相同的图,不同于前的是它旋转了180度。所以它是前一幅图倒转的图像。那些先前看起来是凹进去的区域,现在看起来是凸出来的了。
   【风宇冲】Unity3D教程宝典之Shader篇:第十九讲凹凸贴图   

  这个时候你的大脑并没有被完全欺骗,你脑中存留的视觉印象使你仍然有能力判断出这是前一幅图,只是它的光源变了,是从小往上照的你的大脑可能强迫性地判断出它是第一幅图。事实上,你只要始终盯着它,并且努力地想像着光是从右下方向照射的,你就会理解它是凹的(译者注:因为日常生活的习惯,你会很容易把这些图形判断成凸出的图形,但是因为有了上一幅对照图的印象,你可能才会特别注意到这些图块其实还是凹入的,只是判断方法不符合我们日常生活习惯,因为这时大多数光不是从上方照射,而是从下往上照射)。

(2)法线
之前15讲提到过,法线对光的反射很重要。而一般来说一个三角形上某点的法线就等于垂直整个三角型的法线。但是我们可以通过灰度图或者从法线贴图取得法线,达到更真实的画面效果。


                                                     二:实现

(1)与灰度图叠加 
这种方式也叫 fake bump mapping,假凹凸贴图。 因为并没有改变物体表面点的位置或者法线。仅仅是 把Bump Map叠加在已经渲染好的表面上 ,造成亮度上的扰动 ,从而让眼睛以为是凹凸的。 计算复杂度是基本加减法。缺点是并不会随着光方向的改变而改变明暗区域。

(2) 生成法线
由于(1)的方法有不能对光进行反应的硬伤。于是有了更逼真的方法:用高度计算法线。
高度 计算法线的方法比较多,这里主要介绍的是CG里广泛采用的一种。
方法:
在对灰度图上的点采样的时候,不单取该点的高度Hg,而且取该点之右 的点Hr 和该点之上的点Ha
以这三个点作2个向量:第一个向量V1是(1,0,Hr - Hg) 第二个V2是(0,1,Ha - Hg)
法线为 单位化后的 v1与v2的向量积

如果把结果储存在一张图上,那么就生成了法线贴图了。 Unity3d能替我们做这些,将灰度图转换为法线贴图。就是下面的(3)

(3) Unity里高度图转法线贴图
具体步骤:
1)导入heightmap
2)选中之后将Texture Type改为Normal map
3)勾选Create from Grayscale
4)Apply
之后就看到unity里该图直接变成了呈蓝色的法线贴图。
【风宇冲】Unity3D教程宝典之Shader篇:第十九讲凹凸贴图





PS: 
Unity3D里自带的Bump Map Shader,即Bumped Diffuse等Shader是法线贴图的方式。也就是用的是RGB的法线贴图,一般呈蓝色。Unity自带的Shader是没有直接使用灰度图的,而提供能是灰度图转法线贴图的功能。


本文部分内容出自
http://freespace.virgin.net/hugo.elias/graphics/x_polybm.htm
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值