真实感图形学算法(3)--光照明模型

球面Phong明暗处理光照算法 球面Phong明暗处理源程序 ,开发语言为MFC。程序编译后可以直接运行,程序的原理说明见孔令德《计算机图形学基础教程(Visual C++版)》(第2版)和《计算机图形学实践教程(Visual C++版)》(第2版)。 立即下载

光照明模型原理

光照明模型即根据光学物理的有关定律,计算景物表面上任一点投向观察者眼中的光亮度的大小和色彩组成的公式。对于在光栅图形设备上显示的真实感图形,我们需要依据光照明模型计算每一象素上可见的景物表面投向观察者的光亮度。光照明模型分为局部光照明模型和整体光照明模型。

   局部光照明模型仅考虑光源直接照射在景物表面所产生的光照效果,景物表面通常被假定为不透明,且具有均匀的反射率。局部光照明模型能表现由光源直接照射在漫反射表面上形成的连续明暗色调、镜面上的高光以及由于景物相互遮挡而形成的阴影等,具有一定的真实感效果。整体光照明模型除了考虑上述因素外,还要考虑周围环境对景物表面的影响。例如,出现在镜面上的其他景物的影像,通过透明面可以观察到后面的景物等。整体光照明模型能模拟出镜面影像、光的折射以及相邻景物表面之间的色彩辉映等较精致的光照明效果。

    来自光源和周围环境的入射光照射在景物表面上时,可能被吸收、反射或透射,其中被吸收的入射光能转化为热,其余部分则向四周反射或透射。正是朝视线方向反射或透射的光使景物可见。若朝视线方向辐射的反射或透射光中所有波长的光含量相等,则物体表面将呈现白色或不同层次的灰色。若辐射光中各种波长的光具有不同的分布,则景物呈现出彩色,其颜色取决于辐射光的主波长。由于颜色仅是可见光的一种视觉特性,因此,在光学物理中用光谱分布来描述光的组成。光谱分布表示了一束光中不同波长光所占的比例,它是波长的函数。显然光谱分布惟一地决定了相应可见光的色彩。

3.1 光源属性和物体表面属性

光源的属性包括它向四周所辐射光的光谱分布、空间光亮度分布,以及光源的几何形状。

物体表面属性包括表面的材质和形状。物体表面的材质类型决定了反射光线的强弱。表面光滑的材质将反射较多的入射光,而较暗的表面则吸收较多的入射光。同样对一个透明的表面,部分入射光会被反射,而另一部分被折射。粗糙的物体表面往往将反射光向各个方向散射,这种光线的散射现象称为漫反射。非常粗糙的材质表面主要产生漫反射,因而从各个视角观察到的光亮度是几乎相同的。我们通常所说的物体颜色实际上就是入射光线被漫反射后所表现出来的颜色。

除了漫反射,物体表面还会产生高光,或强光,称为镜面镜面反射。这种高光效果在光滑的物体表面上很明显,而对于阴暗物体表面则效果较差。

3.2  简单的局部光照明模型

从光源发出的光照射到景物表面时,会出现以下三种情况:

   (1) 经景物表面向外反射形成反射光;

   (2) 若景物透明,则入射光会穿透该景物,从而产生透射光;

   (3) 部分入射光将被景物表面吸收而转换为热能。

显然,只有反射光和透射光能够刺激人眼产生视觉效果。

3.2.1 Lambert 漫反射模型

自然界中的绝大多数景物为理想漫反射体, Lambert 余弦定律总结了一个理想漫反射物体在点光源照射下的光的反射规律。根据 Lambert 定律,一个理想漫反射物体表面上反射出来的漫反射光的强度同入射光与物体表面法向之间夹角的余弦成正比。即:

I = kd·Il·cosq                                   (1)

其中,I 为景物表面在被照射点 P 处的漫反射光的光亮度,Il 为点光源所发出的入射光亮度,  kd (0 ≤ kd ≤1) 为景物表面的漫反射率(diffuse reflectivity),q 为入射光与表面法向之间的夹角。

P

若记景物表面在被照射点 P 处的单位法向量为 N,P 到点光源的单位向量为 L,则式(1)可表达为如下的向量形式:

I = kd·Il ·(N·L)                             (2)

显然,当点光源离被照射表面很远时,式(2)中的向量 L变化很小,因而可将 L 看作为一常向量。我们称此时的点光源为方向光,它由一向量完全确定。

 由式(1)可知,当入射角 q >p/2 时,光源位于物体背面,因而该光源对被照射点的光亮度贡献为零。当入射角q = 0即光源垂直照射在景物表面上,此时反射光的强度最大。当入射光线以相同入射角照射在不同材质的景物表面时,这些表面会呈现不同的颜色,这是由于不同材质的表面具有不同的漫反射率。在实际场景中,一个物体表面即使不直接暴露于光源之下,只要其周围的物体被照明,它也可能看得见。 这是由于物体还会接收到从周围环境投射来的光。在图形学中,称这部分光为环境光(ambient light)或泛光。环境光是一种分布式光源,精确模拟它非常耗时。在局部光照明模型中,我们常假定环境反射光是均匀入射的漫反射光,并用一常数来表示其强度。这样 Lambert 漫反射光照明模型可写成:

I = ka·Ia + kd·Il(N·L)                            (3)

其中,Ia 为入射的泛光光强,ka 为景物表面对泛光的漫反射率.

    值得指出的是,式(3)没有反映出光的距离衰减效应。若两个相同材质的物体对光源有相同的朝向,但与光源的距离差距较大,那么采用式(3

OpenGL写的三维球体简单的光照处理 用OpenGL写的三维球体和对球体进行简单光照处理 (本人第一次写这样的程序) 立即下载

相关推荐

球的光照模型完整实现代码(图形学)

此为计算机图形学球的光照模型的课程设计,内有完整代码可直接运行,运行环境为VC6.0,本次课程设计通过构建MFC工程实现了操作界面的可视化,绘制了一个球体,并可通过菜单选项控制显示效果,进行光照模型、材质、光源位置等选择。

π_RL:解锁流匹配VLA强化学习后训练的关键技术与实战解析

本文深入解析了π_RL框架如何通过流匹配(flow matching)与强化学习(RL)的结合,解决视觉语言动作模型(VLA)在后训练中的关键挑战。详细介绍了Flow Noise和Flow SDE两大核心技术,以及它们在机器人控制任务中的实战效果,显著提升了模型的性能、数据效率和泛化能力。

weixin_29061531的博客 220

Docker “docker login“ 失败? 登录阿里云镜像仓库仓库 unauthorized: authentication required

文章目录听说你 login fail?来,让我们解决一下!登录,撒花 听说你 login fail? 美滋滋的在服务器上安装完成Docker应用,开始配置阿里云镜像加速?然后被阿里云官方文档蹂躏?别急别急,让我来拯救你。 我们先来看看 阿里云官方文档 Docker镜像基本操作: 好家伙,emmm… 上来直接就Login Succeeded,这不简直so easy?我们也来照着操作操作: docker@default-online:~$ docker login registry.cn-hangzhou.a

zhuzicc的博客 1万+

使用 DeepSeek 配合 即梦AI 生成视频的详细教程

访问即梦AI官网,选择“AI作图”功能,将DeepSeek生成的提示词逐条粘贴至输入框,选择适配的模型(如“通用XL Pro”)和参数(如画幅比例、风格强度)1113。“我要制作一个关于普洱茶文化的宣传视频,请设计一个30秒的脚本,包含时间轴、画面描述、文案和分镜提示词,以表格形式输出。:云南古茶树群,清晨薄雾,金色晨光,露珠特写,国风山水画质感,16:9画幅,使用Nikon D850参数模拟513。:结合DeepSeek生成的知识点脚本与即梦AI的插画风格,制作科普动画211。

weixin_48995695的博客 3万+

告别JTAG!用Artix-7和SPI Flash实现FPGA远程升级的保姆级教程

本文详细介绍了如何利用Artix-7 FPGA和SPI Flash实现FPGA远程升级(OTA)的完整方案。通过硬件连接、Vivado工程配置和STM32模拟更新等步骤,帮助开发者告别传统的JTAG烧录方式,实现高效、安全的远程固件更新,特别适用于嵌入式系统开发中的现场维护场景。

weixin_33964987的博客 364

论文阅读------Exposure Fusion: A Simple and Practical Alternative to High Dynamic Range Photography

Mertens T, Kautz J, Van Reeth F. Exposure fusion: A simple and practical alternative to high dynamic range photography[C]//Computer graphics forum. Oxford, UK: Blackwell Publishing Ltd, 2009, 28(1): 161-171. 摘要 本文提出了一种将包围曝光的序列融合到高质量图像中的技术,而无需先转换为高动态范围(HD.

qq_25283239的博客 3397

学习STM32的无人机控制

下面是一个基于STM32的无人机控制的简单示例代码,包括四旋翼的PID控制、遥控器信号解析和电机控制。本示例以STM32F103系列为例,使用Keil C编译器进行开发。

qq_67153941的博客 706

【报错解决】OpenClaw 报错 FetchError: request to [https://registry.npmjs.org/](https://registry.npmjs.or

在国产基础软件与云原生生态逐步成熟的背景下,越来越多的开发者开始尝试将 Web 前端、AI 推理、系统服务等组件部署到国产操作系统与国产云环境中。我所在的项目正是这样一个场景: 我们基于 OpenClaw 构建一套云端 AI 管理平台,用于统一管理模型服务、前端控制台与后台 API。

博客 1753

使用R语言整理GEO数据的简易教程

本教程介绍了使用R语言从GEO数据库下载数据并进行数据整理的基本步骤。根据实际研究问题,你可能需要进行更复杂的数据处理和分析。R语言作为一种强大的生物信息学工具,为GEO数据的整理、分析和可视化提供了丰富的功能和工具。希望这个教程能够帮助你入门GEO数据整理和R语言的应用。如果你在使用过程中遇到问题,或需要进一步的指导,请随时向我询问。祝你在GEO数据分析的旅程中取得成功!

Mrrunsen的博客 3743

efm32 入门.pdf

本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

上一篇: JSP实用篇
下一篇: 《大腕》中经典台词的多个版本
Image_Graphics
博客等级 码龄20年 18粉丝 52原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值