第五章 光学模型及其算法实现.docx

上传人:b****3 文档编号:10388123 上传时间:2023-05-25 格式:DOCX 页数:20 大小:139.55KB
下载 相关 举报
第五章 光学模型及其算法实现.docx_第1页
第1页 / 共20页
第五章 光学模型及其算法实现.docx_第2页
第2页 / 共20页
第五章 光学模型及其算法实现.docx_第3页
第3页 / 共20页
第五章 光学模型及其算法实现.docx_第4页
第4页 / 共20页
第五章 光学模型及其算法实现.docx_第5页
第5页 / 共20页
第五章 光学模型及其算法实现.docx_第6页
第6页 / 共20页
第五章 光学模型及其算法实现.docx_第7页
第7页 / 共20页
第五章 光学模型及其算法实现.docx_第8页
第8页 / 共20页
第五章 光学模型及其算法实现.docx_第9页
第9页 / 共20页
第五章 光学模型及其算法实现.docx_第10页
第10页 / 共20页
第五章 光学模型及其算法实现.docx_第11页
第11页 / 共20页
第五章 光学模型及其算法实现.docx_第12页
第12页 / 共20页
第五章 光学模型及其算法实现.docx_第13页
第13页 / 共20页
第五章 光学模型及其算法实现.docx_第14页
第14页 / 共20页
第五章 光学模型及其算法实现.docx_第15页
第15页 / 共20页
第五章 光学模型及其算法实现.docx_第16页
第16页 / 共20页
第五章 光学模型及其算法实现.docx_第17页
第17页 / 共20页
第五章 光学模型及其算法实现.docx_第18页
第18页 / 共20页
第五章 光学模型及其算法实现.docx_第19页
第19页 / 共20页
第五章 光学模型及其算法实现.docx_第20页
第20页 / 共20页
亲,该文档总共20页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

第五章 光学模型及其算法实现.docx

《第五章 光学模型及其算法实现.docx》由会员分享,可在线阅读,更多相关《第五章 光学模型及其算法实现.docx(20页珍藏版)》请在冰点文库上搜索。

第五章 光学模型及其算法实现.docx

第五章光学模型及其算法实现

第五章光学模型及其算法实现

一、复习要求

1.简单光反射模型

2.增量式光反射模型

3.局部光反射模型

4.光源模型

5.简单光透射模型

6.光线跟踪显示技术

二、内容提要

1.简单光反射模型

(1)基本光学原理

① 照度定律

普通物理学中的照度定律(Lambert余弦定律):

I=KfILcosθ,[0,

式中,反射常数Kf与物体表面性质有关,也描述物体的颜色。

注意:

按一般规定,入射光L是从表面上一点指向光源的矢量。

②材质分配

事实上,一个物体的颜色就是它所反射出的光的颜色,取决于光源的颜色和该物体对光的反射性。

例如,将一个阳光下的红球放到只有黄灯照明的室内,它就变成黑的了,因为那里没有任何红色光可被反射,而所有黄色光都被吸收了。

在使用光照时,原有的“绘图颜色”概念已不能适用,而采用“材质”一词。

定义:

材质(material)被定义为一个物体对环境光、漫反射光、镜面反射光的反射性。

它们分别以一个对应的RGB值表示,称为材质的Ambient,Diffuse,Specular分量(即光学定律中的反射系数Ka,Kd,Ks)。

材质还可以包括另一种辐射性,用于描述自身发光的物体,例如汽车尾灯或夜光表。

通常,灯具的表面也被看成是一个自发光体。

③折射和透射

Snell正弦定律(或称折射定律)属于几何光学原理,用于确定两个物体间的入射角与折射角的关系:

式中,1表示在物体1表面处的入射角,而2表示在物体2内部的折射角;1和2分别是这两个物体的折射率。

如图5-1所示,除了从同侧光源射过来的反射光外,观察者还将会看到从另一侧光源穿过物体后射出的透射光:

图5-1光的折射和透射

(2)简单光反射模型(Phong模型)的导出

图5-2光的反射

简单光反射模型只模拟物体表面对光的反射作用,并不考虑物体表面的透射和散射作用。

在简单光反射模型中一个点光源照射到物体表面一点,再反射出来的光,可分为三部分:

环境光(泛光)、漫反射光镜面反射光。

在Phong模型中,物体表面的光照效果是环境反射光、光源的漫反射光和镜面反射光的合成效果。

·环境反射光(AmbientLight):

从背景物体散射出来的光。

可用下式计算:

I1=KaIa

其中Ka为环境光系数

·光源的漫反射光(DiffuseLight):

从一个粗糙的、无光泽的表面反射出,它与入射角有关(即符合Lamber定律)

I2=KdILcosθ

其中Kd为粗糙度

·镜面反射光(SpecularReflection):

从一个光滑的、明亮的表面反射出(或称单反射光):

I3=KsILcosnα

其中,Ks为单向反射率;n控制反射光束的锥度,其值越大,光束越窄,表示该表面越明亮(如磨光金属面大理石)(较小可表示苹果、木质等)

当α=0(即视线位于反射方向上)时,将呈现一个高光点(hotspot)(如白光下的铜球上的亮白点)

根据Phong模型的定义,在多边形所有的点处按下式计算光强:

I=I1+I2+I3=KaIa+KdILcosθ+Kscosnα

注意:

在具体计算中,反射系数Kd、Ks和Ka也可按RGB分解成三个分量:

(Kdr,Kdg,Kdb)、(Ksr,Ksg,Ksb)和(Kar,Kag,Kab),各分量范围均为0.0~1.0。

2.增量式光反射模型

(1)双线性光强插值法(GourandShading)

在图像空间中,Gouraud光照模型(双线性光强插值法)计算各像素的光强如下:

图5-3求法矢的平均值

(1)只在多边形的顶点处,按下式计算光强:

I=KaIa+KdILcosθ(只考虑环境光和漫反射光)

而顶点的法矢等于各邻面法矢的平均值:

(2)对于多边形边上和内部的各点(像素),用顶点明暗度的线性插值计算出:

图5-4双线性亮度插值法

令IAB=

,IAD=

故IS=IA+IABy,IT=IA+IADy

对于多边形内部的各点(像素),用两边端点光强的线性插值法计算出:

令IST=

故IP=IS+ISTx

另一种计算多边形边上和内部的各点光强的改进方法是增量法,它利用扫描线的相关性来简化计算如下:

对于边上的点:

IS,y+1=IS,y+IAB,

IT,y+1=IT,y+IAD

对于内部的点:

Ix+1,P=Ix,P+IST,

Gouraud算法优缺点:

算法简单,计算量小。

但不能再现高光。

适用粗糙表面

(2)双线性法向插值法(PhongShading)

在图像空间中,Phong光照模型(双线性法向插值法)计算各像素的度如下:

顶点的法矢等于各邻面法矢的平均值,即

对于多边形上和内部的各点(像素),用顶点法矢的线性插值。

计算公式如下:

图5-5双线性法矢插值法

令NS=

,NT=

故NS,y+1=NS,y+NS,NT,y+1=NT,y+NT

令NP=

故Nx+1,P=Nx,P+NP

注意:

这里,法矢Np就是实际曲面上该点的切平面法矢的近似值

Phong算法优缺点:

真实感强,但计算量较大,适用光滑表面

目前大多数渲染软件采用Gouraud和Phong光照模型作为Quick(快速)和Full(完全)Rendering,能满足一般真实感显示要求。

Gouraud和Phong光照模型两者比较如下:

GouraudShadingPhongShading

双线性光强插值法双线性法向插值法

适用于漫反射光(粗糙表面)适用于镜面反射光(特别是有高光的金属表面)

马赫带效应较重马赫带效应较轻

生成多面体真实感图象效果差高光域准确

速度较快(算法简单、计算量小)速度较慢(计算量较大)

然而,这类简单光照模型共同存在下列的问题:

由于光强函数的一阶导数不连续,线性插值法均有马赫带效应(光照效果在数值上不连续)。

透明效果需要另作处理才行,而且不能产生阴影。

注:

实用Phong光照模型的计算公式要考虑随距离的线性或平方反比衰减

(3)加速算法

在简单的光线跟踪算法中,每条射线都要和所有物体求交,然后再对所得的全部交点进行排序,才能确定可见点。

因此对于每条射线,计算复杂度都是O(n)以上。

当物体个数较少时,计算量还可以接受。

但是当环境较复杂,物体个数较多时(例如成干个原子组成的分子模型或成万个多边形构成的建筑物模型),简单的光线跟踪算法的处理速度就无法接受了。

然而,对于每—条射线,它实际上只与少数几个物体有交,与绝大多数物体根本不相交。

也就是说,对于复杂环境,大多数求交计算都是无效运算。

我们可以通过一些途经来减少这种无效运算。

这就是加速算法所要考虑的主要问题。

一般说来,加速算法是通过预先把物体按空间位置适当地组织起来,以便在绘制时缩小搜索范围,减少排序时间来提高效率的。

常用的组织方法有包围体树、自适应八叉树和三维立方体阵列。

3.局部光反射模型

局部光反射是由光源直接照射到射入点,经漫反射和镜面反射到视点而形成。

4.光源模型

在计算机图形学中,光源模型的三个基本因素是几何形状、光强分布和光谱分布。

有向光源(directedlights):

方向保持不变,即为平行光(发射出半圆柱面光);光源强度不作衰减。

如太阳光、远光源。

点光源(pointlights):

方向是从光源位置到面片中心,发射出圆球面光;光强分布是各向同性的,要考虑随距离的线性或平方反比衰减(falloff);可以产生阴影。

聚光灯(spotlights):

发射出圆锥形光束;要考虑随距离的线性或平方反比衰减;可以产生软阴影区域。

从几何形状上讲,一般电灯(钨丝白炽灯)理想化成点光源,而且光强分布是各向同性的;一般日光灯(长管灯)可理想化成线光源;经过特殊设计的吸顶灯可理想化成面光源。

5.简单光透射模型

(1)透明效果的模拟方法

①透射计算公式

最简单的透明算法不考虑折射的影响,即假定光线穿过透明体表面时不改变方向,,此时则有:

(如图12.11C所示)

ITR=(1-KT)Ireflect+KTItransmit,其中KT[0,1]

KT称为物体的透明度(Transparency),可取值范围从0(不透明)至1.0(全透明)。

光线照射到透明体表面的两个交点A和B处的光强分别是反射光强Ireflect和透射光强Itransmit。

图5-6光的透射

显然,在全透明场合下(即KT=1),只有光的透射效果:

ITR=KTItransmit

这也称为规则透射。

注意:

1.在颜色四元组RGBA中,ALPHA=1-KT,称作不透明度。

2.对不透明物体,将会在地面上投射出阴影(Shadow)。

②漫透射、理想透明和半透明

一个点光源照射在透明体表面上,将可能产生如下三种光透射作用:

对于表面粗糙的透明物体上,将形成漫透射。

透射出来的光将朝着各方向均匀地散射,此时透射光强It与入射光强IL及入射角的余弦cos成正比,即:

It=KtILcos

式中,Kt称为透射系数,可取0~1.0。

进入理想的透明物体的透射光只沿折射方向传播,而在其他方向都看不见透射光。

进入一般较透明(或半透明)物体的透射光也往其他方向传播一部分透射光,并且某方向透射光的强度随着偏离透射方向(即下述角的增大)而明显地衰减。

It=KtILcosnt

式中,IL是光源的强度或入射光强;Kt称为透射系数,可取0~1.0。

幂值nt用于控制透射光束的锥度,其范围1~2000;其值越大,光束越窄。

为视线V与透射方向T之间的夹角。

(2)Wittded光透射模型

Whitted光透射模型是1980年Whitted提出的,并运用在光线跟踪算法的实现中。

它考虑了环境光、漫反射光和镜面反射光(即Phong模型)以及从环境反射或透视到视线的光。

具体计算如下:

Ip=KaIa+

+KsIs+KtIt

=IaKa+Kd

+Ks

+KsIs+KtIt

式中,第一部分包含了Phong模型中的所有参数;第二部分模拟了场景光投射在光滑表面上产生的理想镜面反射作用(即=0),Ks为镜面反射率;第三部分模拟了场景光通过透明体表面产生的规则透射作用(即不考虑折射时的全透明),Kt为透射系数。

Is和It分别表示场景中其他物体反射和透射过来的光在该物体表面上的镜面映像和透射映像,如图所示。

图5-7透明体表面上的镜面映像和透射映像

(3)Hall光透射模型

Hall整体光照模型要比Whitted模型更为完善,还考虑沿着反射方向和折射(透射)方向的散射现象,以模拟“透射高光”。

在Hall整体光照模型中,假定光源和视点都在无穷远处,使光线和视线方向简化为常向量。

计算公式如下:

Ip=I局部+I全局

(1)I局部=KaIa+

=IaKa+Kd

+Ks

+Kt

即包括环境光、漫反射光、镜面反射光和透射光。

(2)I全局=KRIR+KTIT

即由其他物体反射或透射在透明体表面上产生的沿着视线方向的光。

6.光线跟踪显示技术

(1)基本光线跟踪算法

Ray-Tracing算法的基本思想如下:

在物体空间中,假定视点取在Z轴上,XOY平面取作为投影屏幕(其与显示器屏幕的像素布局一一对应),通过跟踪多个光源对各像素的贡献而计算出它们的色彩明暗度。

在光线遇到某一物体(不是背景)时,应继续跟踪光线,而不管光线的强度或深度如何。

图5-8光线跟踪法

光线跟踪算法包括下列的三个步骤:

步骤一、从视点穿过某像素P发出一条射线R,它逆着光线方向跟踪所有光源在这个可见点(即离视点最近的交点)上产生的色彩明暗度:

IA=I局部+I全局

其中I局部和I全局的具体计算按步骤二。

步骤二、首先计算出可见点处的曲面法矢(并存储它,以供备用),然后查找表面数据表(其含有表面的颜色属性、粗糙度、反射率、透明度等)进行计算:

(Hall整体光照模型)

(1)I局部=KaIa+IL(Kdcos+Kscosns+Ktcosnt)

即包括环境光、漫反射光、镜面反射光和透射光。

(2)I全局=KRIR+KTIT

即由其他物体反射或折射到视线的反射或透视方向的光。

步骤三、判断可见点是否处在阴影(shadow)中:

从该点向光源引射线。

若射线与某个不透明的物体相交,则该点在阴影中(此时只取环境光),而返回到步骤一。

光线跟踪法的特点:

a.同时处理消隐和渲染,并有透明效果和阴影生成。

b.Ray-Tracing本质上是一种递归算法(层次等于物体个数),效率极高

算法加速方法:

事实上每条射线只与少数几个物体相交。

若预先将物体按空间位置适当地组织起来(如采用包围体),则可缩小搜索范围,避免不必要的求交运算。

树:

仅当射线与根结点有交时,才进行它与子结点求交

优缺点:

光线跟踪法是目前最常用的高级渲染技术之一,但没有考虑物体表面之间的漫反射(如辐射度计算方法)。

在光线跟踪算法中,跟踪光线的终止条件有以下四个:

1)被跟踪的光线与光源相交;

2)被跟踪的光线遇到背景;

3)被跟踪的光线对某交点处的光强贡献趋于零;

4)光线跟踪的深度已经很深了。

(2)光线与物体求交

①与坐标系平面求交

光线与坐标系平面的交点可以由下面向量方程求出:

s+td=xiI+yiJ

由于s=xsI+ysJ+zsK,d=xdI+ydJ+zdK,可推出:

下面两种情况,光线与平面不相交:

zd=0时,光线平行于xy平面

zs=0时,光线起始点在xy平面上

zd≠0,且zs≠0时

如果t>0,光线与平面相交

如果t<0,光线的反向延长线与平面相交

②与任意平面求交

右图中,n=xnI+ynJ+znK,为给定平面的法线向量,P0(x0,y0,z0)为平面上一点,则平面向量方程为:

xn(x-x0)+yn(y-y0)+zn(z-z0)=0

令r(t)=s+td与该平面相交,又s=xsI+ysJ+zsK,d=xdI+ydJ+zdK,则

xn(xs+txd-x0)+yn(ys+tyd-y0)+zn(zs+tzd-z0)=0

可推出下式:

,则

=0时,光线平行于该平面,即不相交。

如果t=0,光线起始点在平面上

如果t>0,光线与平面相交

如果t<0,光线的反向延长线与平面相交

③与球面求交

右图为一半径为R,中心点为(xc,yc,zc)的球体,(x,y,z)是球面上的任意一点。

设向量c=xcI+ycJ+zcK,p=xI+yJ+zK

则球体的向量方程为:

|p-c|=R

令r(t)=s+td与该平面相交,则

|s+td-c|2=R2

展开得:

|d|2t2+2|s-c||d|t+|s-c|2=R2

令A=|d|2,B=|s-c||d|,C=|s-c|2-R2,则

At2+2Bt+C=0

(3)光线跟踪中的简单阴影

定义5-1:

阴影(shadow)是指景物中那些没有被光源直接照射到的暗区。

图5-10阴影生成

阴影生成从原理上来说非常简单:

只有那些从视点可见的、而从光源不可见的面(多边形)才会落在阴影内。

换句话说,若将视点放在光源处,那末它看不到所该光源产生的阴影。

因此,阴影生成的一般性算法如下:

步骤一、将光源位置作为视点,利用消隐算法求出它的不可见面(包括背面和被其他面遮挡的面)和可见面。

这样,将所有面分为两大类。

图5-11半阴影区

步骤二、在实际的视点处,对上述面进行消隐,并选用一种光照模型双重可见面的明暗度,而对上述不可见面的可见部分采用环境光,形成阴影。

步骤三、将不可见面的可见部分投射到地面上,即表示影子(shadow)。

注意:

仅当存在某一投影面(如地面、墙面)时,物体才有可能在该平面上投射出其影子。

定义5-2:

阴影可分为全阴影(whole-shadow)和半阴影(half-shadow)两种。

全阴影就是物体表面上那些没有被所有光源直接照射的部分,而半阴影是指物体表面上那些只被一部分光源直接照射的部分。

定义5-3:

全阴影加上在它周围的半阴影而组成一个软阴影(soft-shadow)区域,使影子边缘有较缓慢的过渡。

显然,单个点光源只能形成全阴影,而半阴影则是由多个点光源或线光源、面光源产生的,如图5-11所示。

由于半阴影的计算量较大,许多场合下(除聚光灯外)我们只考虑由点光源产生的全阴影。

因为光源在物体表面上产生的阴影区域均为它们的不可见面。

若取光源作为视点,那么任何隐藏面消除算法都能用于阴影计算。

在实际应用中,还需根据阴影计算的特点考虑如何减少其时间和空间耗费。

三、例题分析

例1.设n=I+J+2K为通过点P0=(1,1,0)的平面的法线矢量。

试判断s=-2I+J+2K,d=I-K的光线是否与平面相交。

解答:

因为

故而可以引入:

>0,光线与平面相交

所以交点是(xs+xd,ys+yd,zs+zd)=(-1,1,1)

四、习题

1.写出简单光反射模型近似公式,并说明其适用范围及能产生的光照效果。

2.写出线光源的光强公式及其积分算法。

3.试描述Witted光透射反射模型和Hall光透射模型。

4.简单叙述光线跟踪算法。

5.试描述光线与几种常见物体面的求交算法。

五、解题指导与习题解答

1.答案:

简单光反射模型只模拟物体表面对光的反射作用,并不考虑物体表面的透射和散射作用。

在简单光反射模型中一个点光源照射到物体表面一点,再反射出来的光,可分为三部分:

环境光(泛光)、漫反射光镜面反射光。

根据Phong模型的定义,在多边形所有的点处按下式计算光强:

I=I1+I2+I3=KaIa+KdILcosθ+Kscosnα

在Phong模型中,物体表面的光照效果是环境反射光、光源的漫反射光和镜面反射光的合成效果。

2.答案:

线光源的光强公式如下:

其中

表示漫反射系数,

表示漫反射率,

是来自光源的光亮度,

朝辐射方向的投影角。

是被照射表面的法向,

是单位光线向量。

在一般情况下,上述公式只能用数值算法做近似的计算。

其实质是用多个点光源来近似线光源。

3.答案:

Whitted光照模型是一种全局光照模型,它模拟了由环境引起的镜面反射分量和规则透射分量。

在这个模型中,假定被照明物体的表面非常光滑,从而可以用理想镜面反射分布函数来模拟镜面反射;同样,对于透射也采用理想的情况。

它可以用如下公式描述:

其中

是局部光照模型计算的反射光亮度,

表示镜面反射分量,

表示透射分量。

表示衰减系数,

表示镜面反射系数,

表示镜面反射率,

是环境的光亮度,

环境的透射光亮度,

表示光线向量的规则透射向量。

Hall模型对Whitted模型进行了改进,它的特点是:

1)引入光源引起的规则透射分量,用以模拟“透射高光”。

2)显式表示表面光谱漫反射率、光谱镜面反射率和光谱规则透射率,且用菲涅耳反射函数和折射函数分别表示镜面反射率和透射率。

3)用反映材料滤光特性的函数表示传输过程中的衰减因子。

以上特点使Hall模型成为整体光谱光照模型,并能表现更精致的照明效果。

4.答案:

在物体空间中,假定视点取在Z轴上,XOY平面取作为投影屏幕(其与显示器屏幕的像素布局一一对应),通过跟踪多个光源对各像素的贡献而计算出它们的色彩明暗度。

光线跟踪算法包括下列的三个步骤:

步骤一、从视点穿过某像素P发出一条射线R,它逆着光线方向跟踪所有光源在这个可见点(即离视点最近的交点)上产生的色彩明暗度:

IA=I局部+I全局

其中I局部和I全局的具体计算按步骤二。

步骤二、首先计算出可见点处的曲面法矢(并存储它,以供备用),然后查找表面数据表(其含有表面的颜色属性、粗糙度、反射率、透明度等)进行计算:

(Hall整体光照模型)

(1)I局部=KaIa+IL(Kdcos+Kscosns+Ktcosnt)

即包括环境光、漫反射光、镜面反射光和透射光。

(2)I全局=KRIR+KTIT

即由其他物体反射或折射到视线的反射或透视方向的光。

步骤三、判断可见点是否处在阴影(shadow)中:

从该点向光源引射线。

若射线与某个不透明的物体相交,则该点在阴影中(此时只取环境光),而返回到步骤一。

5.答案:

见本章光线与物体求交部分详述。

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 小学教育 > 学科竞赛

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2