CesiumJS进阶之路:IBL、动态环境贴图与环境光遮蔽技术升级

欢迎关注公众号【sky的数孪技术】

随着Cesium在Unreal Engine和Unity中的普及,原生应用开发者对地理空间应用的视觉表现提出了更高要求。游戏引擎特有的动态日光系统、光探针和全局光照等技术已开始应用于地理空间领域。CesiumJS团队一直在探索基于浏览器的地理空间三维应用的次世代光照方案。

反射环境的抛光金属球的 glTF 模型,使用改进的基于图像的照明和 HDR 图像环境贴图在 CesiumJS 中渲染

良好的照明对于充分利用基于物理的渲染(PBR)至关重要,PBR 是模型和 3D Tiles 中常见的渲染技术。想象一下抛光的金属球:它看起来平坦而暗淡,没有任何东西可以反射。通过改进glTF材质模型,Cesium团队在最近几个版本中重点提升了光照系统,主要包括:

  • 图像基照明(IBL)流程优化
  • 动态生成环境贴图
  • 尺度无关的环境光遮蔽

纽约建筑 3D 图块集,在 CesiumJS 中渲染,使用环境光遮蔽,更新照明之前(左,版本 1.121)和更新照明之后(右,版本 1.125)。更改的整体效果是照明更加逼真,模型形式也更容易理解

基于图像的照明技术演进

作为CesiumJS沿用多年的核心技术,基于图像的照明(IBL)通过半球形光照贴图模拟复杂光照环境。最新版本将方向光(如根据时空位置精确计算的太阳光)与IBL结合,实现了更真实的光照效果。典型案例如noe-3d.at提供的模型:纯方向光(左)、纯IBL(中)、混合模式(右),后者展现出更强的立体感和场景代入感。

IBL 是一种颇具吸引力的方法,因为它使用单个环境贴图模拟复杂的照明环境,例如来自天空的半球照明、来自地面的漫反射以及场景中的任何其他光源。此贴图将高动态范围的照明信息编码在全向纹理中,通常使用用户提供的 HDR 图像或在运行时生成的程序纹理。

动态环境贴图突破

传统方案需依赖外部工具预处理HDR贴图,流程繁琐。新版CesiumJS支持动态生成环境贴图,可实时响应时间变化、大气条件或模型位置变动。

GPU 上的运行时生成

动态环境贴图是在 GPU 上创建的,可以近乎实时地更新以反映当前的太阳位置和模型位置。当一天中的时间、大气设置或模型位置发生重大变化时,环境贴图可以在后台几帧内更新。

以 _Damaged Helmet glTF _为例,1.121版本(左)使用默认光照,1.125版本(右)通过动态环境贴图实现更真实的反射效果。开发者还可自定义光照强度和地面反射颜色参数。

基于GPU的大气散射

Cesium里是通过复用现有时间来驱动天空渲染着色器,通过视角适配实现从日出日落到高空飞行等不同光照条件的模拟。金属球体在晨(左)、正午(中)、黄昏(右)的反射效果展示,验证了动态环境贴图的实时适应性。

性能优化策略

针对低粗糙度材质(如镜面金属),需对环境贴图进行数千次采样计算。为平衡性能,Cesium采用以下优化方案:

  • GPU预计算:模型加载时生成数据结构
  • 环境贴图存储为立方体贴图:以便根据反射光线的方向快速查找
  • mipmap分级存储:粗糙度对应不同LOD的镜面反射图
  • 球谐系数:存储三阶RGB辐射度,快速计算漫反射

从八面体投影到立方体贴图

WebGL 2时代,Cesium摒弃了旧有的八面体投影方案,改用原生立方体贴图。简化了GPU工作流,修复了LOD选择等历史问题,显著提升渲染效率。

环境光遮蔽技术升级

环境光遮蔽( AO ) 是理解无纹理模型(如 OSM 建筑数据或建筑设计模型)形状和深度的关键。此技术使接收较少环境光或间接光的区域(如角落或折痕)变暗,从而产生柔和阴影的效果。

作为增强模型体积感的关键技术,新版采用屏幕空间后处理方案:

  • 修复原有实现缺陷
  • 引入基于视点距离的动态采样步长
  • 高斯分布衰减算法:随距离增加阴影渐变宽度

以noe-3d.at的建筑模型为例,环境光遮蔽单独使用时即可清晰呈现结构细节。结合IBL和方向光后,达到接近全局光照的视觉效果,却无需烘焙等预处理步骤。

基于地平线的环境光遮蔽 (HBAO)

基于地平线的环境光遮蔽(HBAO) 使用采样来确定从某个位置看不到天空半球的最小角度。当在多个方向上重复此操作时,我们可以估算出场景中到达每个像素的光线百分比。此技术有助于在视觉上传达场景中物体之间的深度、形状和空间接近度,并且可以在屏幕空间中执行以获得更好的运行时性能,而无需预先计算照明。

技术前瞻

最后Cesium官方也提到了未来在以下方面会持续改进:

  • HDR贴图易用性API
  • 阴影渲染优化
  • 屏幕空间遮蔽参数自适应
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

搞GIS图形的sky.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值