计算机图形学入门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,一经查实,立即删除!

相关文章

比较Java爬虫框架:哪个是最佳选择?

探寻最佳Java爬虫框架:哪个更胜一筹? 在当今信息时代,大量的数据在互联网中不断产生和更新。为了从海量数据中提取有用的信息,爬虫技术应运而生。而在爬虫技术中,Java作为一种强大且广泛应用的编程语言,拥…

C++知识点总结 (01):数据类型和数据类型转换

目录 1、基本内置类型(1)算术类型A.整型B.浮点型 (2)字面值常量A.整型字面值B.字符字面值C.指定字面值类型 (3)常量A.What(什么是常量)B.Why(常量有什么用)C.常量表达式和constexpr 2、复合数据类型(1)指针A.What(什么…

TP8 把网址生成二维码 Endroid/QrCode

composer require endroid/qr-code //二维码 use Endroid\QrCode\QrCode; use Endroid\QrCode\Writer\PngWriter; use Endroid\QrCode\Encoding\Encoding; public static function CreateQRcode(string $url,array $postData[],int $type0){// 待转换的网址$url https://www.…

CMake宏定义与预定义的宏

文章目录 前言宏定义命令CMake预定义宏 总结 前言 CMake是一个开源的、跨平台的自动化构建系统,它用于控制编译过程,使得源代码能够独立于计算机和编译器进行编译。在CMake中,宏(Macro)和函数(Function&am…

【LeetCode】分发糖果

目录 一、题目二、解法完整代码 一、题目 n 个孩子站成一排。给你一个整数数组 ratings 表示每个孩子的评分。 你需要按照以下要求,给这些孩子分发糖果: 每个孩子至少分配到 1 个糖果。 相邻两个孩子评分更高的孩子会获得更多的糖果。 请你给每个孩子…

致远互联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…

leetcode226反转二叉树

本文主要讲解反转二叉树的要点与细节,按照步骤思考更方便理解 c和java代码如下,末尾 给你一棵二叉树的根节点 root ,翻转这棵二叉树,并返回其根节点。 具体要点: 1. 首先我们要理解题意, 反转二叉树具体…

MyBatis-Plus:快速入门

1. 概念 MyBatis-Plus(简称 MP)是一个MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。其突出的特性如下: * **无侵入**:只做增强不做改变,引入它不会对现有…

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

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

Kubernetes面试整理-RBAC(基于角色的访问控制) 的理解和配置方法

在 Kubernetes 中,RBAC(基于角色的访问控制,Role-Based Access Control)是一种控制访问权限的机制,用于管理用户和服务账户对集群资源的访问。RBAC 通过定义角色和角色绑定来控制谁可以对哪些资源执行哪些操作。 核心概念 1. Role 和 ClusterRole: ● Role:定义在特定命…

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…

Android Studio中使用命令行gradle查看签名信息

Android Studio中使用命令行gradle查看签名信息: 使用 Gradle 插件生成签名报告 打开 Android Studio 的 Terminal。 运行以下命令:./gradlew signingReport 将生成一个签名报告,其中包含 MD5、SHA1 和 SHA-256 的信息。 如果失败&#xf…

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;…