大气散射光照模型

大气散射光照模型


 

上面这个图使用大气散射光照模型来计算天空颜色和在晨阳照耀下的薄雾的颜色,不同于传统的天空球和雾的算法,这里很好的诠释了光线(太阳光,天空散射的光,物体反射的光)在大气中传播的效果,效果也更加真实绚丽。

paper list:

precomputed atomspheric scattering:

http://hal.inria.fr/docs/00/28/87/58/PDF/article.pdf

Modeling Skylight and Aerial Perspective

http://developer.amd.com/media/gpu_assets/PreethamSig2003CourseNotes.pdf

Accurate Atmospheric Scattering

http://http.developer.nvidia.com/GPUGems2/gpugems2_chapter16.html

Rendering Outdoor Light Scattering  in Real Time

http://developer.amd.com/media/gpu_assets/ati-lightscattering.pdf

Lighting Research at Bungie

http://www.bungie.net/images/Inside/publications/siggraph/Bungie/SIGGRAPH09_LightingResearch.pptx


讲解理论的话,Modeling Skylight and Aerial Perspective这个比较好,precomputed atomspheric scattering:应该说更全面,但是写的好晦涩,看的累。

bungie的这个是对PreComputedAtomsphericScattering的应用,摘取了主要部分,配上各种图片,容易看多了。


光在空气中的Absorption/OutScattering/InScattering

我们看光从空气中传过来,主要经过了这么几个过程:

  • 视线方向的光,会经过absorption&out scattering,损失了一些亮度,然后进入眼睛
  • 还有一些光,就是别的方向散射进来的,又加强了一些亮度。
其中散射,吸收的计算过程,涉及到光和粒子的交互,是一个和:
  • 光的波长----不同情况下对不同波长的光的吸收和散射不同,因此才有天空在不同时刻的不同颜色
  • 空气分子大小:对于高空干燥的空气,分子小于光的波长,这时候的系数公式和位于浓烟部分的散射系数公式截然不同
  • 空气分子密度
有关的计算过程。
结果呢,对于天空,就是可以正确计算太阳在不同时刻,不同天气状况下天空的颜色。
对于雾效,相比于传统的雾(主要是计算对光线的吸收)可以进一步的带有光的散射效果:





散射系数计算

基本分成两个类型,

  • 高空干燥的空气:使用Raleigh模型

  • 浑浊的空气:使用mie模型,这个之前的blog也提到过,也可以用于计算云的散射

预计算:
做到完全正确的计算,可以说计算量是相当大的,那么在PrecomputedAtomasphericalScattering里面使用了预计算的方式,尽可能把能预计算的部分都预计算,存在贴图里面,这样就具有了比较好的性能。


### 大气散射模型及其误差消除方法 大气散射模型是一种用于模拟光通过地球大气层传播过程中发生的物理现象的技术。它广泛应用于图形渲染和遥感领域,能够帮助生成逼真的视觉效果或提高遥感图像的质量。 #### 图形渲染中的应用 在计算机图形学中,大气散射模型主要用于创建真实的天空盒、日出/日落场景以及雾化效果。这些模型通常基于Rayleigh散射和Mie散射理论[^2]。Rayleigh散射描述的是短波长光线(如蓝光)更容易被空气分子散射的现象;而Mie散射则适用于较大的颗粒物,比如尘埃或水滴,其影响更接近于白光的均匀分布。 为了减少计算复杂性和提升性能,在实际实现时可以采用预计算的方法存储不同条件下的光照强度变化表,并利用插值技术快速查询所需参数值[^3]。这种方法不仅提高了实时渲染效率,还降低了硬件资源消耗。 ```python import numpy as np def compute_scattering_coefficients(wavelength, atmosphere_type='standard'): """ 计算给定波长下对应的大气散射系数。 参数: wavelength (float): 波长(单位:纳米) atmosphere_type (str): 默认标准大气类型 返回: tuple: Rayleigh 和 Mie 散射系数 """ if atmosphere_type == 'standard': rayleigh_factor = 0.0025 mie_factor = 0.1 scattering_rayleigh = rayleigh_factor / (wavelength ** 4) scattering_mie = mie_factor * np.exp(-0.7/wavelength) return scattering_rayleigh, scattering_mie ``` #### 遥感中的应用与误差校正 在遥感领域,由于传感器接收到的数据会受到大气成分干扰,因此需要引入大气辐射传输方程来修正原始观测数据。该过程主要包括以下几个方面: - **路径反射率调整**:考虑太阳高度角、目标表面特性等因素对最终成像亮度造成的影响; - **气体吸收补偿**:针对特定波段内的氧气(O₂)、二氧化碳(CO₂)等物质引起的信号衰减作出相应弥补措施; - **气溶胶光学厚度估计**:通过对可见光至近红外区域敏感性的研究得出合理的估算结果以便进一步优化整体算法精度[^4]。 一种常见的做法是借助MODTRAN或者6S这样的专用软件包完成上述各项任务的同时也提供了灵活可配置选项满足多样化的科研需求[^5]。 --- ### 总结 无论是用于增强虚拟环境的真实感还是改善卫星影像质量,掌握好基础原理并结合具体应用场景选取合适的解决方案都是至关重要的环节之一。以上介绍了一些基本概念和技术手段希望能够对你有所帮助!
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值