Ambient Occlusion(环境光遮蔽

1️⃣ AO(Ambient Occlusion)概念

Ambient Occlusion(AO) 是一种全局光照的近似技术,用来模拟环境光被物体遮挡的效果。

  • 环境光(Ambient Light):来自四面八方的漫反射光,不来自特定光源。

  • 遮蔽(Occlusion):物体之间相互遮挡,使某些表面收到的环境光减少。

效果

  • 凹陷、角落、接缝处看起来更暗

  • 外凸、暴露面更亮

  • 提升场景深度感和真实感

例子

  • 房间角落比中心暗

  • 树叶下方比顶端暗

  • 模型接缝、折角处暗

AO 不直接依赖光源,而是基于几何形状之间的遮挡关系计算光照衰减。


2️⃣ AO 的实现方式

  1. 预计算 AO(Precomputed AO / Lightmap)

    • 在建模或烘焙阶段计算 AO 并存储到纹理(Lightmap)

    • 运行时直接贴图渲染,性能开销低

    • RenderWare 的 AO 插件就是这种方式

  2. 屏幕空间 AO(SSAO, Screen Space Ambient Occlusion)

    • 基于摄像机视角的深度缓冲计算

    • 实时 AO,适合动态场景,但消耗 GPU

  3. 射线追踪 AO

    • 精确模拟遮挡关系

    • 开销大,适合渲染静态场景或电影级渲染


3️⃣ 在 RenderWare 中 AO 的作用

看你贴的 RpAmbOcclMapPluginAttach

  • Atomic 扩展:存储每个对象的 AO 数据

  • Geometry 扩展:存储 AO UV 和标记是否被 Lightmap 覆盖

  • World 扩展:存储场景中所有 AO Lightmap 列表

  • Material 扩展:存储 AO 相关材质信息(光照衰减系数等)

原理

 
场景几何 -> AO 计算 -> AO Lightmap -> 渲染时叠加到材质 -> 角落更暗,凸起更亮

🔹 总结

  • AO = Ambient Occlusion(环境光遮蔽)

  • 作用是让场景凹凸感更明显,提高真实感

  • RenderWare 通过插件扩展对象(Atomic/Geometry/World/Material)来存储和管理 AO 数据

  • AO 数据通常以 Lightmap 纹理 形式保存

posted on 2025-10-08 01:09  lydstory  阅读(24)  评论(0)    收藏  举报

导航