计算机图形学入门21:辐射度量学

1.前言

        在使用Blinn-Phong着色模型的时候,定义了一个光的强度I(Intensity),假如I等于10。那么I等于10是什么意思?它肯定有单位和物理意义。另一方面,whited-style光线追踪模型也不是准确的模型,因为做了很多假设,例如光的反射式完美镜像反射,每次折射能量消耗没有考虑。

        所以为了解决上述问题,都可以在辐射度度量学里找到,还有“路径追踪”的基础知识。

2.辐射度量学

        辐射度量学是对光照的一套测量系统和单位,它能够准确的描述光线的物理性质,以物理正确的方向进行照明。并且还是基于几何光学,就是光线是直线传播,不考虑波动性等性质。还定义了光各种各样空间中的属性,如 辐射能量(Radiant Energy),辐射通量(Radiant flux), 强度(Intensity)辐照度(Irradiance)辐射度(Radiance)

2.1 辐射能量和通量

        1.辐射能量指的是辐射出来的电磁能量,记为Q,单位为J(焦耳)。可以用物理当中的做功的大小来进行类比。

        2.辐射通量也称为辐射功率(Radiant Power),指的是辐射能量除以时间,也就是单位时间内发射、反射、传输或接收的能量,记为Φ,单位为W(瓦特)或者lm(流明)。同样也可以用物理当中的功率来进行类比。

        一般偏向用辐射通量来衡量物体的亮度,因为我们更关心的是单位时间的亮度效果。例如在购买白炽灯泡的时候是说30W亮度、50W亮度等,而在购买投影仪的时候则是说3000lm亮度、5000lm亮度等。

        辐射通量还可以从另外一个角度去定义,也就是在单位时间内流过传感器的光子数,在单位时间内流过的光子数更多也就越亮。

2.2 其他物理量

        在具体的物理定义之前,先借助如下一张图建立对剩下3个概念的一些直观的理解。

        1.Radiant Intensity其实就是指从一个光源出发往某一方向上发射的光线的亮度,可以理解为某一方向上的辐射通量(Radiant Flux)。

        2.Irradiance指某一微小平面所接受到的光线亮度。

        3.Radiance指某一微小平面从某个方向接受(或者向某个方向发射)的光线的亮度。

2.2.1 Radiant Intensity

        辐射强度就是从光源发出的每单位立体角方向上的功率,单位为cd,关于辐射功率的定义在上文已经解释,这里唯一还不知道的就是立体角(Solid Angle)了。

        立体角其实就是对应二维空间中圆的弧度在三维空间中球上的延伸。 首先在二维空间下计算弧度公式如下。

        圆的弧度θ = l / r,即圆弧长度除以半径,整个圆形的弧度为,弧度的大小和扇形的角度有关,与圆形的大小没有直接关系。

         那么对于三维的球体来说呢?

        球体的立体角Ω 计算方式如下。

        即立体角度所对应球上的投影面积除以半径的平方,整个球的立体角为,同样立体角和扇形体的两个角度有关,与球体大小没有直接关系。

        那么对于辐射强度(Radiant intensity)的定义当中,单位(微分)立体角 dw 计算如下。

        首先通过θ,Φ两个角度确定空间中一个方向,在这两个角度上分别增加一个值,则可以计算出如图中所示的球上的投影面积。其中rdθ就是单位面积圆的高,rsinθdΦ是单位面积圆的宽,二者相乘就是面积,再根据立体角的定义除以 r的平方 即可得到单位立体角了。

        这里还可以验证下,对dw在整个球上积分,如下图所示。

        可知与球的立体角为一致。

        注意在计算单位立体角之前,我们其实选定了空间当中的一个方向(由θ,Φ所确定),称这个方向为 w,如上图所示然后才在此基础之上分别对 θ,Φ 增加 dθ,dΦ 经计算得到最终的dw。因此辐射强度(Radiant intensity)的物理含义此时就很清楚了,为光源向某一方向的单位立体角发射出的光线的功率,简而言之就是光源在某个方向上的亮度!

        对于各方向亮度一致的点光源计算Radiant Intensity如下。

        因为点光源所有方向上的亮度都与方向无关,因此立体角可以直接积分出来为,最终计算得点光源亮度I = Φ / 4π。 (如果不是各向同性光源的话这里的I(w)应该为一个关于w方向的的函数)。

2.2.2 Irradiance

        Irradiance的定义是每(垂直/投影)单位面积入射到表面点上的功率,单位为lux,如下图所示。

        但上图中irradiance的定义是指光线与单位平面垂直时的计算方式,当光线与单位平面法线有一个夹角时,在计算时光线亮度需要乘上一个cosθ,如下图所示。

        就是光线角度与平面法线有夹角时,相比于光线垂直照射平面,单位面积接受到的光线减少了。

        借助于irradiance,也可以很轻松的解释在着色模型Blinn-Phong所提到的Lambert’s Cosine Law为什么要乘以cosθ了。

        对比现实中,一年四季的温度变化,就是因为太阳照射地球不同区域的光线角度不同。如下图所示。

        还有光线越远会更加衰减的现象也完全可以用irradiance解释。因为光的功率分布均匀,离点光源越远所照射到的圆球面积也就越大,根据irradiance的公式,分母的单位面积值也就越大,irradiance也就衰减到越小,衰减速度为半径 的平方。

        辐射强度Radiant Intensity不会衰减,因为只与立体角有关,与半径 无关。

2.2.3 Radiance

1.定义

        radiance是为了描述光线沿着一条线在传播过程中的属性,一般用于衡量光线携带的能量。其定义是一个表面在单位立体角、单位投影面积上发射、反射、传输或接收的功率。

        注意这里是两次微分,它同时指定了光的方向与照射到的表面所接受到的亮度。简单说就是在一个单位面积上以指定一个方向发射的功率。

        注意radiance既可以用于每单位垂直面积向每单位立体角发射(以及反射、折射等)的功率(Exiting Radiance),也可以用于每单位垂直面积从每单位立体角接收的功率(Incident Radiance)

2.三者关系

        回过头来看一下 Radiant Intensity和Irradiance以及Radiance三者的定义。

                1.Radiant Intensity:每立体角发射的功率

                2.Irradiance:每单位面积接收的功率

                3.Radiance:每单位面积从每立体角接收的功率

        那么,就可以得出如下。

                1.Radiance:Radiant  Intensity / 单位面积

                2.Radiance:Irradiance / 立体角

3.Irradiance与Radiance的关系

        先由如下定义:

        1.Irradiance:在面积dA内接收到的总功率(能量)。

        2.Radiance:面积dA从一个方向上接收到的功率(能量)。无非就是在Irradiance上增加了方向性。

        那么,就可以写出如下图公式。

        E(p)就是点 p 上的所有能量,即从每个方向进来的所有能量积分,所谓积分就是求和。那么该积分式子的物理含义便是一个点(微分面积元)所接收到的光线亮度(irradiance),由所有不同方向(立体角)的入射光线亮度(radiance)共同贡献得到

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/753840.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

VS Code快速选定当前括号中内容 快速选择当前行内容(必备)

文章目录 快速选定当前括号内容效果方法 快速选定当前行内容效果操作 快速选定当前括号内容 效果 方法 下载插件 默认快捷键选中当前括号内容 ctrl w 可修改快捷键 快速选定当前行内容 效果 操作 点击左键三次即可

鸿蒙HarmonyOS自定义组件开发和使用

自定义组件的介绍 在开发和使用自定义组件直接,我们需要了解什么是自定义组件? 在ArkUI中,UI显示的内容均为组件,由框架直接提供的称为系统组件,由开发者定义的称为自定义组件。在进行 UI 界面开发时,通常…

操作系统之《处理器机调度算法》【知识点+详细解题过程】

目录 PS:处理机调度算法相关公式: 1、【FCFS】先来先服务调度算法 2、【SJF(SPF)】短作业(进程)优先调度算法 3、【HRRF】最高响应比优先算法 4、【SRTF】最短剩余时间优先调度算法(抢占式&am…

图解支付账务系统入门

这篇文章主要从研发的视角讲清楚:账务相关的一些基础概念,账务系统核心的职责,以及一些关键模块的设计要点。 进入正题前,先讲个小故事。 几年前一个狂风暴雨电闪雷鸣的下午,老板把负责账务系统的技术经理炒了鱿鱼&a…

Android 14 独立编译 Setting apk

我们在setting 目录下是用 mm 会报错。 所以应该在 源码主目录 采用 make Settings 进行编译 很多时候如果在apk 目录下 mm 单独编译会出错, 都可以才用这种方式进行编译。

Electron录制应用-打包静态文件问题【命令行ffmpeg导不出视频】

问题描述 在开发环境下,所有功能都运行正常,但一旦进行打包并运行生产环境的版本,导出mp4视频的功能就失效了。没有文件生成,也没有任何错误提示。 排查问题 为了找到问题的根源,我首先决定通过日志来追踪。我使用了winston和winston-daily-rotate-file这两个强大的日志…

招聘,短信与您:招聘人员完整指南

招聘人员面临的最大挑战之一就是沟通和联系候选人。为何?我们可以从以下原因开始:候选人通常被太多的招聘人员包围,试图联系他们,这使得你很难吸引他们的注意。在招聘过程的不同阶段,根据不同的工作量,让申请人保持最…

HBuilder X 小白日记01

1.创建项目 2.右击项目&#xff0c;可创建html文件 3.保存CtrlS&#xff0c;运行一下 我们写的内容&#xff0c;一般是写在body里面 注释的快捷键&#xff1a;Ctrl/ h标签 <h1> 定义重要等级最高的(最大)的标题。<h6> 定义最小的标题。 H标签起侧重、强调的作用…

【R语言】plot输出窗口大小的控制

如果需要输出png格式的图片并设置dpi&#xff0c;可采用以下代码 png("A1.png",width 10.09, height 10.35, units "in",res 300) 为了匹配对应的窗口大小&#xff0c;在输出的时候保持宽度和高度一致即可&#xff0c;步骤如下&#xff1a; 如上的“10…

vue2axios的使用

1.安装axios npm i axios 2.配置代理服务器 1.在config.js中配置单个代理服务器 // 开启代理服务器 需要重新启动项目devServer: {proxy: http://localhost:5000}配置简单&#xff0c;请求资源时直接发给前端&#xff08;8080&#xff09;即可&#xff1b;但不能配置多个代理…

11.常见的Transforms(二)

常见的Transforms&#xff08;二&#xff09; 1.Resize() 的使用 1.1 作用 resize可以把输入的图片按照输入的参数值重新设定大小。 1.2 所需参数 需要输入想要重新设定的图片大小。 输入的参数类型可以为包含长和宽数值的一个序列&#xff08;h,w&#xff09;或者一个整…

css做旋转星球可举一反三

<!DOCTYPE html> <html lang"en"><head> <meta charset"UTF-8" /> <title>旋转的星球</title> <style type"text/css">.box {/*position: relative;*/position: absolute;width: 139px;height: 139p…

ASUS/华硕幻13 2022 GV301R系列 原厂Windows11系统

安装后恢复到您开箱的体验界面&#xff0c;带原机所有驱动和软件&#xff0c;包括myasus mcafee office 奥创等。 最适合您电脑的系统&#xff0c;经厂家手调试最佳状态&#xff0c;性能与功耗直接拉满&#xff0c;体验最原汁原味的系统。 原厂系统下载网址&#xff1a;http:…

pdf合并,这三种方法学会了吗?

在信息爆炸的时代&#xff0c;PDF文档凭借其跨平台、不易修改的特性&#xff0c;成为了我们工作和学习中不可或缺的一部分。然而&#xff0c;当面对多个PDF文件需要合并成一个完整的文档时&#xff0c;许多人可能会感到头疼。今天&#xff0c;就让我们一起来探讨三种高效的PDF合…

【python】socket通信代码解析

目录 一、socket通信原理 1.1 服务器端 1.2 客户端 二、socket通信主要应用场景 2.1 简单的服务器和客户端通信 2.2 并发服务器 2.3 UDP通信 2.4 文件传输 2.5 HTTP服务器 2.6 邮件发送与接收 2.7 FTP客户端 2.8 P2P文件共享 2.9 网络游戏 三、python中Socket编…

戴尔md3400存储控制器脱机故障 电池故障处理

看了一下网上关于DELL MD系列存储故障处理的文档还是比较少的&#xff0c;最近处理了一些关于MD系列存储的问题&#xff0c;稍微整理整理就分享一下&#xff0c;各位喜欢摸索的朋友可以稍稍做些参考&#xff0c;当然如果想寻求外援的也可以快速的找到合适的人。以便安全又快捷的…

SBTI(科学碳目标)认证是什么?

SBTI认证&#xff0c;全称为“科学基础目标设置倡议”&#xff08;Science-Based Targets initiative&#xff09;认证&#xff0c;是一种广泛认可的企业可持续发展标准。以下是关于SBTI认证的详细解释&#xff1a; 一、认证目标 SBTI认证旨在推动企业采取可持续的经营实践&a…

Android进阶之路 - DialogFragment有没有了解的必要?

几个月前写到了弹框业务&#xff0c;以前经常用Dialog、ButtomDialog 、popupWindow 组件&#xff0c;为了契合项目结构参考了原有的 DialogFragment 组件&#xff0c;特此予以记录 我一般在项目中写弹框组件的话&#xff0c;主要用到 alertDialog、popupWindow 组件&#xff0…

S32K3 工具篇2:如何在S32DS中使用Segger JLINK下载

S32K3 工具篇2&#xff1a;如何在S32DS中使用Segger JLINK下载 一&#xff0c; S32DS中JLINK下载1.1 Segger JLINK 驱动1.2 S32DS JLINK驱动路径配置1.3 S32DS JLINK debug configuration1.4 S32DS JLINK debug S32K3板子结果 二&#xff0c; JLINK驱动实现S32K344代码下载2.1 …

【Sublime】Sublime Text 中运行终端

Sublime Text 本身并不是一个终端仿真器&#xff0c;可以使用插件来在 Sublime Text 中集成终端功能。最常用的插件之一是“Terminal”。 使用“Terminal”插件在 Sublime Text 中启动终端 以下是安装和使用该插件的步骤&#xff1a; 安装 Package Control&#xff1a; 如果你…