光照模型作业
光照模型——精选推荐

光照模型光源类型定向光当⼀个光源很远的时候,来⾃光源的每条光线接近于平⾏。
这看起来就像所有的光线来⾃于同⼀个⽅向,⽆论物体和观察者在哪⼉。
当⼀个光源被设置为⽆限远时,它被称为定向光(Directional Light),因为所有的光线都有着同⼀个⽅向;它会独⽴于光源的位置。
//光源位置第四个参数 0.0 平⾏光 1.0 点光源light->setPosition(osg::Vec4(0.0, 0.0, 0.0, 0.0));//光源⽅向light->setDirection(osg::Vec3(0.0, 0.0, -1.0));点光点光是⼀个在时间⾥有位置的光源,它向所有⽅向发光,光线随距离增加逐渐变暗。
//光源位置第四个参数 0.0 平⾏光 1.0 点光源light->setPosition(osg::Vec4(0.0, 0.0, 0.0, 1.0));//设置恒定衰减系数light->setConstantAttenuation(1.0);//设置⼀次衰减系数light->setLinearAttenuation(0.7);//设置⼆次衰减系数light->setQuadraticAttenuation(1.8);聚光聚光是⼀种位于环境中某处的光源,它不是向所有⽅向照射,⽽是只朝某个⽅向照射。
结果是只有⼀个聚光照射⽅向的确定半径内的物体才会被照亮,其他的都保持⿊暗。
//光源位置第四个参数 0.0 平⾏光 1.0 点光源light->setPosition(osg::Vec4(0.0, 0.0, 0.0, 1.0));//光源⽅向light->setDirection(osg::Vec3(0.0, 0.0, -1.0));//光强度分布light->setSpotExponent(1.0);//扩散⾓light->setSpotCutoff(45.0);光照基础冯⽒光照模型(Phong Lighting Model)的主要结构由3个元素组成:环境(Ambient)、漫反射(Diffuse)和镜⾯(Specular)光照。
光照模型

S
N
S R V
简单光照模型-镜面反射
• 镜面反射光特点
– 空间分布具有一定方向性 – 光强不仅取决于入射光和表面材料,还与观察方向
有关 – 具有与入射光相同的性质
N R L
P
镜面反射
简单光照模型-Phong光照模型
• 简单光照模型模拟物体表面对光的反射 作用,光源为点光源 • 反射作用分为
• 1975年,Phong提出图形学中第一个有影
简单光照模型-Phong光照模型
• Phong光照模型的综合表述:由物体表面上 一点P反射到视点的光强I为环境光的反射 光强Ie、理想漫反射光强Id、和镜面反射光 Is的总和。
I Ie Id Is
I a Ka I p [ Kd ( L N ) K s (V R)n ]
考虑周围环境对当前景物表面的光照影
响,忽略了光在环境景物之间的传递,
很难表现自然界复杂场景的高质量真实
感图形。为了增加图形的真实感,必须
考虑环境的漫射、镜面反射和规则投射
对景物表面产生的整体照明效果。
7.3.6 整体光照模型
• 物体表面入射光的构成
(1)光源直接照射
(2)其它物体的反射光 (3)透射光
• 点光源的照射:在物体的不同部分其亮度也
不同,亮度的大小依赖于物体的朝向及它与点光源 之间的距离.
简单光照模型-漫反射角度余弦的推导
• 漫反射
– 粗糙、无光泽物体(如粉笔)表面对光的反射 – 光照方程
I d I p K d cos
[0, ]
2
• I d 漫反射的亮度 • I p 点光源的亮度
N
R L
N
计算机图形学实验03_光照模型

北方工业大学计算机图形学课程实验报告题目:实验三光照模型学院:计算机学院专业:数字媒体技术指导教师:学生班级:学生学号:学生姓名:教师评定:学号:班级:姓名:实验报告3 光照模型一.实验目的1.熟悉OpenGL图形库;2.掌握光照模型算法。
二.实验环境1.软件环境:操作系统:WinXp应用软件:VC6.0,OpenGL2.硬件环境(查看自己的机子)CPU: Intel PIV 2.80GHz内存RAM: 1GB显卡:NVIDIA GeForce7650,256M显存三.实验内容1写程序实现一个聚光灯围绕立方体旋转程序。
要求给出RenderScene()函数。
void RenderScene (void){glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // 清楚颜色数据和深度数据(清屏)glColor3f(1.0,1.0,1.0);glLoadIdentity(); //初始变换矩阵为单位矩阵glTranslated(0,-1,-5); //平移0,0,-5向Z负方向平移5个单位glPushMatrix(); //压缩矩阵,设定光源的位置glDisable(GL_LIGHTING);glRotatef(yRot, 0, 1, 0); //光源的旋转glTranslatef(light_change[0],light_change[1],light_change[2]); //光源的位置glTranslatef(light_position[0], light_position[1],light_position[2]); //光源位置glutSolidSphere(0.1, 4,4);//利用库函数绘制一个半径为1的球体。
表示光源在这里glEnable(GL_LIGHTING);glLightfv(GL_LIGHT0, GL_POSITION, light_position);glPopMatrix();light_direction[0] = -light_change[0];light_direction[1] = -light_change[1];light_direction[2] = -light_change[2];glLightfv(GL_LIGHT0, GL_SPOT_DIRECTION, light_direction);glLightfv(GL_LIGHT0, GL_DIFFUSE, light_diffuse);glPopMatrix(); //光源设置完毕glPushMatrix(); //压入变换矩阵那// glutSolidSphere(1, 30,30);//利用库函数绘制一个半径为1的球体。
图形学-作业答案-光照模型

共10题,每题10分1.光能量引起视觉必须经历哪三个环节?答:光源发射光能量,光能量经反射面反射,反射的光能量进入人眼或摄像机,最终引起视觉。
2.环境光源为什么没有光源位置?被环境光源照射的反射点为什么没有入射方向、反射方向等属性?答:1)环境光源是对间接光源的模拟;2)三维场景中任意点都可能因反射而成为间接光源,因此间接光源的位置按照概率意义解释,应是无处不在,因而没有光源位置;3)由于间接光源的位置任意,对于任意考察的反射点,其入射方向也是任意的,因而也不具有入射方向属性;4)既然入射方向任意,反射方向也任意;3.简述硬阴影与软阴影的区别,并简述生成软阴影的基本原理。
答:1)硬阴影与软阴影均属于投掷阴影;2)硬阴影是指阴影区域内无光强变化,阴影区域具有绝对准确的边界;3)软阴影是指阴影区域内有光强变化,阴影区域不具有绝对准确的边界;4)若使用点光源,若A反射面遮挡了光源向B反射面传递能量的途径,则在B 面留下A面的投掷阴影,此阴影是硬阴影,因为能量完全被阻隔;5)若使用面光源,面光源可视为无穷多点光源复合而成,若A反射面遮挡了光源向B反射面传递能量的途径,对于B面上不同反射点,其被挡住的点光源数量不一致,因此在B面上形成的投掷阴影具有光强变化,阴影区域边界也因此而不明确。
4.写出漫反射模型对应的公式,并解释其含义。
答:()θcos I I r =,其中θ为入射向量与反射面法线向量间的夹角,夹角越大,反射光强越小。
5. 写出非理想镜面反射对应的公式,并解释其含义。
答:1)非理想镜面反射具有反射方向,反射向量与入射向量、法线向量共面,且反射角等于入射角;2)摄像机接收的光强与观测向量、反射向量间的夹角有关系:()φcos I I r =,其中Φ为观测向量与反射向量间的夹角,夹角越大,说明观测方向偏离反射方向越远,因而接收到的光强越小。
6. 写出局部光照模型对应的公式,并解释该公式的构成。
答:))()((∑∙+∙++=i i n i S i i D AL A E I R V K I L N K I K I I1)第一项E I 为考察点作为光源主动向外辐射的光强;2)第二项AL A I K 是考察点对环境光源入射光强的反射光强;3)求和是针对场景中所有光源提供的反射量求和,其中第i 项表示第i 个光源对应的反射量;4)每个光源提供的反射量由漫反射量与非理想镜面反射量组合而成;5)对于漫反射分量的描述,i L 为第i 个点光源与考察点间形成的入射向量,N 为考察点所在反射面的法线方向,入射向量与法线向量夹角越大,反射光强越小;6)对于非理想镜面反射分量的描述,V 表示考察点与摄像机光心间形成的观测向量,i R 表示第i 个光源与考察点间形成的镜面反射向量,n 表示反射面光滑系数,观测向量与反射向量夹角越大,观测到的光强越小,光滑系数越大,随观测向量与反射向量间夹角增大而导致的光强衰减越快。
第9章 光照模型02

上海交通大学计算机系 何援军
17
9.5.3 光线跟踪算法
//计算与景物的交点并计算最近交点的光照值 // depth是光栅树的当前深度
RayColor RayTracing(RayTracing ray , int depth)
{ 确定光线与某个景物object的最近交点intersection; if (命中景物) { 计算交点处景物表面的法向normal; return RayShading(object,ray, intersection, normal, depth); }
2005年7月5日
上海交通大学计算机系 何援军
24
9.5.4 关键技术——加速算法
加速算法的常用策略有:
1)控制跟踪深度 在光线跟踪基本算法中,结束光线跟踪的 条件是光线不与任何景物相交,或已达到 预定的最大光线跟踪深度。 对于复杂的场景,没有必要将光线跟踪得 很深,可根据光线所穿过区域的性质自适 应地改变跟踪深度。
1条视线E,是由视点 V与屏幕上的像素点 (x,y)发出的射线; 对每一景物表面上的 交点Pi有3条光线:
①与光源的连线Si ②反射光线Ri ③折射光线Ti
2005年7月5日 上海交通大学计算机系 何援军 14
9.5.3 光线跟踪算法
光线跟踪算法构成的光线树
2005年7月5日
上海交通大学计算机系 何援军
9.5.3 光线跟踪算法
根据光线跟踪算法的定义,计算景物表面 某点P的光强应由3部分组成:
由光源产生的直接的光线照射光强 反射方向上对其它景物引起的间接光照光强 折射方向上对其它景物引起的间接光照光强
2005年7月5日
上海交通大学计算机系 何援军
13
9.2简单光照模型

PDF pdfFactory
一、Phong光照模型
在实际的应用中,由于Phong光照模型是一个经验模型, 因此还具有以下的一些问题: –显示出的物体象塑料,无质感变化 –没有考虑物体间相互反射光 –镜面反射颜色与材质无关 –镜面反射入射角大,会产生失真现象
PDF pdfFactory
PDF pdfFactory
三、背景物理知识
镜面反射光:一束光照射到一面镜子上或不绣钢的表面,光 线会沿着反射光方向全部反射出去,这种叫镜面反射光。 折射光:比如水晶、玻璃等,光线会穿过去一直往前走。 吸收光:比如冬天晒太阳会感觉到温暖,这是因为吸收了太 阳光。
PDF pdfFactory
PDF pdfFactory
PDF pdfFactory
PDF pdfFactory
二、光照模型的发展演化
1、早期发展 1967年,Wylie等人第一次在显示物体时加进光照效果, 认为光强与距离成反比。 1970年,Bouknight提出第一个光反射模型:Lambert漫 反射+环境光(第一个可用的光照模型)。这篇文章发表 在 Communication of ACM 上。 1971年,Gouraud提出漫反射模型加插值的思想(漫反射 的意思是光强主要取决于入射光的强度和入射光与法线的夹 角)发表在 IEEE Transactions on Computers 上。 1975年,Phong提出图形学中第一个最有影响的光照明模型 。在漫反射模型的基础上加进了高光项。
PDF pdfFactory
PDF pdfFactory
三、背景物理知识
1、光的传播规律 反射定律:入射角等于反射角,而且反射光线、入射光 线与法向量在同一平面上。
计算机视觉中的光照模型与处理方法

计算机视觉中的光照模型与处理方法计算机视觉是计算机科学领域中的一个重要分支,它通过模拟人类视觉系统的方式,利用计算机来处理图像、视频等数据,以实现对物体、场景的自动识别、定位、跟踪等任务。
然而,计算机视觉面临的一个重要挑战就是光照变化的影响。
在不同的场景中,同一物体的颜色、形状等特征都可能发生变化,这就需要计算机视觉系统能够处理光照变化对图像数据的影响。
本文将介绍计算机视觉中的光照模型与处理方法。
一、光照模型光照模型是计算机图形学和计算机视觉领域中的重要概念,它用于描述物体表面反射光线的方式。
在计算机视觉中,通常采用以下几种光照模型:1. 环境光照模型环境光照模型用于描述物体表面周围环境的光照情况,它假设物体表面反射的光线来自于均匀分布的环境光。
这种光照模型在实际应用中较少使用,因为它无法处理复杂的光照情况。
2. 点光源光照模型点光源光照模型假设光源是无限小的点,其光线可以沿任意方向传播。
这种光照模型可以用于描述明亮的光源照射在物体表面上时的光照效果,但在实际应用中,物体表面反射的光线可能会被其他物体或场景的反射光影响,因此效果不理想。
3. 平行光源光照模型平行光源光照模型假设光源是无限远的、发出平行光线的光源。
这种光照模型适用于描述阳光等远距离照射物体表面的情况。
4. 聚光灯光照模型聚光灯光照模型是一种复合光照模型,它可以用于描述聚光灯照射下物体表面的局部光照情况。
聚光灯光源可以用来模拟各种灯光,如手电筒、车前灯等。
二、光照处理方法在计算机视觉中,光照变化对图像数据的影响是不可避免的。
为了减少光照变化对图像处理的影响,可以采用以下几种光照处理方法:1. 直方图均衡化直方图均衡化是一种光照处理方法,它通过对图像的像素值进行统计和处理,使得图像的灰度级分布更加均匀,从而增强图像的对比度。
直方图均衡化可以有效减少光照变化对图像处理的影响,但它也有一些缺点,如可能会导致图像噪声增加、细节丢失等问题。
2. 彩色校正彩色校正是一种针对光照变化对图像色彩的影响,进行颜色纠正的方法。
计算机图形学实验报告-实验5Phong光照模型

计算机图形学实验报告班级计算机工硕班学号 **********姓名王泽晶实验五: Phong光照模型实验目的通过本次试验,学生可以掌握简单光照明模型的计算,以及真实感绘制中三维场景搭建的初步知识。
实验内容:对给定的光源、相机状态,对球进行Phong光照明模型绘制。
搭建三维场景:a)在三维空间中摆放1个球,半径为R,默认为50 ,摆放位置为(0,0,0)b)球的材质默认值为Ka = (0.1,0.1,0.1), Kd = (0,0,0.8), Ks = 0.2, n = 10c)视点方向初始为(0,0,1),光源方向初始为(1,1,1)d)视口设置为x0 = -100, y0 = -75, w = 200, h = 150使用phong模型绘制场景试验步骤:添加成员函数,编写成员数代码为override public function computeIntersection( viewStart:Vec3, viewDir:Vec3):Boolean {// See /geometry/sphereline/var viewEnd:Vec3 = viewStart.add(viewDir);var A:Number = Math.pow(viewEnd.getVec(0) - viewStart.getVec(0), 2)+Math.pow(viewEnd.getVec(1) - viewStart.getVec(1), 2) +Math.pow(viewEnd.getVec(2) - viewStart.getVec(2), 2);var B:Number =((viewEnd.getVec(0) - viewStart.getVec(0)) * (viewStart.getVec(0) - _position.getVec(0)) +(viewEnd.getVec(1) - viewStart.getVec(1)) * (viewStart.getVec(1) -_position.getVec(1)) +(viewEnd.getVec(2) - viewStart.getVec(2)) * (viewStart.getVec(2) -_position.getVec(2))) * 2.0;var C:Number = Math.pow(_position.getVec(0) - viewStart.getVec(0), 2) + Math.pow(_position.getVec(1) - viewStart.getVec(1), 2) +Math.pow(_position.getVec(2) - viewStart.getVec(2), 2) - _radius*_radius;// Solve C + Bt + At^2 = 0var delta:Number = B*B - 4*A*C;if ( delta<0.0 || A==0.0 ) return false;// We don't consider whether 0<t<1 here because real viewer is at infinite place var t1:Number = (-B + Math.sqrt(delta)) / (2*A);var t2:Number = (-B - Math.sqrt(delta)) / (2*A);if ( t1<t2 )point = viewStart.multiplyk(1.0 - t1).add(viewEnd.multiplyk(t1));elsepoint = viewStart.multiplyk(1.0 - t2).add(viewEnd.multiplyk(t2));normal = Vec3.normalize(point.minus(_position));return true;}public var _width :Number =0.0;public var _height:Number = 0.0;public var data:Array = new Array();protected function group1_creationCompleteHandler(event:FlexEvent):void{draw();}public function draw():void{graphics.clear();if(txtViewDir.text == "")return;var ary:Array = txtViewDir.text.split(",");var flag:Boolean = false;for(var i:int= 0;i<ary.length;i++){if(ary[i] == "" || isNaN(ary[i])){flag = true;break;}}if(flag)txtViewDir.setStyle("color",0xff0000);return;}txtViewDir.setStyle("color",0x000000);var viewDir:Vec3 = new Vec3(Number(ary[0]), Number(ary[1]), Number(ary[2]));ary = txtLight.text.split(",");flag = false;for(i= 0;i<ary.length;i++){if(ary[i] == "" || isNaN(ary[i])){flag = true;break;}}if(flag){txtLight.setStyle("color",0xff0000);return;}txtLight.setStyle("color",0x000000);var light:Light = new Light();light.direction = new Vec3(Number(ary[0]), Number(ary[1]),Number(ary[2])).negative();light.ambient = new Vec3(Number(ary[0]), Number(ary[1]), Number(ary[2]));light.intensity = new Vec3(Number(ary[0]), Number(ary[1]), Number(ary[2]));var material:Material = new Material();material.diffuse =new Vec3(0.0, 0.0, 0.8);material.specular =new Vec3(0.2, 0.2, 0.2);material.ambient =new Vec3(0.1, 0.1, 0.1);data = createSceneImage( 200, 150, viewDir, light, material );drawImg();}public function drawImg():void{for(var y:int = 0 ;y<150;y++)for(var x:int =0;x<200;x++){var index:int = (y*200 + x) * 3;var r:Number = data[index+0];var g:Number = data[index+1];var b:Number = data[index+2];var cl:uint =(r << 16) | (g << 8) | b;this.graphics.beginFill(cl)this.graphics.drawCircle(x,y,1);this.graphics.endFill();}}}public function allocateBuffer( width:int,height: int ):Array{var data:Array = new Array();data.length = width * height * 3;_width = width;_height = heightreturn data;}public function createSceneImage( width:int,height: int ,viewDir:Vec3, light:Light, material:Material ):Array{var data:Array = new Array();var sphere:SphereObject = new SphereObject(50.0);sphere.setPosition(new Vec3(0.0, 0.0, 0.0) );sphere.setMaterial( material );var halfW:int = width / 2var halfH:int = height / 2;for ( var y:int=0; y<height; ++y ){for ( var x:int=0; x<width; ++x ){var viewStart:Vec3 = new Vec3(Number(x - halfW), Number(y - halfH), 0.0);if ( puteIntersection(viewStart, viewDir) )sphere.color = puteColor(light, viewDir, sphere.normal);elsesphere.color = new Vec3(0.1, 0.1, 0.1);var index:int = (y*width + x) * 3;data[index+0] = (sphere.color.getVec(0) * 255.0);data[index+1] = (sphere.color.getVec(1) * 255.0);data[index+2] = (sphere.color.getVec(2) * 255.0);}}return data;}protected function button1_clickHandler(event:MouseEvent):void {// TODO Auto-generated method stubdraw();}编译运行得到如下结果:。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
光照模型逄瑶瑶(山东师范大学 2012级传媒学院数字媒体艺术,济南 250355 )摘要:计算机如何生成三维形体的真实图形是计算机图形学研究的重要内容之一,光照模型是真实感图形技术的重要组成部分,它主要研究的是如何根据光学物理的有关定律,采用计算机来模拟自然界中光照明的物理过程。
本文通过对光源特性和物体表面特性、局部光照模型和整体光照模型的具体分析,完成对光照模型的系统阐述。
关键词:光源特性、局部光照模型、全局光照模型、真实感图形Abstract: how to generate a three-dimensional shape of the computer's graphics are an important part of research in computer graphics, lighting model is an important part of photorealistic graphics technology, it is mainly based on the study of how the relevant laws of optical physics, using computer simulation the physical nature of light illumination process. Based on the source characteristics and surface characteristics, specific analysis of partial illumination model and overall illumination model, complete illumination model describes the system.Keywords: source characteristics, local illumination model, global illumination model, realistic graphics1引言:真实感图形学作为一种图形生成技术,一直是计算机图形学研究的前沿领域,其中光照模型的研究对真实感图形的生成至关重要。
物体表面的色彩和明暗变化主要和两个因素有关,即光源特性和物体表面特性。
计算机图形学的光照模型分为局部光照模型和全局光照模型。
2光源特性与物体表面特性2.1光源特性(1)光的色彩光的色彩一般用红、绿、蓝三种色光的组合来描述。
三种色光按不通过比例合成便形成光的不同色相,因此,色光可视为坐标空间中由红(R)、绿(G)、蓝(B)三色光构成的一个点,表达式为: color_light=(I r,I g,I b)其中I r,I g,I b分别为R,G,B三色光的强度。
(2)光的强度光的强弱由RGB三色光的强弱决定,三色光在总光强中的权值各不相同。
总的光强I为:I=0.30I r+0.59I g+0.11I b由此可见,各色光对总光强的权值大小依次为0.30、0.59、0.11.(3)光的方向按照光的方向的不同,可以将光源进行分类,一般可以分为:点光源、分布式光源和漫射光源。
点光源分布式光源漫射光源2.2物体表面特性(1)反射系数物体表面的反射系数由物体表面的材料和形状决定。
反射系数分为漫反射(Diffuse Reflection) 系数和镜面反射(Specular Reflection)系数。
漫反射系数记为R d,表明当光射向物体表面时物体表面向各个方向漫反射该光线的能力。
R d可以分解为R d-r、R d-g、R d-b,分别为物体表面对入射光线中红、绿、蓝三种成分的反射能力。
R d-r、R d-g、R d-b不同比例描述了物体表面的色彩,R d介于0~1之间。
镜面反射系数记为W(i),表明物体表面沿着镜面方向(与光线入射角度相同、方向相反)反射光线的能力。
其中,i为入射角,即入射光线和表面法线的夹角。
物体的镜面反射系数是入射角的函数。
实验表明,镜面反射光线的色彩,基本上是光源的色彩。
因此,物体表面的颜色,主要是由光源的色彩和物体表面的漫反射系数来模拟。
在光线的照射下,光滑物体会形成一片非常亮的区域,称为高光区域。
物体表面光滑,高光区域小,亮度很高;物体表面粗糙,高光区域大,亮度很低。
(2)透射系数透射系数记为T P,用来描述物体透射光线的能力,并且0≤T P≤1,当T P =1时,物体是完全透明的;当=0时,物体是完全不透明的。
(3)表面光照物体表面的方向用法线n来表示。
多面体物体表面上每个多边形法线表示为n=(A,B,C).其中A,B,C,是多边形平面方程中x,y,z 的系数。
3局部光照模型局部光照模型是一种比较简单的光照模型,局部光照明模型只考虑光源直接照射到物体表面产生的光照效果, 物体基本不透明且各表面的反射率是常数. 局部光照明模型中, 物体表面的反射光分为漫反射光和镜面反射光; 漫反射光可以认为是光穿过物体表面被吸收后, 余下的重新向外各各方向均匀发射的光, 所以在任何方向的漫反射光强度都相同. 镜面反射光由入射光在物体的表面的直接反射, 镜面反射光沿镜面反射主方向最强, 主方向周围逐渐衰减, 形成一定的可观察区域.局部光照模型是与光栅化渲染算法相适应的,光栅化算法一次只考虑一个像素点的光照强度,因此局部光照模型不能计算某像素受其他像素影响的光照强度部分。
也就是说,局部光照模型只对物体进行直接光照的计算,而不考虑其他的间接影响。
局部光照模型在决定到达观察者眼中的反射光的光照强度时只考虑到达表面的入射光线和表面法向。
典型的局部光照模型包括Lambert漫反射模型,Phong 模型,改进的Blinn-phong模型和Cook-Torrance模型等。
3.1漫反射模型--- Lambert模型3.11环境光是对光照现像的最简单抽象,因而局限性很大。
它仅能描述光线在空间中无方向并均匀散布时的状态。
很多情况下,入射光是带有方向的,比如典型的阳光。
在多数实际环境中,存在由于许多物体表面多次反射而产生的均匀的照明光线,这就是环境光线。
环境光线的存在使物体得到漫射照明,例如阴天就可以看做是仅有漫射照明。
这时亮度可以如下简单地计算:I =κ a · Ia其中是I可见表面的亮度,Ia是环境光线的总亮度,κa是物体表面对环境光线的反射系数,它在0到1之间,与表面的性质有关,表明了有多少环境光线从物体的表面反射出去。
如果光照射到比较粗糙的物体表面,如粉笔,由于这些表面从各个方向等强度地反射光,因而从各个视角出发,物体表面呈现相同的亮度,所看到的物体表面某点的明暗程度不随观测者的位置变化的,这种等同地向各个方向散射的现象称为光的漫反射(diffuse reflection)。
简单光照模型模拟物体表面对光的反射作用。
光源被假定为点光源,其几何形状为一个点,向周围所有方向上辐射等强度的光,在物体表面产生反射作用。
漫反射光的强度近似地服从于Lambert定律,即漫反射光的光强仅与入射光的方向和反射点处表面法向夹角的余弦成正比。
由此可以构造出Lambert漫反射模型:Idiffuse =Id Kd cosθIdiffuse表示物体表面某点的漫反射光强Id为点光源,Kd(0<Kd<1)表示物体表面该点对漫反射光的反射属性θ是入射光线的方向与物体表面该点处法线N的夹角,或称为入射角(0≤θ≤90°)入射角为零时,说明光线垂直于物体表面,漫反射光强最大;90°时光线与物体表面平行,物体接收不到任何光线。
把环境光模型添加进来,最后,Lambert光照模型可写为:I= IaKa + Id Kdcosθ= IaKa + Id Kd(L·N)该模型包含环境光和漫反射光3.1.2漫反射的颜色可由入射光的颜色和物体表面的颜色共同设定。
例如,在RGB颜色模型下,物体的漫反射系数Kd的三元组(KdR KdG KdB )分别代表RGB三原色的漫反射系数,它们设定物体颜色,同样,照射光I的三元组为(IdR IdG IdB ),通过这些分量的调整得到不同的彩色光照效果:IR= IaRKaR + fatt IdR KdR(L·N)IG= IaGKaG + fatt IdGKdG(L·N)IB= IaBKaB + fatt IdBKdB(L·N)3.14 Lambert模型的适用范围适用于:理想漫反射物体,如:石灰墙面、羊皮纸等。
不适用于:对诸如金属表面的物体不能描述其镜面反射效果3.2Phong模型3.2.1镜面反射镜面反射是指来自具体光源的光能到达可见表面上的某一点后,主要沿着由射入角等于反射角所决定的方向传播,从而使得观察者从不同角度观察时,这一点呈现的亮度并不相同。
在任何有光泽的表面上都可以观察到镜面反射的效果。
例如,用很亮的光照射一个红色的苹果,会发现最亮点不是红色的,而是有些呈现白色,这是入射光线的颜色。
这个最亮点就是有镜面反射引起的。
如果观察者移动位置,会看到最亮点也随之移动。
这是因为光泽表面在不同方向对光线的镜面反射是不同的。
在理想的光泽表面上,例如在非常好的镜面上,反射光线只是在由入射角等于反射角所确定的方向上才有。
对于不是非常理想的光泽表面,例如一个苹果,反射光线引起的亮度随着ɑ的增大而迅速下降。
由Phong Bui-Tuong提出的明亮模型,用 cos nɑ来近似反射光线引起的亮度随着ɑ增大而下降的速率。
n取值一般在1到2000之间,决定于反射表面的有关性质。
对于理想的反射表面,n就是无穷大。
这里选用cos nɑ,是以经验观察为基础的。
可以得到计算表面亮度的公式:这里可以假定反射光线的方向向量R和指向观察点的向量V都已经正规化,即已经是长度为1的单位向量,于是可以简单地利用向量内积计算余弦值:cosɑ-V.R. 对,通常根据经验选取一个常数 K s来代替,这样公式(5)可写成下面更容易计算的形式:反射光线的方向向量R需要计算,为简便,有时用更容易计算的 H·N代替R·V,得到3.3Blinn-Phong 光照模型Blinn-Phong 光照模型,又称为Blinn-phong 反射模型( Blinn–Phong reflection model )或者 phong 修正模型( modified Phong reflection model ),是由 Jim Blinn 于 1977 年在文章“Models of light reflection for computer synthesized pictures ” 中对传统 phong 光照模型基础上进行修改提出的。