实验室研究方向

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

BRDF

双向反射率分布函数:描述了给定的光照度条件下某 个角度的反射光照度,或者说:入射的光在某个方向 反射的比例
理想镜面 理想漫射
粗糙镜面
方向漫射
光照明变量


视平面的位置和朝向 光源
◦ 位置 ◦ 属性
p0

场景物体
◦ 相对于光源的位置 ◦ 相对于其他物体的位置 ◦ 材质属性
不透明、半透明、明亮、昏暗、有纹理模式
Phong 光照明模型
• 包括:
– Lambertian 漫反射模型 – Cosine 角度的镜面反射 – 泛光项
• 依赖于四个向量:

p 是表面某点 l 到光源的方向 n 表面法向 v 到视点的向量 r 反射方向
Phong模型集成
I (I a I d I s ) I A
s
镜面反射
曲面看上去很光滑 反射光在反射角的周围的 狭窄区域起作用 镜面是完美的镜面反射

漫射
光向所有方向发射 粗糙曲面 完美漫射曲面向各个方向均 匀出射

半透明曲面
部分光将穿透或从某个其他 位置散出 精确的模型必须考虑折射和 散射 部分入射光也在物体表面上 直接被反射出来
高级光照属性

光源的衰减
◦ 依据距离衰减
GL_CONSTANT_ATTENUATION:常数项衰减 GL_LINEAR_ATTENUATION:线性项衰减 GL_QUADRATIC_ATTENUATION:二次项衰减
1 fi k c kl d k q d 2
光照属性设置

glLightModelfv( property, value );


打开双面光照
GL_LIGHT_MODEL_TWO_SIDE
全局泛光颜色
GL_LIGHT_MODEL_AMBIENT
光照计算模式
GL_LIGHT_MODEL_LOCAL_VIEWER

高光计算模式
GL_LIGHT_MODEL_COLOR_CONTROL
基于OpenGL的三维光照明计 算
耿卫东
陈为
上节课主要内容
三维几何变换 OpenGL简介 OpenGL绘制流程 基于OpenGL的三维变换

主要授课内容
光照明计算的主要原理 OpenGL光照的深化介绍 OGRE简介

线框图 简单的颜色填充
平行光源下的 光滑绘制模式
简单光照
i
IA 是全局泛光项,添加到每个点。Ia 是某个光 源的泛光项。
材质属性

场景中的物体必须定义它的漫射、镜面和泛 光属性
e k a : ambient reflectanc k : diffuse reflectanc e d Surface Data e k s : specular reflectanc : phongexponent

◦ 直接光照直接决定于光源颜 色 ◦ 间接光照还取决于各次反射、 折射、散射之间的交互属性
光与材质之间的作用




相互影响关系由材质决定 颜色、光滑度和明亮度由执行相互影响决定 光碰到一个曲面将:吸收、反射、传输 渲染还决定于曲面的朝向(法向) 三种基本的光-材质作用
I ( x, x' ) g ( x, x' )[ ( x, x' ) ( x, x' , x" ) I ( x' , x" )dx" ]
源自文库
成像与光栅化过程
描述 OpenGL的光栅基本元素:位图 与图像数组 如何在 OpenGL中读写一个矩形的图 像区域

象素作为基本元素

位图
◦ 2D 位掩码数组
根据当前颜色,更新帧缓冲区中对应的象素颜色

图像
◦ 2D 颜色数组

OpenGL 并不理解图像格式!
绘制图像

glDrawPixels( width, height, format, type, pixels )
x
cosine 函数给出的反射照度
Lambertian模型与Phong模 型对比
Lambertian Phong
泛光项

被泛光照射的物体在各个方向反射出同样的光亮度 等价于对场景每个点赋予一个亮度La
不同级别的泛光
I d La ka
Ka是泛光被反射的比例
I La ka I rest
a=b=0; c=1
a=b=0.25; c=0.5 a=0; b=1; c=0
OpenGL中的光照计算

光照模拟了物体反射入射光的过程
◦ 物体的材质合成 ◦ 光源的颜色和位置 ◦ 全局光照属性
泛光 双面光照
◦ 既可指定RGB ◦ 也可以使用颜色索引
OpenGL 中光照的模拟

Phong 光照模型
高光系数 ◦ 可分别设置前面和背面属性
光源属性
glLightfv( light, property, value ); ◦ light指定了第几个光源

场景中可饱含多个光源,从 GL_LIGHT0开始标记 glGetIntegerv( GL_MAX_LIGHTS, &n );
◦ 光源属性
颜色 位置与类型 衰减系数

glEnable( GL_RESCALE_NORMAL )
材质属性

定义一个绘制元素的曲面属性

glMaterialfv( face, property, value );
GL_DIFFUSE
GL_SPECULAR GL_AMBIENT GL_EMISSION GL_SHININESS
漫射分量:基本的 高光 泛光 自发射光
打开光源

打开第n个光源
glEnable( GL_LIGHTn );
打开光照
glEnable( GL_LIGHTING );
光源与材质(演示)
光源位置演示
高级光照属性

锥光源
◦ 局部的光照明效果
GL_SPOT_DIRECTION GL_SPOT_CUTOFF GL_SPOT_EXPONENT
N p
◦ 拓扑和几何 (表面法向)
Lambertian漫反射模型

为了渲染一个漫射曲面: ◦ 表面的法向 ◦ 表面的漫反射率 ◦ 光源的位置和强度 Rd cos
L
cos l n
d
• Lambert定律:若l 和 n 是单位向量 • 漫反射项可定义为:
I d Ld kd (l n)

帧缓冲区的块拷贝命令

glCopyPixels( x, y, width, height, type )
方向光源:
位置光源
x y p0 z 1
x y p0 z 0
光源衰减

需要考虑光线在传播过程中 出现的衰减
f att
1 a bdL cdL
2
I La ka f att I d kd ( N L)
光源 (续)

光源的颜色属性
◦ GL_AMBIENT :泛光项 ◦ GL_DIFFUSE :漫射光项 ◦ GL_SPECULAR:高光项
光源的属性

OpenGL 支持两类光源
◦ 局部点光源 ◦ 无穷远处的方向光源(平行光)

光源位置由齐次坐标中的w分量控制
w0 方向光 x y z w 0 位置在 x w y w z w 的局部光源
方向光源
阴影
简单纹理映射 全局光照明: 阴影、 高光等
局部和全局光照明模型
局部
仅与局部物体表面和光源有关
全局
某一个点的光照与场景中其他点有关
视点相关的绘制(光线跟踪)
场景几何
必须逐个视点计算
视点无关的方法(辐射度)
预先计算场景中每个点的光 照度
路径跟踪算法结果
光照明模型
光照计算考虑了物体表面之 间的电磁能量交互 采用物理或经验公式 只有到达眼睛的才被可见
x
Phong 高光模型
Phong模型是一个光滑表面的经验公式--它也是一个局部 光照明模型,然而却能部分地模拟出全局效果。 镜面表面与它的反射系数高度相关,即,反射的光照度极大 地依赖于出射方向。

Phong高光模型
I s ks Ls cos

: 高光系数(Phong指数)
ks: 镜面反射系数
◦ 将pixels代表的图像绘制在当前光栅位置的 下左的位置(D3D是上左位置) ◦ 图像存储格式很多,选择合适的格式将获 得最好的效率
读取象素

glReadPixels( x, y, width, height, format, type, pixels )
◦ 从帧缓存器的 (x,y)位置开始 将内容读到 pixels数组中。 ◦ 从帧缓冲器的存储格式到pixels的格式的完 成是由OpenGL自动完成的。
◦ 对每个顶点进行计算
影响光照的几个属性
◦ 曲面材质属性 ◦ 光源属性 ◦ 光照模型属性
曲面法向

法向是曲面的局部属性,反映了曲面如 何反射入射进来的光

glNormal3f( x, y, z )
◦ 当前设置的法向用于计算当前设置的顶点 ◦ 法向是单位向量!
最好不要用下面的OpenGL法向归一化程序 glEnable( GL_NORMALIZE )

每个反射系数项 (ka, kd, ks)表示入射光经过光与材质作用 以后出射的比例 Phong指数则反映了物体的光滑程度(高光)

增加镜面反射率
增加高光系数
增加漫反射系数
远距离光源

渲染计算通常计算从表面任意一点到光源的方向 如果光源无限远,所有的向量是平行的(如日光) 简单地用光照方向
相关文档
最新文档