欢迎光临散文网 会员登陆 & 注册

大聪明都能看懂的光照模型(Phong模型)

2023-06-07 21:55 作者:轩少T_T  | 我要投稿

    随着UE5发布,动态全局光照,光线追踪,lumen等词如雨后春笋般呼啦啦,哗哗哗的出现在公众号和各种视频中,基于辐射度量学的几乎完全模拟了光线传输过程的各种算法,将游戏的真实感提升到了从前难以想象昂的高度。但是在那个没有lumen on,rtx on的年代,人们又是靠什么来呈现画面真实感的呢?今天来聊一个完全,完全,完全靠经验搭建起来的图形学入门之避不开的噩梦之 《Phong光照模型》

    phong模型呢首先是这么说的,首先他认为,当场景中没有灯光的时候,物体摆到场景中不能是黑的,那黑乎乎一坨啥玩意没有那哪行呐,所以,当场景中没有光的时候phong认为要给物体一个基础颜色,最起码让人能看着点什么玩意,这时候能让你看着些玩意的光给个学名就叫环境光。环境光 环境光,环境里面啥玩意也没有的光,是不是听起来就特别合理。

    这个光是一个很公平的光,只要你在场景中,所有物体雨露均沾,所以我们可以用一个常量来表示。考虑到光照出来应该是衰减的,所以给一(0, 1)的常量就可以了。大概会产生这样一个塑料感满满的样子

    这玩意塑料感还是其次,主要是各点给了一样的值以后根本看不出来正反面,上图中是一个立方体,但眼神不好的人还真一眼看不出来,而phong模型的第二个组成部分漫反射,咔咔咔就把这个问题解决了。

    漫反射是怎么描述的呢,我们先来看这么个图

    黄色箭头指的是该着色点的法线,phong认为着色点的漫反射分量应该和光照角度有关,具体的说就是光照方向和法线的夹角越小,这一点的漫反射分量就应该越强,漫反射,就有辣种光打到一个点向四面八方散开的感觉,所以说呢,光肯定是垂直打到着色点返回来的光是最强的即最亮的,而和法线方向夹角越大,光散射出去的能量就越多,也就越暗,当光和法线垂直打进来的时候,自然能量也就全部扩散出去了,应该就是黑的。

    总结一下,漫反射和灯光与着色点的夹角有关,并且关系是夹角越小越亮,夹角越大越暗,0度时候最亮,90度时候最暗,诶有,这么说的话是不是就和这个玩意比较像

    对,这个地方就是可以用光线入射方向的矢量和法线向量的余弦值来表示漫反射的大小,但是计算cos比较浪费时间,我们可以用

    由于a b都是单位向量,所以可以用点积代替夹角余弦值。还有注意的是矢量夹角大于90度的时候点积为负数,我们需要做一个>0的保护。综上漫反射为

    加入漫反射项以后就可以清晰的看到物体的正反啦!

    phong模型的最后一项是所谓的高光项,也叫镜面光项,听这个名字呢就感觉这一项跟光线的反射有关,实际上确实也是这样,如下图所示

    镜面光描述了光源经过反射进入人眼的强度,当反射光的方向和人眼的夹角越小时,光越亮,所以镜面光刻描述为

    当人眼视线与反射光方向一致时,高光会非常亮,我们在这里给高光计算结果加一个pow函数来模仿这一现象。由此得到镜面光。

    将环境光 漫反射 镜面光三种光源相加,便能够得到phong模型的最终渲染效果

    ok,以上就是phong光照模型。

大聪明都能看懂的光照模型(Phong模型)的评论 (共 条)

分享到微博请遵守国家法律