第三章光照模型纹理映射
渲染引擎的原理

渲染引擎的原理主要是通过计算机图形学理论,将三维场景中的物体进行建模,然后通过光线追踪的方式模拟物体在光线照射下的物理反应,如反射、折射、阴影等,最终将物体的视觉效果呈现到二维平面上。
具体来说,渲染引擎的原理可以分为以下几个步骤:
1. 建模:首先需要将三维场景中的物体进行建模,可以使用三维建模软件进行创建和编辑。
建模的过程中需要考虑物体的形状、材质、纹理等信息。
2. 光照模型:光照是影响物体视觉效果的重要因素,渲染引擎需要使用光照模型来模拟光线照射下物体的反射、折射和阴影等现象。
光照模型需要考虑光源的位置、类型、强度等因素,以及物体表面的反射率和透明度等材质属性。
3. 纹理映射:纹理是物体表面细节的表现方式之一,渲染引擎需要将物体的纹理映射到物体上,以增强物体的真实感。
纹理映射需要考虑纹理的分辨率、坐标系统、重复模式等因素。
4. 动画和动态效果:在三维场景中,物体可能需要进行运动和动态变化,渲染引擎需要使用动画和动态效果算法来处理这些变化。
这些算法需要考虑物体的运动轨迹、速度、加速度等因素,以及运动过程中的光照和阴影等现象。
5. 渲染输出:最后,渲染引擎将处理后的画面输出到二维平面上,可以使用显示器、打印机等设备进行展示。
渲染输出的过程中需要考虑画面的分辨率、颜色深度、格式等因素。
渲染引擎的实现方式可以因不同的需求和平台而有所不同,但基本原理是相同的。
现代的渲染引擎通常使用图形处理器(GPU)来进行加速,以提高渲染的效率和质量。
以上就是渲染引擎的基本原理和过程,希望对你有所帮助。
纹理映射技术

照条件 . 算画面上可见的各景物表面的光亮度 . 计 以使 观 者 产 生 如临 其 境 , 见 其 物 的 视 觉 效 果 。 算 机 真 实 如 计 感 图形 是 一 种 光 栅 图形 光 栅 图形 显 示 器 的屏 幕 由一 系列 显 示 单 元 组 成 , 一 显 示 单 元 称 为 一 个 象 素 。 成 每 生
t ure} geom e y ext ure; tr t t cour t se extti e lf
随 着 仿 真 、 伪 实 现 、 拟 制 造 、 拟 测 量 等 应 用 虚 虚 虚 的 日益 增 多 . 真 实 感 图 形 的 需 求 也 日益 增 多 。 实感 对 真 图形 是 一 种应 用 计 算 机 图形 学 算 法 生 成 图形 的技 术 利 用 图形 学 算 法 生成 真 实 感 图形 首先 需 要 在 计 算
维普资讯
天 津 轻 工 业 学 院学 报
第 1 ( 期 总第 4 期 ) 20 年 3 0 02 月
.
J U RN A1 O OF ANJ N NI ERS T Y O F LI HT ND USTRY TI I U V I G I No 1S m 4 0 u 0 2 02
在 计 算 机 真 实感 图 形 绘 制 中的 应 用 。 关 键 词 : 照 明 模 型 原 理 ;垃 理 映 射 技 术 ;颜 色 纹 理 ; 何 纹 理 } 程 纹 理 光 几 过
中 图 分 类 号 : 3 74 TP 1. 文献标识码: A 文 章 编 号 :0 14 6 2 0 ) 10 5 4 10 5X(0 20 — 0 20
设 表 面 反 射 率 为 一 常数 。 际 上 , 实 的景 物 表 面存 在 实 真 着 丰 富 的纹 理 细 节 ,人 们 正 是 依 据 这 些 纹 理 细 节 来 区 别 各 种 具 有 相 同形 状 的景 物 , 此 景 物 表 面 纹 理 细 节 因 的 模 拟 在 真 实 感 图 形 合 成 技 术 中 起 着 非 常 重 要 的 作
计算机动与渲染技术

计算机动与渲染技术计算机动与渲染技术是一种应用于计算机图形学领域的技术,主要用于实现图像的渲染和动画的生成。
它涉及到计算机生成的图像和动画的设计、建模、渲染、仿真、渲染等一系列过程。
本文将介绍计算机动与渲染技术的基本概念、应用领域以及未来发展趋势。
一、基本概念计算机动与渲染技术是一门综合性的学科,它借鉴了计算机科学、数学、物理学等多个学科的理论和方法。
其基本概念包括图形建模、渲染算法、光照模型、纹理映射等。
图形建模是计算机动与渲染技术的基础,它用于描述和生成三维图形模型。
常用的图形建模方法有多边形网格建模、体素建模和曲面建模等。
渲染算法是将三维图形模型转化为二维图像的过程。
常见的渲染算法包括光栅化渲染算法、光线跟踪算法和体积渲染算法等。
光照模型用于模拟光与物体之间的相互作用过程,以实现真实感的渲染效果。
常见的光照模型包括Lambert模型、Phong模型和Blinn-Phong模型等。
纹理映射是将二维图像映射到三维模型表面的过程,以增加模型的细节和真实感。
常用的纹理映射方法有贴图、投影纹理和过程纹理等。
二、应用领域计算机动与渲染技术在许多领域有着广泛的应用,包括电影制作、游戏开发、虚拟现实、医学影像等。
在电影制作中,计算机动与渲染技术被用于生成逼真的特效和动画,以提高电影的观赏性和娱乐性。
例如,在《阿凡达》等电影中,计算机动与渲染技术被用于生成惊艳的虚拟世界和逼真的特效。
在游戏开发中,计算机动与渲染技术被用于创建逼真的游戏场景和角色模型。
通过使用材质、纹理和光照效果,使得游戏画面更加细腻和真实。
在虚拟现实领域,计算机动与渲染技术被用于构建虚拟环境和交互体验。
通过模拟真实世界的物理和光照效果,使得用户可以身临其境地沉浸在虚拟环境中。
在医学影像领域,计算机动与渲染技术被用于生成三维医学图像和模拟手术过程。
通过对患者的影像数据进行重建和渲染,医生可以更好地理解患者的病情,并进行手术模拟和规划。
三、未来发展趋势随着计算机技术的不断进步,计算机动与渲染技术也在不断发展。
计算机形学的纹理映射

计算机形学的纹理映射计算机图形学中的纹理映射是一种常见且广泛应用的技术,用于增强三维模型的真实感和细节。
本文将探讨纹理映射的概念、原理和应用,并分析其在计算机图形学领域中的重要性。
一、概述纹理映射是一种将二维图像贴附到三维模型表面的过程。
它通过在三维模型的表面上粘贴纹理图像来模拟真实世界中的材质和细节。
纹理映射可以使平凡的三维模型变得生动,并为渲染引擎提供更真实的光照效果。
二、纹理映射的原理纹理映射的原理可简单描述为以下三个步骤:1. 纹理坐标的计算:为了将二维纹理贴附到三维模型表面上,首先需要计算每个顶点的纹理坐标。
纹理坐标是一个二维向量,指示了纹理图像中的像素位置。
2. 纹理插值:一旦获得了每个顶点的纹理坐标,渲染引擎会根据每个像素的位置在顶点之间进行插值计算,以确定其在纹理图像中的位置。
这样可以确保纹理图像均匀地覆盖整个三维表面。
3. 纹理采样:根据插值计算的纹理坐标,渲染引擎从纹理图像中采样像素值。
采样过程将决定每个像素的颜色和纹理特征。
三、纹理映射的应用纹理映射在计算机图形学中有广泛的应用。
以下是几个常见的应用领域:1. 视觉效果:纹理映射可用于创建逼真的视觉效果,如岩石、树木的表面纹理。
通过将真实世界的图像应用到模型上,可以使其看起来更加真实。
2. 游戏开发:游戏中的角色、场景和物体通常都需要进行纹理映射。
纹理映射可以为游戏提供更好的视觉效果,并增加游戏的沉浸感。
3. 虚拟现实:纹理映射是虚拟现实技术中不可或缺的一部分。
通过在虚拟环境中应用纹理,可以增强用户感知,使其更好地融入虚拟世界。
4. 增强现实:纹理映射在增强现实应用中也扮演着重要角色。
通过在现实世界中投射纹理,可以实现虚拟物体与真实世界的交互。
结论纹理映射是计算机图形学中的重要技术之一,通过将二维纹理应用于三维模型的表面,可以增强模型的真实感和细节。
它在视觉效果、游戏开发、虚拟现实和增强现实等领域都有广泛应用。
纹理映射的原理和应用需要综合考虑,以确保最佳的效果和性能。
虚拟地理环境 第三章 虚拟环境的表达-几何建模

上面介绍了构造表示的三种表示方法,我们已经 看到,构造表示通常具有不便于直接获取形体几 何元素的信息、覆盖域有限等缺点,但是,便于 用户输入形体,在CAD/CAM系统中,通常作为辅助 表示方法。
6.3 边界表示
图3.1.10给出了一个边界表示的实例。边界表示 (Boundary Representation)也称为BR表示或BRep 表示,它是几何造型中最成熟、无二义的表示法。
八叉树表示法有一些优点,近年来受到人们的 注意。这些优点主要是: (1)形体表示的数据结构简单。 (2)简化了形体的集合运算。对形体执行 交、并、差运算时,只需同时遍历参加集合运 算的两形体相应的八叉树,无需进行复杂的求 交运算。 (3)简化了隐藏线(或面)的消除,因为 在八叉树表示中,形体上各元素已按空间位置 排成了一定的顺序。 (4)分析算法适合于并行处理。 八叉树表示的缺点也是明显的,主要是占用 的存储多,只能近似表示形体,以及不易获取 形体的边界信息等。
6.2 构造表示
构造表示是按照生成过程来定义形体的方法, 构造表示通常有扫描表示、构造实体几何表示和 特征表示三种。
(1)扫描表示 扫描表示是基于一个基体(一般是一个封闭 的平面轮廓)沿某一路径运动而产生形体。 可见,扫描表示需要两个分量,一个是被运动 的基体,另一个是基体运动的路径;如果是变 截面的扫描,还要给出截面的变化规律。 图3.2.5 给出了扫描表示的一些例子
还有一个重要的原因是实体造型系统需要与应 用系统的集成。以机械设计为例,机械零件在 实体系统中设计完成以后,需要进行结构、应 力分析,需要进行工艺设计、加工和检验等。 用户进行工艺设计时,需要的并不是构成形体 的点、线、面这些几何和拓扑信息,而是需要 高层的机械加工特征信息,诸如光孔、螺孔、 环形槽、键槽、滚花等,并根据零件的材料特 性,加工特征的形状、精度要求、表面粗糙度 要求等,以确定所需要的机床、刀具、加工方 法、加工用量等,传统的几何造型系统远不能 提供这些信息,以至CAD与CAPP(计算机辅助 工艺过程设计)成为世界性的难题。
02-配合视频讲解纹理的基本概念和纹理映射的基本方法。

让人头疼的纹理(上):颜色纹理华中科技大学软件学院万琳提纲1纹理的概念2纹理的定义和映射3基于OpenGL的颜色纹理1纹理的概念用简单光照明模型生成真实感图象,由于表面过于光滑单调,反而显得不真实。
现实物体表面有各种表面细节,这些细节就叫纹理。
1纹理的概念用简单光照明模型生成真实感图象,由于表面过于光滑单调,反而显得不真实。
现实物体表面有各种表面细节,这些细节就叫纹理。
1纹理的概念用简单光照明模型生成真实感图象,由于表面过于光滑单调,反而显得不真实。
现实物体表面有各种表面细节,这些细节就叫纹理。
1纹理的概念纹理实例:纹理的概念1纹理:体现物体表面的细节纹理类型:◆颜色纹理物体表面(平面或者曲面)花纹、图案◆几何纹理基于物体表面的微观几何形状二维纹理几何纹理2纹理的定义和映射◆生成纹理的一般方法,是预先定义纹理模式,然后建立物体表面的点与纹理模式的点之间的对应。
◆当物体表面的可见点确定之后,以纹理模式的对应点参与光照模型进行计算,就可把纹理模式附到物体表面上。
这种方法称为纹理映射(Texture Mapping)。
像素区物体表面纹理模式2纹理的定义和映射纹理模式定义:•图象纹理:将二维纹理图案映射到三维物体表面,绘制物体表面上一点时,采用相应的纹理图案中相应点的颜色值。
•函数纹理:用数学函数定义简单的二维纹理图案,如方格地毯。
或用数学函数定义随机高度场,生成表面粗糙纹理即几何纹理。
函数纹理定义的方格地毯图像纹理2纹理的定义和映射纹理映射:•建立纹理与三维物体之间的对应关系•扰动法向量图像纹理映射到我们课程原创的动画人物帽子上纹理的定义和映射2◆纹理模式定义方法:纹理空间纹理定义在纹理空间上的函数,纹理空间通常是一个单位正方形区域0≤u ≤ 1,0≤ v ≤1之上。
纹理映射中最常见的纹理•一个二维纹理的函数表示•纹理图象V(0,1)(0,0)(1,0) U⎣⎦⎣⎦⎣⎦⎣⎦⎩⎨⎧⨯+⨯⨯+⨯=evenv u odd v u v u g 881880),(纹理的定义和映射2◆纹理映射方法:建立物体空间表面和纹理空间之间的对应关系根据物体空间的表面坐标(x,y,z)计算其纹理空间坐标(u,v)值:对物体表面坐标(x,y,z)用u 、v 进行参数化(第一步),然后反求出参数u 、v 用物体表面坐标(x,y,z)的表达(第二步);根据纹理空间定义的纹理(u,v)得到该处的纹理值,并用此值取代光照明模型中的相应项,实现纹理映射(第三步)。
计算机图形学课后习题答案

计算机图形学课后习题答案计算机图形学课后习题答案计算机图形学是一门研究计算机生成和处理图像的学科,它在现代科技和娱乐领域扮演着重要的角色。
在学习这门课程时,我们通常会遇到一些习题,用以巩固所学知识。
本文将提供一些计算机图形学课后习题的答案,希望能对大家的学习有所帮助。
1. 什么是光栅化?如何实现光栅化?光栅化是将连续的几何图形转换为离散的像素表示的过程。
它是计算机图形学中最基本的操作之一。
实现光栅化的方法有多种,其中最常见的是扫描线算法。
该算法通过扫描图形的每一条扫描线,确定每个像素的颜色值,从而实现光栅化。
2. 什么是反走样?为什么需要反走样?反走样是一种减少图像锯齿状边缘的技术。
在计算机图形学中,由于像素是离散的,当几何图形的边缘与像素格子不完全对齐时,会产生锯齿状边缘。
反走样技术通过在边缘周围使用不同颜色的像素来模拟平滑边缘,从而减少锯齿状边缘的出现。
3. 什么是光照模型?请简要介绍一下常见的光照模型。
光照模型是用来模拟光照对物体表面的影响的数学模型。
常见的光照模型有以下几种:- 环境光照模型:模拟环境中的整体光照效果,通常用来表示物体表面的基本颜色。
- 漫反射光照模型:模拟光线在物体表面上的扩散效果,根据物体表面法线和光线方向计算光照强度。
- 镜面反射光照模型:模拟光线在物体表面上的镜面反射效果,根据光线方向、物体表面法线和观察者方向计算光照强度。
- 高光反射光照模型:模拟光线在物体表面上的高光反射效果,通常用来表示物体表面的亮点。
4. 什么是纹理映射?如何实现纹理映射?纹理映射是将二维图像(纹理)映射到三维物体表面的过程。
它可以为物体表面增加细节和真实感。
实现纹理映射的方法有多种,其中最常见的是将纹理坐标与物体表面的顶点坐标关联起来,然后通过插值等技术将纹理映射到物体表面的每个像素上。
5. 什么是投影变换?请简要介绍一下常见的投影变换方法。
投影变换是将三维物体投影到二维平面上的过程。
常见的投影变换方法有以下几种:- 正交投影:将物体投影到一个平行于观察平面的平面上,保持物体在不同深度上的大小不变。
了解电脑图形处理的基本原理

了解电脑图形处理的基本原理计算机图形处理是现代计算机技术中的重要领域,它涉及了计算机图像的生成、修改和显示等方面。
了解电脑图形处理的基本原理对于理解计算机图形学的原理及应用至关重要。
本文将介绍电脑图形处理的基本原理,包括图像表示、几何变换、光照模型和渲染等方面。
一、图像表示图像是由像素组成的二维数组,每个像素包含其在图像中的位置和颜色信息。
常见的图像表示方式有位图和矢量图。
位图基于像素的颜色值,可以直接表示图像的细节,但文件较大。
矢量图则通过表示图像的几何形状和颜色信息,文件较小但不能表达细节。
二、几何变换几何变换是指对图像进行平移、旋转、缩放和翻转等操作来改变其位置和大小。
平移操作改变图像的位置,旋转操作改变图像的方向,缩放操作改变图像的大小,翻转操作改变图像的镜像关系。
几何变换可以通过矩阵运算来实现,矩阵中的元素代表了变换的参数。
三、光照模型光照模型用于模拟光在图像中的传播和反射过程,以便更加真实地呈现图像。
光照模型通常包括环境光、漫反射光和镜面反射光等成分。
环境光来自于整个场景的光源,漫反射光是光线照射在物体表面后呈散射的光,镜面反射光是光线照射在物体表面后呈反射的光。
四、渲染渲染是将几何模型、纹理信息和光照模型等进行综合计算,生成最终的图像的过程。
渲染过程涉及到光线追踪、阴影处理、纹理映射、透明度和抗锯齿等技术。
光线追踪是模拟光在场景中传播的过程,用于计算光线的路径和颜色变化。
阴影处理用于模拟物体之间的遮挡关系。
纹理映射用于将图像或纹理映射到物体表面,以增加细节和真实感。
透明度用于模拟物体透明度的效果。
抗锯齿技术用于减少图像边缘的锯齿状效果。
总结:电脑图形处理的基本原理包括图像表示、几何变换、光照模型和渲染等方面。
图像可以通过位图或矢量图来表示,几何变换可以实现图像的平移、旋转、缩放和翻转等操作。
光照模型用于模拟光在图像中的传播和反射过程,渲染过程则将多个因素综合计算生成最终的图像。
了解这些基本原理有助于理解计算机图形学的算法和应用领域,推动计算机图形处理技术的发展和应用。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第三章光照模型及纹理映射基本光照模型1.在现实生活中,当光照在非透明物体上时,部分光线被物体吸收,剩余的部分光线被反射。
人眼依靠这种反射光来感知物体的形状、颜色和其他细节。
从光源投向物体的光称为入射光,从物体表面反射回的光称为反射光。
1.1光照模型概述当光照射到物体表面上时,将出现3种情况:●光从物体表面反射,形成反射光●光穿透物体,形成透射光●光被物体吸收,转化成为物体的内能在上述三种情形的光线中,通常只有前2种情形的光线会对人眼产生视觉效果,使人察觉到物体的色彩变化。
OpenGL用一种近似的光照模型模拟现实世界的光照效果。
在该模型中,仅当物体表面吸收和反射光线时,光源才会起做作用。
每一个物体表面都假定是由某种特性的材料构成的。
一种材料可能发出自己的光线,也可能在各个方向上发散一些射入的光线,还有可能像镜子一样在某个方向强烈地反射入射光。
1.2光照分量在OpenGL的简化光照模型中,将光照分为4个独立的组成部分:辐射光、环境光、漫反射光和镜面反射光。
1)辐射光辐射光是直接从物体或光源发出的,不受任何其他光源的影响。
2)环境光环境光是这样一种光线,它被环境多次反射,以致于连初始方向也难以确定。
这种光线看起来就像来自于所有的方向,当它照在一个物体表面时,它在所有的方向上等量地反射。
3)漫反射光在被照射物体表面的反射光中,那些均匀地向各个方向反射出去的光,称为漫反射光,如黑板反射就属于漫反射光4)镜面反射光镜面反射光是指超一定方向的反射光,如点光源照射光滑金属球表面时,会在球表面形成一个特别亮的区域,呈现所谓的高亮(Highlight>,这就是光源在该物体表面形成的镜面反射光(SpecularLight>。
点光源照射表面光滑的物体时,高亮区域小而亮;而点光源照射表面粗糙的物体时,高亮区域大而不亮。
1.3创建光源光源有许多特性,如颜色、位置、方向等。
不同特性的光源,作用在物体上的效果是不一样的。
1.3.1定义一个简单光源在OpenGL中,定义一个光源是由函数glLight(>来实现的,该函数的原型为:void glLight(GLenum light,GLenum pname>;light为一个光源,pname为光源light指定一个单值的光源参数,其取值及其含义如下表所示:光源的数目与具体的实现的系统有关,但至少支持8个光源。
它们用符号名称GL_LIGHTi相互区别,这里0≤i≤GL_MAX_LIGHTS,如GL_LIGHT0,GL_LIGHT1,…GL_LIGHT7等。
以下的代码定义了一个编号为GL_LIGHT0的光源的例子:GLfloat light_ambient[]={0.0,0.0,0.0,1.0}。
GLfloat light_diffuse[]={1.0,1.0,1.0,1.0}。
GLfloat light_specular[]={1.0,1.0,1.0,1.0}。
GLfloat light_position[]={1.0,1.0,1.0,1.0}。
glLightfv(GL_LIGHT0,GL_AMBIENT,light_ambient>。
glLightfv(GL_LIGHT0,GL_DIFFUSE,light_diffuse>。
glLightfv(GL_LIGHT0,GL_SPECULAR,light_specular>。
glLightfv(GL_LIGHT0,GL_POSITION,light_position>。
光源定义完毕后,必须调用glEnable(GL_LIGHT0>打开该光源,否则该光源对场景中的物体不起作用。
1.3.2 启用光源和激活光源在OpenGL中,如果需要使用光源,首先必须启用光照。
启动光照的函数为:glEnable(GL_LIGHTING>。
取消光照的函数为:glDisable(GL_LIGHTING>。
对于具体定义的各个光源,可以为每个光源指定是否使用和停止使用。
以上一个光源GL_LIGHT0为例。
使用GL_LIGHT0光源的函数为:glEnable(GL_LIGHT0>,停止使用GL_LIGHT0光源的函数为:glDisab le(GL_LIGHT0>。
1.4光源属性光源属性主要有光的颜色强度、光源的位置、光源的衰减特性和光源的聚光效果等。
1.4.1光源颜色定义光源的GL_AMBIENT,GL_DIFFUSE和GL_SPECULAR属性时,参数params包含4个整数值或浮点值,它们分别用来指定光源的RGBA环境光、RGBA漫反射光和RGBA镜面反射光。
整数型数值被线性地映射为浮点格式:最大的正数映射为1.0,最小点的负数映射为-1.0,。
浮点型数值则直接映射。
二者不被截断。
所有光源的GL_AMBIENT环境光强度缺省为(0.0,0.0,0.0,1.0>,光源GL_LIGHT0的DIFF USE漫反射光强度缺省值为(1.0,1.0,1.0,1.0>,其他光源的漫反射光强度缺省值为(0.0,0.0,0.0,0.0>。
光源GL_LIGHT0的GL_SPECULA R镜面反射光强度缺省值为(1.0,1.0,1.0,1.0> ,其他光源的镜面反射光强度缺省值为(0.0,0.0,0.0,0.0>。
以下代码将光源GL_LIGHT0的环境光颜色设置为蓝色:GLfloat light_ambient[]={0.0,0.0,1.0,1.0}。
glLightfv(GL_LIGHT0,GL_AMBIENT,light_ambient>。
1.4.2光源的位置光源的位置有2种,一种离场景无限远,另一种在附近。
远的称为方向光源,它射到物体上的光可以认为是平行的,现实生活中,太阳就是这样的光源。
近的称为位置光源,它的具体位置决定了它对场景的作用效果,尤其是决定了光线的投射方向,台灯就是这样的位置光源。
定义光源的GL_POSITION属性时,参数params包含4个整数值或者浮点值,它们用来指定光源在齐次坐标中的位置。
整数型和浮点型都直接映射,不被截断。
下面的代码定义了光源GL_LIGHT0为方向光源,光源方向为(1.0,1.0,1.0>。
GLfloat light_position[]={1.0,1.0,1.0,0.0}。
glLightfv(GL_LIGHT0,GL_POSITION,light_position>。
下面的代码定义了光源GL_LIGHT0为位置光源,光源位置为(1.0,1.0,1.0>。
GLfloat light_position[]={1.0,1.0,1.0,1.0}。
glLightfv(GL_LIGHT0,GL_POSITION,light_position>。
1.4.3光源的衰减自然世界中的光,光线的强度随光源距离的增加而减少。
因为方向光源的距离是无限远的,随距离的增加而衰减其光线强度是没有意义的,因此对方向光源的光线不进行衰减处理。
对于位置光源,OpenGL使用下面的衰减因子来衰减光线的强度。
衰减因子=其中,d为光源位置到物体顶点之间的距离。
●k c为常数衰减因子(GL_CONSTANT_ATTENUATION>,默认值为1.0。
●k e为线性衰减因子(GL_LINEAR_ATTENUATION>,默认值为0.0。
●k q为二次衰减因子(GL_QUADRATIC_ATTENUATION>,默认值为0.0。
注意:GL_CONSTANT_ATTENUATION,GL_LINEAR_ATTENUATION 和GL_QUADRATIC_ATTENUATION属性时,参数params是一个整数值或浮点值,且只能取非负值。
1.4.4聚光效果控制光源聚光效果的参数有3个,它们分别是:聚光的方向GL_ SPOT_DIRECTION、聚光的发散角GL_SPOT_CUTOFF和光源的强度分布GL_SPOT_EXPONENT。
定义光源的GL_SPOT_DIRECTION属性时,参数params包含3个整数值或浮点值,它们用来指定光源在齐次对象坐标中的方向。
整型数值和浮点数值都直接映射。
二者不被截断。
定义光源的GL_SPOT_CUTOFF属性时,参数params是一个整数值或浮点值,它们用来指定一个光源的最大发散角。
整型数值和浮点数值都直接映射。
其取值范围是[0,90]和特殊值180。
如果光照方向与它所照射的顶点的方向之间夹角大于聚光灯的截止角,光线将被完全屏蔽。
否则,光的强度将受到聚光指数和发散因子所控制。
缺省的聚光灯截止角是180,它产生了均匀的发散光。
定义光源的GL_SPOT_EXPONENT属性时,参数params是一个整数值或浮点值,它们用来指定一个光源的强度分布。
整型数值和浮点数值都直接映射。
其取值范围为[0,128]。
有效的光强度是按照光照方向与它所照射的顶点之间的方向之间的夹角的余弦规律衰减的,一直衰减到聚光指数的幂。
因此,较高的聚光指数就会导致一个较高的汇聚光源,而不管其截止角究竟如何。
缺省的聚光指数是0,它产生了均匀的光强衰减方式。
下面的代码定义了光源GL_LIGHT0的聚光方向为(1.0,1.0,1.0 >,发散角为45°:glLightf(GL_LIGHT0,GL_SPOT_CUTOFF,45.0>。
GLfloat spot_direction[]={1.0,1.0,0.0}。
glLightfv(GL_LIGHT0,GL_SPOT_DIRECTION,spot_direction>。
1.5小结下面介绍使用一个多光源的实例,其中一个光源是标准的蓝色光源,另一个是红色的聚光灯。
代码见附录。
2.纹理映射纹理映射是真实图形制作的一个重要部分,运用纹理映射可以方便地制作真是图形,而不必花更多的时间去考虑物体的表面纹理。
如一张木制桌子其表面的木纹是不规范的,看上去又是那么自然,如果在图形制作中不用纹理映射,那么只是这张桌子面纹理的设计,就要花费很大精力,而且设计结果也未必能像现实中那么自然。
如果运用纹理映射就非常方便,可以用扫描仪将这样的一张桌子扫成一个位图。
然后具体的操作中,只需把桌面形状用多边形画出来,把桌面纹理贴上去就可以了。
另外,纹理映射能够在多边形进行变换时仍保证纹理的图案与多边形保持一致性。
例如,以透视投影方式观察墙面时,远端的砖会变小,而近处的砖就会大一些。
此外,纹理映射也可以用于其他方面。
例如,使用一大片植物的图像映射到一些一些连续的多边形上,以模拟地貌,或者大理石,木纹等自然物质的图像作为纹理映射到相应的多边形上,作为物体的真实表面。