第八章 光照模型与面绘制算法
- 格式:pdf
- 大小:239.61 KB
- 文档页数:14
计算机图形学中的光照模型在计算机图形学中,光照模型是模拟现实世界中光线与物体之间相互作用的模型。
通过使用光照模型,计算机可以在虚拟场景中模拟光线的传播和反射,从而创建出真实感和逼真感的图像。
因此,光照模型是计算机图形学中非常重要的一个组成部分。
光照模型的基本原理是从光源发出的光线经过物体表面的反射、折射和透射等变换,最终到达观察者的眼睛,从而形成人们所看到的图像。
在光照模型中,光源可以是点光源、定向光源和面光源等不同类型的光源,而物体的材质属性和表面形状也会对光线的传播和反射产生影响。
常见的光照模型包括冯氏光照模型、布林-菲菲(Blinn-Phong)光照模型、库克-托伯汉姆(Cook-Torrance)光照模型等。
下面,我们分别对这三种光照模型进行介绍。
冯氏光照模型是最早被提出的光照模型之一,它是由斯特恩伯格(Phong)在上世纪70年代提出的。
冯氏光照模型假设物体表面的亮度与其漫反射和镜面反射成分的线性组合有关。
其中,漫反射成分是从各个方向均匀地反射出来的光线,而镜面反射成分则是由光源直接反射回观察者的光线。
冯氏光照模型还考虑了环境光的影响,该影响是由光源外发射的光线在场景中反射和折射,并最终到达物体表面的。
布林-菲菲光照模型是另一种常用的光照模型,它是由布林(Blinn)和菲菲(Phong)在上世纪80年代提出的。
相比于冯氏光照模型,布林-菲菲光照模型增加了一个半角向量的概念。
半角向量是入射光线和出射光线的平均方向,它可以更加准确地描述物体表面的反射特性。
此外,布林-菲菲光照模型还加入了柔光和高光衰减等特性,从而使得被渲染的图像更加真实。
库克-托伯汉姆光照模型是一种物理模拟的光照模型,它是由库克(Cook)和托伯汉姆(Torrance)在上世纪80年代提出的。
该光照模型基于微观的物理原理,考虑了光线与物体表面微观结构之间的相互作用。
库克-托伯汉姆光照模型因其真实感和准确性而被广泛应用于计算机图形学、计算机游戏等领域。
Marching Cube 算法原理1.1.1 Marching Cube 算法概述面绘制法则是根据设定的阈值,从体数据中提取出表面的三角面片集,再用光照模型对三角面片进行渲染,形成三维图像。
面绘制法主要分为基于断层轮廓线的方法和基于体素的方法。
基于断层轮廓线的方法是先在不同的断层上提取出感兴趣区的轮廓线,然后在相邻的断层的轮廓线间构造出三角面片的方法,这在同一断层上有多个轮廓线时会产生模糊性,上下两层的轮廓线不易对应。
用户干预可以避免一定的模糊性,但是这样大大增加了操作的复杂性。
因此不被广泛采纳使用。
基于体素的方法以移动立方体法(Marching Cube,MC)为代表。
Marching Cubes算法是面显示算法中的经典算法,它也被称为“等值面提取”(Iso-surface Extraction)。
本质是将一系列两维的切片数据看作是一个三维的数据场,从中将具有某种域值的物质抽取出来,以某种拓扑形式连接成三角面片。
算法的基本原理MC算法的基本思想是逐个处理体数据场中的各个体元,并根据体元各个顶点的值来决定该体元内部等值面的构造形式"算法实现过程中,体元内等值面构造要经过以下两个主要计算:1、体元中三角面片逼近等值面的计算;2、三角面片各顶点法向量的计算。
1.1.2预备知识介绍(体素模型和等值面介绍)1、体素模型的介绍体素一般有两种定义:一种与二维图像中像素定义相类似。
直接把体数据中的采样点作为体素,另一种是把八个相邻的采样点包含的区域定义为体素。
在三维空间某一个区域内进行采样,若采样点在x,y,z,三个方向上分布是均匀的。
采样间距分别为Δx,Δy,Δz,则体数据可以用三维数字矩阵来表示。
每八个相临的采样点相临的立方体区域就定义为一个体素。
而这八个采样点称为该体素的角点。
他们的坐标分别为:(i, j, k), (i+1,j,k), (i,j+1,k), (i+1,j+1,k), (i,j,k+1), (i,j,k+1), (i+1.j+k+1), (i,j+1,k+1) 和(i+1,j+1,k+1)如图-1所示图-1 移动立方体的体素对于体素内任一点P6(x, y,z),其物理坐标可以转换为图像坐标 i6, j6,k6,其中i6=x/Δx, j6=y/Δy, k6=z/Δz.当把方向无关的三个线性插值作为体素模型时,其值可以表示为2、等值面(Iso-Surface)介绍在面重建算法中以重建等值面这一类算法最为经典。
计算机游戏概论3D基本算法计算机游戏是利用计算机技术,以交互方式展现的虚拟世界。
其中,3D游戏是指在计算机屏幕上以三维透视的形式呈现的游戏。
为了实现这样的效果,游戏开发者需要运用各种基本的3D算法。
以下将介绍几个常用的3D基本算法。
1.坐标变换在计算机游戏中,物体的位置和方向信息用坐标表示。
坐标变换是指将物体的模型坐标通过一系列矩阵运算转换为屏幕上的像素坐标,以实现物体的位置和方向的正确显示。
其中包括平移、旋转和缩放等操作。
2.光照模型光照模型是指模拟光线在物体上的反射和折射,以计算物体各点的光强和颜色。
常用的光照算法有环境光、漫反射和镜面反射等。
通过调整这些参数,可以实现不同光源和材质的效果。
3.投影投影是将3D场景投影到2D屏幕上的过程。
游戏中常用的投影有平行投影和透视投影两种。
平行投影是一种简单的投影方式,适用于类似于俯视图的场景。
而透视投影则能够提供更加逼真的效果,通过远近映射来模拟真实场景的观察效果。
4.可视化剔除可视化剔除是在绘制3D场景时,排除那些不可见的物体,减少不必要的渲染操作,提高绘制效率。
常用的可视化剔除算法有视锥剔除、背面剔除和物体剔除等。
通过这些算法,可以避免对于无法呈现在屏幕上的物体进行不必要的渲染,提高游戏的帧率和性能。
5.碰撞检测碰撞检测是模拟物体之间的触碰和碰撞的过程,常用于游戏中的物理模拟和碰撞效果。
常用的碰撞检测算法有包围盒检测、光线投射和凸多边形碰撞检测等。
通过这些算法,游戏可以实现真实的物理交互效果。
6.粒子系统粒子系统是模拟和渲染大量具有特定属性的小粒子的过程。
在游戏中常用于模拟火焰、烟雾、爆炸等效果。
通过调整粒子的大小、速度和颜色等参数,可以实现各种逼真的特效。
7.阴影渲染阴影渲染是模拟物体之间遮挡关系的过程,用于增强游戏场景的真实感。
常用的阴影算法有平面阴影、体积阴影和投射阴影等。
通过这些算法,可以实现物体之间的互相遮挡效果,使游戏场景更具逼真感。
了解计算机图形学中的光照模型与渲染算法计算机图形学是研究计算机图形及其渲染技术的学科,其中光照模型与渲染算法是实现真实感图形渲染的关键。
本文将介绍光照模型与渲染算法的基本概念,以及常见的光照模型和渲染算法。
一、光照模型光照模型是计算机图形学中用于模拟光线的传播和反射过程的数学模型。
它描述了光照对物体表面的影响,从而确定了物体表面的明暗、反射特性和颜色。
1. 环境光照环境光照是场景中无方向性的散射光,它均匀地照亮物体的所有部分。
它是全局光照的一部分,不受物体表面法线和材质属性的影响。
常用的环境光照模型有恒定环境光照模型和环境光照颜色模型。
2. 漫反射光照漫反射光照是指光线照射到物体表面后,按照光线方向和物体表面法线之间的夹角决定反射的光强。
漫反射光照模型考虑了物体的表面法线、光线方向和光线颜色等因素,常用的漫反射光照模型有Lambert光照模型和Blinn-Phong光照模型。
3. 高光反射光照高光反射光照是指光线照射到物体表面后,根据光线方向、表面法线和视线方向的夹角计算的反射光强。
它主要用于模拟物体的镜面反射,使物体表面产生亮点或高光。
常用的高光反射光照模型有Phong光照模型和Blinn-Phong光照模型。
二、渲染算法渲染算法是将三维场景转化为二维图像的过程,在光照模型的基础上计算物体表面的颜色,并在屏幕上绘制出最终的图像。
常见的渲染算法有光线追踪算法和光栅化算法。
1. 光线追踪算法光线追踪算法通过模拟光线从观察者发射、经过场景中的物体反射、折射和散射等过程,最终计算每个像素点的颜色值。
它可以实现逼真的光照效果,但计算复杂度较高。
常见的光线追踪算法有Whitted光线追踪算法、路径追踪算法和辐射度估计算法等。
2. 光栅化算法光栅化算法是将场景中的三维物体转化为屏幕上的二维像素的算法。
它通过将三维物体投影到屏幕平面,并根据光照模型和材质属性计算每个像素点的颜色值。
常见的光栅化算法有扫描线光栅化算法和三角形光栅化算法等。
第8章 光照模型与面绘制算法对物体进行透视投影,然后在可见面上产生自然光照效果,实现场景的真实感显示。
(彩图1.15,1.36 等)绘制真实感图形涉及物理学和心理学两个方面。
光(电磁能)经过和周围具体环境的互相作用后到达人的眼睛,刺激人的眼睛(在人的眼睛里,发生物理和化学变化),生成人脑所能感知的电脉冲,使我们“看见”物体。
一个光照明模型(illumination model)(明暗模型主要用于物体表面某点光强度的计算。
面绘制算法(surface-rendering algorithm)是通过光照模型中的光强度计算,确定场景中物体表面的所有投影象素点的光强度。
面绘制有二种方法:1. 将光照模型应用于每个可见面的每一点(如光线跟踪算法)2. 经过少量的光照模型计算,在面片上进行亮度插值(扫描线方法)图形学中的真实感成像包括两部分内容:1.物体的精确图形表示;2.场景中光照效果的物理描述,如:光的反射,透明性、阴影表面纹理等。
光照模型包含许多因素:1.物体类型:物体的透明度, 物体表面可以是光亮的、阴暗的;物体表面的纹理;2.物体相对于光源的位置;3.光源的属性:形状、颜色、位置;4.观察平面的位置和方向等。
光强度的计算量较大,如较精确的计算模型:辐射度算法,考虑场景中光源与物体表面间辐射能量的传递,计算强度。
大多数软件包采用简化的光照计算和经验模型(如phong模型,Gouraud 模型等)§1 光源观察一个不透明不发光的物体时,从物体表面得到反射光.(从光源发出的,或从周围物体获得的)光源:发光物体:灯泡、太阳;反射光源:房屋的墙壁。
有时一个光发物体,既是光源又是反射体,如:一个塑料球内放置一个灯泡,球表面上既发光也反射光。
光源分为:1.点光源:是发光体的最简单的模型。
如 太阳、小灯泡、 离场景足够远的光源、比物体小得多的光源。
光线由光源向四周发共用散。
2. 分布式光源:如:日光灯,与场景中面片比不足够小。
光线被投射到一个物体后会:1)被反射:反射光线的强弱由表面的材质类型决定;2)被吸收;3)被折射(透明物体)。
表面光滑的材质,反射较多的入射光,吸收较少的入射光;表面粗糙的物体往往将发射光向各个方向散射:—漫反射(光线的散射现象)。
反射包括:1) 漫反射; 粗糙的物体表面将反射光向各个方向散射=>从各个视角观察到的光亮度几乎相同。
物体的颜色实际上就是入射光线被漫反射后表现出的颜色。
如:一束白光照在一个蓝色物体-->蓝色被反射其它的被吸收;红光->蓝色物体,物体为黑色(红光被吸收)。
2) 镜面反射:磨光的物体表面上产生高光或强光。
§2、基本光照模型在基本光照模型中,假设所有的光源均为点光源,且已知其位置和光强度(颜色)。
它是一中简单有效的方法。
在基本光照模型中光线的计算,主要基于物体表面的材质,背景光线条件及光源。
1、 环境光一个物体表面即使不直接暴露于光源之下,只要其周围的物体被照明,它也可能看得见。
环境光(ambient light):或称背景光(泛光),是场景的基准光亮度。
特点:没有空间或方向上的特征,在所有方向上和所有物体表面上投射的环境光数量恒定不变。
表示:Ia ,表示场景中的环境光大小。
因而由环境光产生的反射光与观察方向和物体表面的朝向无关。
k a:环境光的反射常数(k a :0—1)由环境光产生的反射光强度:I ambdiff = k a * I a .2、 点光源漫反射k d:漫反射率(diffuse reflectivity)漫反射系数,表示入射光线被漫反射部分的百分比. 与物体各表面的材质属性有关。
是物体颜色的函数,设为常数。
理想漫反射体(Lambert反射体):光线被物体表面漫反射后向各个方向以等光强度发散,与观察方向无关.所以从表面上任意点所发散的光线可由朗伯余弦定律计算而得。
(P391图14.8)I ldiff = R d * I l cos(θ)I l :点光源强度;θ:入射角;θ:00--900光强度决定于它获得的幅射能.面片的光亮度依赖于它与光源的相对朝向,与入射光方向垂直的面片同一个与入射光方向成斜面的面片相比,其光亮程度要大得多(可看成入射光的强度不同).(P391图14.9)N:物体表面的单位法向量L:从表面上指向点光源的单位方向,则cos(θ)=N·L;由光源的漫反射光强为:I ldiff = k d * I l (N·L)所以物体的漫反射光强为:I ldiff = k a * I a + k d * I l (N·L).物体离光源近,强度大.物体离光源远,强度小.I ldiff = k a * I a + k d * I l (N·L)/(D+K).K为常数(使分母不为0).(例 P391,P392)3、 镜面反射和Phong模型当观察一个光照下的光滑物体表面,如磨光的金属,可能在某个观察方向上看到高光或强光----镜面反射。
在接近镜面反射角的一个会聚区域内入射光的全部或绝大部分成为反射光。
镜面反射时, 反射角=入射角(P393 图)对于理想的反射体,当φ=0时,才能观察到反射光线;(φ:观察方向与反射方向的夹角)对于非理想反射体系统,其镜面反射方向分布在R周围的有限范围内。
※ 光滑表面的镜面反射范围小,粗糙表面的镜面反射范围大。
Phong镜面反射模型:(Phong模型):镜面反射光强度与cos(φ)成正比.φ: 00--900镜面反射参数n s:由被观察的物体表面材质所决定.n s大:光滑表面 , n s >100, 理想的反射器 ns ->∞n s小:粗糙表面, n s<1,煤渣 n s≈1镜面反射的光强度主要由物体表面材质属性,光线入射角,入射光颜色等因素决定。
用镜面反射系数W(θ):近似表示镜面反射光强度的变化,它是入射角θ的函数。
θ:00--900I spec= W(θ)*I l*cos ns(φ) = W(θ,λ) *I l*cos ns(φ). λ:光的波长。
对于θ 的大部分范围,反射强度小于入射光的10% (P393图14.14)。
W(θ)或W(θ,λ)比较复杂,实用时常根据美学观点或实验数据用常数k s代替。
I spec= k s*I l*cos ns (φ) = k s*I l*(V·R) ns(P394图14.16)R+L=2(N·L)N , R=2(N·L)N -L .例 P395图14.17 ,对于不同的k s和n s的光照效果。
(彩图14.19)简化的phong模型:用cos(α) 代替cos(φ)计算(P395图14.18) cos(α)=N·H,H:方向L与V的角平分线方向,α为法线方向N与H的夹角。
※ 简化计算:1. 观察者与光源离物体表面足够远,且V与L均为常量,则H为常量,N·H比V·R计算量小(为了求R,需要先计算N)2. 对于给定的光源和视点,H方向是观察方向上产生最大镜面反射的面片的朝向,所以H有时为面片高光最大的表面的法方向(N=H)。
3. 若V与L、R、N共面,则α=φ/2; 否则α>φ/2(不共面时)φ +(θ-α) = θ+α4、 多光源漫反射和镜面反射的合并单个点光源,表面上某点处的漫反射和镜面反射为I = I ldiff + I spec= k a * I a + k d * I l (N·L) + k s*I l*(N·H) ns.若在场景中放置多个点光源I = I ldiff + I spec= k a * I a + I li (k d *(N·L) + k s*(N·H) ns).为了保证每个象素的光强度不超过某个上限,采取一些规范化操作。
1) 对光强度计算公式设置上限,超过上限,取上限(简单);2) 将各项除以最大项的绝对值;3) 计算出场景中各象素的强度,然后按比例变换到正常的光强范围内(复杂)。
5、 Warn模型Warn模型提供一仲模拟立体光照效果的方法,它是通过在多个方向上控制光强度来实现。
在Warn模型中,光源被表示为一个反射面上的许多点,对各点采用phong模型进行计算,通过设置phong模型中各项的值来控制不同方向上的光强度。
6、 强度衰减光线从一点光源出发在空间中传播时,它的强度按 1/d2 进行衰减(d为光线经过的路程长度).所以在真实感图形显示中, 光照明模型中必须考虑光强度的衰减。
如果不考虑光强度的衰减,二个有相同光学效果的平行表面互相遮挡时,它们将无法被区分开来,显示成为一张面。
但不可简单地用 1/d2作为衰减因子。
常用的二次衰减函数的倒数:f(d)=1/(a0+a1d+a2d2)调整a0、a1、a2的值,可得到场景中不同的光照效果。
a0的作用:防止d很小时, f(d)太大f(d)=min(1, 1/(a0+a1d+a2d2))基本光照模型:I= k a * I a + f(d i)I li (k d *(N·L) + k s*(N·H) ns).d i : 光线从点光源I i出发所经过的路程.7、 颜色在RGB描述中,场景中的每个颜色用R、G、B三个分量表示,用RGB 各分量来标识光源强度和物体表面颜色,并据光照模型来计算反射光线中的RGB分量。
1) 反射系数标识为三元分量k d =(k d R,k d G,k d B),物体为蓝色 0≤k d B≤1, k d R =0,k d G =0I B = k a B * I aB + f(d i)I lBi (k d B*(N·L) + k s B* (N·H) ns).2) 每个表面定义漫反射和镜面反射的颜色向量,将反射参数定义为单值常数;I B= k a*S d B*I aB +f(d i)I lBi(k d *S dB*(N·L)+k s*S sB* (N·H) ns).漫反射颜色分量:(S dR ,S d G, S dB)镜面反射颜色发量(S sR,S SG, S SB)2) 使用光谱波长入来表示彩色中的各分量(各种波长的光的反射系数不同)Iλ= k a*S dλ*I aλ+f(d i)I lλi(k d *S dλ*(N·L)+k s*S sλ*(N·H) ns).八 透明度透明物体的表面会产生反射光和折射光,折射光的相关贡献决定于表面的透明程度,(透明表面后是否有光源或表面)要表示一个透明表面时,将穿过表面的光线的贡献包括进去。
(彩图14.26)图P398 14.25折射率:定义为光线在真空中的速度与其在物质中速度之比率。