[Review]基于OpenGL的计算机图形学之期末复习提纲

这篇博客主要涵盖了计算机图形学中的全局光照与局部光照概念,解释了全局光照的优缺点。接着,介绍了光线跟踪技术的原理,包括其在镜面反射、阴影和透明效果中的应用。此外,讨论了合成相机模型,以及在实际应用中处理光照顺序的实用方法。最后,提到了OpenGL中绘制三角形的不同方式和多边形处理的注意事项,如Z-Buffer和Double Buffering技术。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


一、Gobal VS Local Lighting

局部光照(Local illumation) 简单说就是只考虑光源到模型表面的照射效果。

特点:速度快,真实度欠佳。

全局光照(Global illumination) 简单的说就是考虑到环境中所有表面和光源相互作用的照射效果。

特点:速度慢,真实度高。

相关课件截图:



二、Ray Tracing

A.简介:

采用Ray Tracing和Radiosity两种技术来计算全局光照

Ray Tracing用于计算镜面反射,灯光透过玻璃的效果和阴影,还有模拟精确的直接照射光产生的阴影。

Radiosity计算每个表面的元素发射的光照量进行计算,并保存到网格当中。

光线跟踪是一种真实地显示物体的方法。

光线跟踪方法沿着到达视点的光线的反方向跟踪,经过屏幕上每一个象素,找出与视线相交的物体表面点Po,并继续跟踪,找出影响Po点光强的所有光源,

从而算出P0点上精确的光线强度,在材质编辑中经常用来表现镜面效果。光线跟踪或称光迹追踪是计算机图形学的核心算法之一。

B.原理:

1)相机的胶片被分成离散的网格(即像素点),我们的目标是确定每一个像素点的颜色值。


2)对于每一个像素,从相机位置追踪一条光线,指向该像素点。

3)对于这束光线,判断其是否和场景中的物体相交。如果相交,则继续步骤4;否则,将背景色填充到当前像素中去,回到步骤2,继续处理下一个像素。

4)如果光线和物体相交,计算物体表面交点的颜色值。该点的颜色值即为该像素的颜色值。

a、首先检查每个光源在该交点的贡献值。追踪一条新光线去光源,用来确定交点是被全部照亮、部分照亮还是没有被照亮,同时确定了阴影。

b、如果物体表面具有反射性质,计算初始光线的反射光线,然后追踪这条反射光线,转到步骤3。

c、如果物体表面具有折射性质,计算初始光线的折射光线,然后追踪这条折射光线,转到步骤3。

d、最终,根据表面性质(反射率、折射率),和不同类型光线计算得出的颜色值,来确定交点的颜色值,即当前像素点的颜色值。

5)回到步骤2,继续下一个像素点。重复这个过程直到像素点都遍历完成。

C.光线跟踪的优点:

        光线跟踪的流行来源于它比其它渲染方法如扫描线渲染或者光线投射更加能够现实地模拟光线,像反射和阴影这样一些对于其它的算法来说都很难实现的效果,

却是光线跟踪算法的一种自然结果。光线跟踪易于实现并且视觉效果很好。实际上可能对于简单的物体如多边形曲面与简单的点源比较简单,原则上,可以产生全球照明效果,阴影和多重反射。

D.光线跟踪的缺点:

  光线跟踪的一个最大的缺点就是性能。光线跟踪是缓慢的,不适合交互应用



相关课件截图:






三、Synthetic Camera Model

合成照相机模式:观察者,物体,光源。

相关课件截图:



四、Practical Approach

按照应用加工的顺序依次访问物体,可以只考虑局部照明

管道结构:

所有步骤可以在硬件的显卡中实现。

1、Vertex Processing:

许多工作在管道转换对象表示从一个坐标系到另一个坐标系:

1)物体坐标

2)相机(眼)坐标

3)屏幕坐标

每一个坐标变换相当于一个矩阵变换。顶点处理器还计算顶点颜色。

2、Clipping&Primitive Assembly

Clipping:就像一个真正的相机不能“看到”整个世界,虚拟摄像头所能看到的只是世界的一部分或对象空间。

Primitive Assembly:顶点必须收集到的几何对象前剪切和光栅化可以发生。线段、多边形、曲线和曲面。

3、Rasterization

如果一个对象没有被裁剪,适当的像素在帧缓冲区必须被指定颜色,光栅产生每个对象的一组片段。

碎片是“潜在的像素”:1.在帧缓冲区中有坐标。2.有颜色和深度的属性。

顶点属性在光栅化过程中插入。

4.Fragment Processing
分段处理:片断被处理去确定帧缓冲中相应像素的颜色。颜色可通过纹理映射或插值顶点的颜色来确定。
颜色可能会被其他更接近于相机的片段阻塞。


相关课件截图:






五、GL_TRIANGLE_STRIP vs GL_TRIANGLE_FAN

一般情况下有三种绘制一系列三角形的方式,
1).GL_TRIANGLES
以每三个顶点绘制一个三角形。

第一个三角形使用顶点v0,v1,v2,第二个使用v3,v4,v5,以此类推。

如果顶点的个数n不是3的倍数,那么最后的1个或者2个顶点会被忽略。

2)GL_TRIANGLE_STRIP

稍微有点复杂,其规律是:

构建当前三角形的顶点的连接顺序依赖于要和前面已经出现过的2个顶点组成三角形的当前顶点的序号的奇偶性(如果从0开始):

如果当前顶点是奇数:

组成三角形的顶点排列顺序:T = [n-1 n-2 n].

如果当前顶点是偶数:

组成三角形的顶点排列顺序:T = [n-2 n-1 n].

以上图为例,第一个三角形,顶点v2序号是2,是偶数,则顶点排列顺序是v0,v1,v2。第二个三角形,顶点v3序号是3,是奇数,则顶点排列顺序是v2,v1,v3,

第三个三角形,顶点v4序号是4,是偶数,则顶点排列顺序是v2,v3,v4,以此类推。

这个顺序是为了保证所有的三角形都是按照相同的方向绘制的,使这个三角形串能够正确形成表面的一部分。

对于某些操作,维持方向是很重要的,比如剔除。

注意:顶点个数n至少要大于3,否则不能绘制任何三角形。

3)GL_TRIANGLE_FAN
与GL_TRIANGLE_STRIP类似,不过它的三角形的顶点排列顺序是T = [0 n-1 n].各三角形形成一个扇形序列。

举个栗子:

顶点v1,v2,v3,v4

GL_TRIANGLE_FAN

先v1,v2,v3再v1,v3,v4这样可以形成一个扇形状得图形。

GL_TRIANGLE_STRIP

先v1, v2, v3, 再 v3, v2, v4 并且确定这些顶点可以形成某个多边形。

 

效率总结:用GL_TRIANGLE_STRIP的效率是远远高于GL_TRIANGLES。

相关课件截图:




<

实验一 OpenGL+GLUT开发平台搭建 5 小实验1: 开发环境设置 5 小实验2: 控制窗口位置和大小 6 小实验3:默认的可视化范围 6 小实验4:自定义可视化范围 7 小实验5: 几何对象变形的原因 8 小实验6: 视口坐标系及视口定义 8 小实验7:动态调整长宽比例,保证几何对象不变形 9 实验二 动画和交互 10 小实验1: 单缓冲动画技术 10 小实验2: 双缓冲动画技术 11 小实验3:键盘控制 13 小实验4:鼠标控制【试着单击鼠标左键或者右键,试着按下鼠标左键后再移动】 14 实验三 几何变换、观察变换、三维对象 16 小实验1:二维几何变换 16 小实验2:建模观察(MODELVIEW)矩阵堆栈 17 小实验3:正平行投影1 19 小实验4:正平行投影2 19 小实验5:正平行投影3 20 小实验6:透射投影1 21 小实验6:透射投影2 22 小实验7:三维对象 24 实验四 光照模型和纹理映射 26 小实验1:光照模型1----OpenGL简单光照效果的关键步骤。 26 小实验2:光照模型2----光源位置的问题 28 小实验3:光照模型3----光源位置的问题 31 小实验4:光照模型4----光源位置的问题 33 小实验5:光照模型5----光源位置的问题 35 小实验6:光照模型6----光源位置的问题 38 小实验7:光照模型7----光源位置的动态变化 40 小实验8:光照模型8----光源位置的动态变化 43 小实验9:光照模型9---光源位置的动态变化 45 小实验10:光照模型10---聚光灯效果模拟 48 小实验11:光照模型11---多光源效果模拟 50 小实验12:光照效果和雾效果的结合 53 小实验13:纹理映射初步—掌握OpenGL纹理映射的一般步骤 56 小实验13:纹理映射—纹理坐标的自动生成(基于参数的曲面映射) 59 小实验14:纹理映射—纹理坐标的自动生成(基于参考面距离) 61
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值