兰伯特光照模型(Lambert Lighting)和半兰伯特光照模型(Half-Lanbert)
关于漫反射
光打到凹凸不平的平面上,光线会被反射到四面八方,被称为漫反射
关于这种模型,由于光线由于分散,所以进入人眼的光线强度和观察角度没有区别
在A点和B点接收到的光线强度是一样的
在漫反射下,光线强度只和光的入射角度有关
关于法线和叉乘
法线,是指始终垂直于某平面的虚线,这是在二维平面下的法线
叉乘是求一条垂直于平面的向量
可以用叉乘求出物体的法线
关于点乘
点乘表示A在B方向上的投影与B方向的乘机,反映了两个向量在方向上的相似度
计算公式为:
兰伯特光照模型(Lambert Lighting)
diffuse = I*cosθ
其中I为入射光强度
cosθ为光源方向和顶点法线的余弦,也就是两者的点乘,这个值越大,则cosθ越大
但是如果光在物体背面,则这个值为负数,于是就归为0就可以了
然后再乘上材质的颜色就是最后的颜色值了,也就是下面的完全公式
Diffuse = 直射光颜色 *材质颜色 * max(0,cos夹角(光和法线的夹角))
在辐射度量学之前,图形学一直处于一个想当然的境地
这个公式是在1760年提出来的,这个公式完全是经验公式,看起来像那么回事就可以了
但是兰伯特光照模型有个弊端,就是在物体打不着光的一面完全是黑色的,会“不那么好看”
于是就有了半兰伯特光照模型
半兰伯特光照模型(Half-Lanbert)
在1998的《半条命》的游戏引擎中,使用了半兰伯特的光照模型
这是Valve官方开发者文档上的原句
"Half Lambert" lighting is a technique first developed in the original Half-Life.
Half Lambert - Valve Developer Community (valvesoftware.com)
在半兰伯特光照模型公式中
Diffuse = 直射光颜色 * 材质颜色 * (dot(光源方向, 法线方向) * 0.5 + 0.5)
在光在物体的背面的时候,最后的计算结果也会有明暗变化
这样物体就会”好看多了“
兰伯特光照模型(Lambert Lighting)和半兰伯特光照模型(Half-Lanbert)相关推荐
- Unity Shader漫反射光照模型与半兰伯特光照模型
文章目录 一.基础光照模型中漫反射部分的计算公式 二.逐顶点光照实现 逐顶点代码 逐顶点效果图 三.逐像素光照模型实现 逐像素代码 逐像素效果图 四.半兰伯特光照模型实现 广义半兰伯特光照模型公式 半 ...
- 【Unity Shader】(2)半兰伯特模型 构建光照
在unity的Shader中使用半兰伯特模型来构建光照 在认识半兰伯特模型之前,建议查看一下我之前的兰伯特模型构建光照 兰伯特光照模型 半兰伯特光照模型 由于兰伯特模型的计算公式仅截取了[0,1]的光 ...
- 兰伯特(Lambert)光照模型总结
兰伯特光照模型是经验模型,主要用来模拟粗糙物体表面的光照现象,即漫反射. 漫反射特点 1:反射强度与观察者的角度没有关系 2:反射强度与光线的入射角度有关系 漫反射光照符合兰伯特定律(Lambert' ...
- 9.半兰伯特光照模型
前情提要:前面一节的漫反射实际上是根据兰伯特光照模型来进行实现的 但这种做法有个缺点就是顶点法线和光的夹角大于90度的时候的成色是完全黑的这和我们生活中见到的事物是不一样的.所以就有了新的光照模型-- ...
- 标准光照模型-半兰伯特模型
Valve公司在<半条命>中提出了一种技术,叫做半兰伯特光照模型 通过这个方式,可以把点积的结果从[-1,1]到[0,1]范围内,也就是说,对于模型的背光面,从原模型中点积结果会映射到同一 ...
- Unity shader学习-漫反射-兰伯特光照模型和半兰伯特光照模型
兰伯特漫反射公式:Diffuse = 直射光颜色 *物体颜色* max(0,cos夹角(光和法线的夹角) ) 下面给出顶点漫反射代码: Shader "Unlit/005" { ...
- 庄懂老师TA学习笔记 - 半兰伯特光照模型
先看一下兰伯特光照模型的公式 Max(0, nDir ·lDir) 通过公式我们知道,当法线方向和光照方向的反方向的角度大于90度时,点乘就会出现负数的结果,所以我们使用与0取最大值来排除掉这些没有实 ...
- Shader学习3——半兰伯特
半兰伯特其实就是把暗的地方提亮了一些,在数值上就是获取到的光源强度* 0.5 + 0.5,也就是原来是0的会变成0.5,原来是1的还是1. 半兰伯特:漫反射颜色 = 光源颜色 x 材质的漫反射颜色 x ...
- 漫反射:兰伯特和半兰伯特
兰伯特定律(Lambert is law); 反射光线的强度与表面法线和光源方向之间夹角的余弦值成正比: 漫反射公式:C diffuse=(C light * M diffuse)max(0, < ...
最新文章
- c语言中 允许函数重载么,简述C++语言支持函数重载问题介绍
- delphi SAP
- MyBatisPLus3.x中代码生成器自定义数据库表字段类型转换
- Kettle使用_18 分组组件计算百分位数
- 小便利——免密钥简单写法
- 3d vision可以卸载吗_金属粉末可以用于3D打印,但这些知识你了解吗?
- zabbix监控suse linux,SuSE 系统之部署 Zabbix 监控服务
- 解决maven打包报错:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.3.2
- python上网行为分析_python实战练手项目---获取谷歌浏览器的历史记录,分析一个人的上网行为...
- javascript动画系列第二篇——磁性吸附
- 勤哲excel服务器端口协议,用勤哲Excel服务器实现管理完整.doc
- 程序员转实施工程师_实施工程师到底做什么的?我认为比程序员接触面更广
- qrc路径_Qt中的qrc文件
- 黑客是怎么攻击网站的(网站渗透入侵全部教程)
- BP神经网络算法及Matlab实现
- three.js中正交和透视投影相机的应用
- 银行家算法02--申请资源 (操作系统)
- 手机淘宝——flexible.js 移动端自适应方案
- iOS 打开第三方应用
- 小米手机MIUI关闭广告