计算机图形学入门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.mzph.cn/news/862961.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

致远互联FE协作办公平台 codeMoreWidget SQL注入致RCE漏洞复现

0x01 产品简介 致远互联FE协作办公平台是一款为企业提供全方位协同办公解决方案的产品。它集成了多个功能模块,旨在帮助企业实现高效的团队协作、信息共享和文档管理。 0x02 漏洞概述 致远互联FE协作办公平台 codeMoreWidget.jsp接口处存在SQL注入漏洞,未经授权攻…

Python数据分析案例47——笔记本电脑价格影响因素分析

案例背景 博主对电脑的价格和配置一直略有研究,正好最近也有笔记本电脑相关的数据,想着来做点分析吧,写成一个案例。基本上描述性统计,画图,分组聚合,机器学习,交叉验证,搜索超参数…

SpringBoot异常处理

一、自定义错误页面 SpringBoot默认的处理异常的机制:SpringBoot 默认的已经提供了一套处理异常的机制。一旦程序中出现了异常 SpringBoot 会向/error 的 url 发送请求。在 springBoot 中提供了一个叫 BasicErrorController 来处理/error 请求,然后跳转…

鸿蒙开发设备管理:【@ohos.distributedHardware.deviceManager (设备管理)】

设备管理 本模块提供分布式设备管理能力。 系统应用可调用接口实现如下功能: 注册和解除注册设备上下线变化监听发现周边不可信设备认证和取消认证设备查询可信设备列表查询本地设备信息,包括设备名称,设备类型和设备标识 说明&#xff1a…

IIC学习笔记(立创STMF4开发板)

目录 #I2C涉及相关知识 #I2C相关介绍 欢迎指正,希望对你,有所帮助!!! 个人学习笔记,参考文献,链接最后!!! #I2C涉及相关知识 SDA串行数据线: Ser…

昇思25天学习打卡营第11天|基于MindSpore通过GPT实现情感分类

学AI还能赢奖品?每天30分钟,25天打通AI任督二脉 (qq.com) 基于MindSpore通过GPT实现情感分类 %%capture captured_output # 实验环境已经预装了mindspore2.2.14,如需更换mindspore版本,可更改下面mindspore的版本号 !pip uninsta…

java基于微信小程序+mysql+RocketMQ开发的医院智能问诊系统源码 智能导诊系统 智能导诊小程序源码

java基于微信小程序mysqlRocketMQ开发的医院智能问诊系统源码 智能导诊系统 智能导诊小程序源码 医院导诊系统是一种基于互联网和定位技术的智能化服务系统,旨在为患者提供精准、便捷的医院内部导航和医疗就诊咨询服务。该系统整合了医院的各种医疗服务资源&#x…

【软件实施】软件实施概论

目录 软件实施概述定义主要工作软件项目的实施工作区别于一般的项目(如:房地产工程项目)软件实施的重要性挑战与对策软件项目实施的流程软件项目实施的周期 软件企业软件企业分类产品型软件企业业务特点产品型软件企业的分类产品型软件企业的…

PortSip测试

安装PBX 下载 免费下载 PortSIP PBX 安装PBX,安装后,运行 ,默认用户是admin 密码是admin,然后配置IP 为192.168.0.189 设置域名为192.168.0.189 配置分机 添加分机,添加了10001、10002、9999 三个分机&#xff0c…

10分钟完成微信JSAPI支付对接过程-JAVA后端接口

引入架包 <dependency><groupId>com.github.javen205</groupId><artifactId>IJPay-WxPay</artifactId><version>${ijapy.version}</version></dependency>配置类 package com.joolun.web.config;import org.springframework.b…

【递归、搜索与回溯】记忆化搜索

记忆化搜索 1.记忆化搜索2.不同路径3.最长递增子序列4. 猜数字大小 II5.矩阵中的最长递增路径 点赞&#x1f44d;&#x1f44d;收藏&#x1f31f;&#x1f31f;关注&#x1f496;&#x1f496; 你的支持是对我最大的鼓励&#xff0c;我们一起努力吧!&#x1f603;&#x1f603;…

5000字深入讲解:企业数字化转型优先从哪个板块开始?

很多企业都知道数字化转型重要&#xff0c;但不知道应该怎样入手&#xff0c;分哪些阶段。以下引用国内领先数字化服务商 织信Informat 的数字化转型方法论材料&#xff0c;且看看他们是如何看待数字化转型的&#xff1f;数字化转型应该从哪先开始&#xff1f;如何做&#xff1…

P1107 [BJWC2008] 雷涛的小猫

[BJWC2008] 雷涛的小猫 题目背景 原最大整数参见 P1012 题目描述 雷涛同学非常的有爱心&#xff0c;在他的宿舍里&#xff0c;养着一只因为受伤被救助的小猫&#xff08;当然&#xff0c;这样的行为是违反学生宿舍管理条例的&#xff09;。在他的照顾下&#xff0c;小猫很快…

阿里云服务器数据库迁云: 数据从传统到云端的安全之旅(WordPress个人博客实战教学)

&#x1f3ac; 鸽芷咕&#xff1a;个人主页 &#x1f525; 个人专栏: 《C干货基地》《粉丝福利》 ⛺️生活的理想&#xff0c;就是为了理想的生活! 文章目录 一、 开始实战1.2创建实验资源1.3重置云服务器ECS的登录密码&#xff08;请记住密码&#xff09;1.4 设置安全组端口1…

Adobe Acrobat Pro或者Adobe Acrobat Reader取消多标签页显示,设置打开一个pdf文件对应一个窗口。

Windows系统&#xff1a;Adobe Acrobat Pro或者Adobe Acrobat Reader首选项-一般-取消在同一窗口的新标签中打开文档&#xff08;需要重启&#xff09;的对勾&#xff0c;点击确定&#xff0c;彻底关闭后重启&#xff0c;这样打开的每一个PDF文件对应的是一个窗口&#xff0c;并…

Bridging nonnull in Objective-C to Swift: Is It Safe?

Bridging nonnull in Objective-C to Swift: Is It Safe? In the world of iOS development, bridging between Objective-C and Swift is a common practice, especially for legacy codebases (遗留代码库) or when integrating (集成) third-party libraries. One importa…

重磅更新-UniApp自定义字体可视化设计

重磅更新-UniApp自定义字体可视化设计。 DIY可视化为了适配不同APP需要&#xff0c;支持用户自定义字体&#xff0c;自定义字体后&#xff0c;设计出来的界面更多样化&#xff0c;不再是单一字体效果。用户可以使用第三方字体加入设计&#xff0c;在设计的时候选择上自己的字体…

AI副业赚钱攻略:掌握数字时代的机会

前言 最近国产大模型纷纷上线&#xff0c;飞入寻常百姓家。AI副业正成为许多人寻找额外收入的途径。无论您是想提高家庭收入还是寻求职业发展&#xff0c;这里有一个变现&#xff0c;帮助您掌握AI兼职副业的机会。 1. 了解AI的基础知识 在开始之前&#xff0c;了解AI的基础…

一个开源的、独立的、可自托管的评论系统,专为现代Web平台设计

大家好&#xff0c;今天给大家分享的是一个开源的、独立的、可自托管的评论系统&#xff0c;专为现代Web平台设计。 Remark42是一个自托管的、轻量级的、简单的&#xff08;但功能强大的&#xff09;评论引擎&#xff0c;它不会监视用户。它可以嵌入到博客、文章或任何其他读者…

kafka-Stream详解篇(附案例)

文章目录 Kafka Stream 概述Kafka Stream 概念Kafka Stream 数据结构入门案例一需求描述与分析配置KafkaStream定义处理流程声明Topic接收处理结果发送消息测试 入门案例二需求描述与分析定义处理流程接收处理结果声明Topic 更多相关内容可查看 Kafka Stream 概述 Kafka Strea…