表面绘制算法
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
n1 n 2 n 3 n 4 n n1 n 2 n 3 n 4
normals near interior vertex
13
2)对每个顶点计算光强
用简单光照模型phong模型计算顶点的光强
I Ie Id I s I a K a I p K d ( L N ) I p K s ( R V ) n I a K a I p K d ( L N ) I p K s ( N H )n
n = (p2-p0) × (p1-p0)
6
Normal to Sphere
Implicit function f(x,y.z)=0 Normal given by gradient Sphere f(p)=p· p-1 n = [∂f/∂x, ∂f/∂y, ∂f/∂z]T=p
7
表面绘制方法
局部照明 只考虑反射成像 每个面的明暗计算彼此 独立 只能模拟有限的光照效 果,局部效果 简单phong模型和明暗 计算
27
Why not ray tracing?
Ray tracing seems more physically based so why don’t we use it to design a graphics system? Possible and is actually simple for simple objects such as polygons and quadrics with simple point sources In principle, can produce global lighting effects such as shadows and multiple reflections but ray tracing is slow and not well-suited for interactive applications 28
2
单光源的phong模型表达式:
从视点观察到物体上任一点P处的光强度I: 应为环境反射光强度Ie、漫反射光强度Id以及镜面反
射光强度Is的总和:
I Ie Id I s I a K a I p K d ( L N ) I p K s ( R V )
n
3
对于平面:
可以直接计算面亮度。(明暗着色方法)。
对于由曲面构成的表面
可计算表面的每一点亮度,但处理时间较长。 通常将曲面划分为一系列的多边形网格(一般为四边
形或三边形),用一组平面多边形来逼近曲面。
Wireframe
4
Computation of Vectors
l and v are specified by the application Can computer r from l and n Problem is determining n For simple surfaces is can be determined but how we determine n differs depending on underlying representation of surface OpenGL leaves determination of normal to application
Gouraud着色(平滑着色)
8
1.恒定光强的明暗处理
只用一种颜色绘制整个多边形:即任取多边形上一点, 利用简单光照模型计算出它的颜色,该颜色即是多边 形的颜色。
In openGL: glShadeModel(GL_FLAT)
•适合于
• 多面体的一个面,而不是曲面的一个近似网格的一部分 • 光源离多边形表面足够远 • 视点也离表面远
9
Flat Shading
Mach band(马赫带效应) 人类视觉系统具有 侧抑制 (lateral inhibitioin)性质,在 亮度变化的边界,在较亮一 侧看见一条更亮的线,在较 暗一侧看一条更暗的线。 没有办法能够避免。
10
2. Gouraud明暗处理
又称为平滑着色,亮度插值明暗处理, 它通过对多边形顶点颜色进行线性插值来绘制其 内部各点。
表面绘制(surface-rendering method)
又称作“明暗处理算法,主要指应用一个光照模
型,获得所有投影的表面位置的像素颜色的过程。
可将光照模型应用于每一投影位置(面点):
计算量大,效果好。如:光线跟踪表面绘制算法。
或者先对多边形表面上少数点使用光照模型计算,然后 再用插值法计算其它面点的颜色。
I Ie Id I s I a K a I p K d ( L N ) I p K s ( R V ) n I a K a I p K d ( L N ) I p K s ( N H )n
23
表面绘制-明暗处理小结
恒定强度明暗处理(Flat Surface Rendering)
Cannot compute color or shade of each object independently
Some
objects are blocked from light Light can reflect from object to object Some objects might be translucent
24
Polygonal Shading
Flat Shading: use constant normal for each polygon (triangle)
This means that each point on the polygon has the same shade
Gouraud Shading: compute the vertex normal as
根据各个面的法向量,通过插值法求顶点 法向量,且是平均单位法向量
n1 n 2 n 3 n 4 n n1 n 2 n 3 n 4
normals near interior vertex
21
2)双线性插值方法求得多边形内 部(扫描线上)各点的法矢量。
22
3)确定多边形内部各点的光强。
面绘制算法 surface-rendering method
1
回顾光照模型
光照模型(Illumination model)
又称为:光照模型(lighting
model) model)
也称为:明暗模型(shading
建模物体表面某点处的可见颜色计算
简单近似模型:phong模型(已讲)
26
Angel: Interactive Computer Graphics4E © Addison-Wesley 2005
Global vs Local Lighting
全局照明 阴影,反射成像和光线的 遮挡,纹理,透明等 成像是光线在多个面间多 次作用后成的效果 可模拟全局效果 光线跟踪和辐射度方法 可编程绘制可实现近似实 现一些全局光照效果,如 纹理映射,透明效果等 一般离线绘制,实时明暗 绘制时精度降低。
Exception for GLU quadrics and Bezier surfaces (Chapter 11)
5
Plane Normals
Equation of plane: ax+by+cz+d = 0 From Chapter 4 we know that plane is determined by three points p0, p2, p3 or normal n and p0 Normal can be obtained by
14
3)插值面内各点亮度
15
16
Gouraud Shading
Mach band效应还是能察 觉出来。
17
3 Phong明暗处理
Gourand 着 色 获 得 的 平 滑 图 像 , 还 是 能 察 觉 Mach 带效应。而phong处理后会非常光滑。 Phong明暗处理方法由Bui-Tuong Phong提出, 又称为法矢量插值明暗处理。 它不是对明暗度(亮度)颜色进行插值,而是沿扫 描线对其上各点的的法矢量进行插值,以产生中 间各点的法矢量,然后对每个面点进行光照模型 计算。
In OpenGL: glShadeModel(GL_SMOOTH);
Biblioteka Baidu
11
用Gouraud明暗处理的三个步骤:
1. 计算每个多边形顶点处的平均单位法矢量
2. 对每个顶点根据简单光照模型来计算其光强。 3. 多边形表面内的各点光强,进行线性插值。
12
1)计算顶点法矢量
根据各个面的法向量,通过插值法求顶点 法向量,且是平均单位法向量
the average of the normals from its neighborhood polygons
Phong Shading: compute the normal at each pixel from
interpolation
25
Global vs Local Lighting
每个面一种颜色,效率高,真实感差
Gouraud明暗处理(Gouraud surface rendering)
克服了常数明暗法处理中物体表面亮度的不连续性,可应
用于简单的漫反射光照模型。
Phong明暗处理(Phong surface rendering )
法向量插值绘制normal-vector interpolation rendering 在局部范围内真实地反映表面的弯曲性 对镜面反射所产生的高光显示更加真实 但计算量比较大 因计算量大,一般以离线方式实现 在最新图形卡中,光栅化模块可编程,从而允许直接对片元进行操作, 可以实时实现phong着色
18
Phong Shading
Wireframe
Flat
Gouraud
Phong
19
Phong明暗处理的三步骤: 1. 计算每个多边形顶点处的平均单位法矢量。
2. 用双线性插值方法求得多边形内部(扫描 线上)各点的法矢量。
3. 最后按光照模型确定多边形内部各点的光 强。
20
1)计算每个多边形顶点处的平均单 位法矢量。