光源、光照模型 - Read.PPT

  1. 1、本文档共61页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
光源、光照模型 - Read

* 10.5 模拟景物表面细节 颜色纹理:通过颜色色彩或明暗度的变化体现出来的表面细节。 几何纹理:由于不规则的细小凹凸造成的。 颜色纹理取决于物体表面的光学属性,而几何纹理由物体表面的微观几何形状决定。 * 10.5 模拟景物表面细节 用多边形模拟表面细节 纹理的定义和映射 凹凸映射 * 多边形模拟表面细节 简单地模拟景物表面细节的方法是用多边形,称为表面图案多边形,来模拟纹理的结构和模式。 处理时,首先根据待生成的颜色纹理构造表面图案多边形,然后将表面图案多边形覆盖到物体的表面上。 * 纹理映射和定义 生成颜色纹理的一般方法,是预先定义纹理模式,然后建立物体表面的点与纹理模式的点之间的对应。当物体表面的可见点确定之后,以纹理模式的对应点参与光照模型进行计算,就可把纹理模式附到物体表面上。这种方法称为纹理映射(Texture Mapping)。 * 纹理映射和定义 图9 纹理映射中纹理空间、物体空间和像素空间的变换 * 纹理映射和定义 图10 由像素空间向纹理空间的映射 * 凹凸映射 1978年,Blinn提出了一种无需修改表面几何模型,即能模拟表面凹凸不平效果的有效方法——凹凸映射技术(Bump Mapping)。 * 10.6 整体光照模型与光线跟踪 整体光照模型 Whitted光照模型 光线跟踪算法 * 整体光照模型 一个完整的光照明模型应该包括由光源和环境引起的漫反射分量、镜面反射分量、规则透射分量以及漫透射分量等。 仅考虑由光源引起的漫反射分量和镜面反射分量,而环境反射分量则简单地用一常数来代替,这类光照模型称为局部光照模型。 能同时模拟光源和环境照明效果的光照模型称为整体光照模型。 * Whitted光照模型 Whitted在简单光照模型中增加了环境镜面反射光和环境规则透射光,以模拟周围环境的光投射在景物表面上产生的理想镜面反射和规则透射现象。 图11 物体表面的镜面反射和投射 * 光线跟踪算法 光线跟踪(Ray Tracing)方法基于几何光学的原理,通过模拟光的传播路径来确定反射、折射和阴影等。 图12 光线跟踪算法 * 光线跟踪算法步骤 从视点出发,确定穿过每个像素中心的光线路径,然后,沿这束光线累计光强,并将最终值赋给相应像素。 对于每一像素光线,对场景中的所有物体表面进行测试以确定其是否与该光线相交,并计算出交点的深度,深度最大(z值)的交点即为该像素对应的可见点。然后,继续考察通过该可见点的从属光线(Secondary Rays)。 * 光线跟踪算法步骤 对每条从属光线重复过程:与场景中的所有物体求交。然后递归地在沿从属光线方向最近的物体表面上生成下一折射和反射光线。当由每个像素出发的光线在场景中被反射和折射时,逐个将相交物体表面加入到一个二叉光线跟踪树中。当树中的一束光线到达预定的最大深度或到达某光源时,就停止跟踪。 * 光线跟踪算法步骤 图13 光线跟踪及光线跟踪树 * 光线跟踪算法步骤 可以从光线跟踪树的叶结点开始,累计光强贡献以确定某像素处的光强大小。树中每个结点的光强由树中的子结点处继承而来,但光强大小随距离而衰减。像素光强是光线树根结点处的衰减光强的总和。 * 光线跟踪反走样 将光线跟踪算法与过采样方式结合起来,可归纳如下: (1)对每一像素的角点计算光线跟踪的光强。 (2)比较像素4个角点的光强,确定要进行细分的像素。 (3)对细分后新增的角点计算光线跟踪的光强。然后,重复(2)和(3),直到各角点的光强比较接近为止。 (4)加权平均求出投影平面上各像素点的光强。 * 10.7 OpenGL中的光照处理 点光源 全局光照 表面材质 透明处理 * 点光源 在OpenGL场景描述中可以包含多个点光源,光源的各种属性设置使用下面的函数指定。 void glLight{if} (GLenum light, GLenum pname, TYPE param); void glLight{if}v (GLenum light, GLenum pname, TYPE *param); * 点光源 pname取值 默认值 含义 GL_AMBIENT (0.0, 0.0, 0.0, 1.0) 光源中环境光分量 GL_DIFFUSE (1.0, 1.0, 1.0, 1.0) 或(0.0, 0.0, 0.0, 1.0) 光源中漫反射光分量 GL_SPECULAR (1.0, 1.0, 1.0, 1.0) 或(0.0, 0.0, 0.0, 1.0) 光源中镜面光分量 GL_POSITION (0.0, 0.0, 1.0, 0.0) 光源的坐标位置 GL_SPOT_DIRECTION (0.0, 0.0, -1.0) 光源聚光灯方向矢量 GL_SPOT_EXPONENT (0.0) 聚光指数

文档评论(0)

youbika + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档