码迷,mamicode.com
首页 > 其他好文 > 详细

光照模型

时间:2020-06-06 09:18:01      阅读:84      评论:0      收藏:0      [点我收藏+]

标签:颜色   光照模型   不同   spec   亮点   inline   不同的   技术   hat   

漫反射

兰伯特光照模型

\(c_{diffuse} = (c_{light} \cdot m_{diffuse})max(0,\hat{n} \cdot \hat{l})\)

\(m_{diffuse}\)是材质的漫反射颜色
\(c_{light}\)是光源颜色
\(\hat{n}\)是表面法线的单位向量
\(\hat{l}\)是指向光源的单位向量
\(\hat{n} \cdot \hat{l}的结果截取至0是因为要防止物体被从后面来的光源照亮\)

半兰伯特光照模型

\(c_{diffuse} = (c_{light} \cdot m_{diffuse})(0.5(\hat{n} \cdot \hat{l}) + 0.5)\)

通过这样的方式,我们可以把\(\hat{n} \cdot \hat{l}\)的结果范围从[?1,1]映射到[0,1]范围内。也就是说,对于模型的背光面,在原兰伯特光照模型中点积结果将映射到同一个值,即0值处;而在半兰伯特模型中,背光面也可以有明暗变化,不同的点积结果会映射到不同的值上。
需要注意的是,半兰伯特是没有任何物理依据的,它仅仅是一个视觉加强技术。

高光反射

Phone光照模型

\(c_{specular} = (c_{light} \cdot m_{specular})max(0, \hat{v} \cdot \hat{r})^{m_{gloss}}\)
\(\hat{r} = 2(\hat{n} \cdot \hat{l})\hat{n} - \hat{l}\)

\(m_{gloss}\)是材质的光泽度,也被称为反光度,它用于控制高光区域的“亮点”有多宽,\(m_{gloss}\)越大,亮点就越小。
\(m_{specular}\)是材质的高光反射颜色,用于控制该材质对于高光反射的强度和颜色。
\(\hat{r}\)是光线的反射方向。

Blinn-Phone光照模型

\(c_{specular} = (c_{light} \cdot m_{specular})max(0, \hat{n} \cdot \hat{h})^{m_{gloss}}\)
其中:
\(\hat{h} = \frac{\hat{v} + \hat{l}}{\left|\hat{v} + \hat{l}\right|}\)

Blinn-Phone模型为了避免了计算反射方向\(\hat{r}\),引入了一个新的向量\(\hat{h}\),它是通过对\(\hat{v}\)\(\hat{l}\)取平均再归一化得到的。

光照模型

标签:颜色   光照模型   不同   spec   亮点   inline   不同的   技术   hat   

原文地址:https://www.cnblogs.com/winsons/p/13029647.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!