3D地图中光影作用

3D地图的渲染主要基于三维坐标的坐标转换,构造出3D图形在屏幕平面内的可视效果。但是立体图形就等于立体效果了吗?如下图所示,由于立体建筑的侧面都是同一颜色且没有勾勒轮廓线,我们无法区分侧面的分界线,也就没有立体效果。

我们平时在真实世界中是如何感知立体的呢?除了近大远小的透视投影之外,最重要的就是光照所带来的明暗变化,不同面因为在光照下呈现出不同的颜色而能够区分开来,才让我们感知到了立体图形的形状。

如果我们在3D地图中加入光照所带来的明暗变化和阴影,不仅能表现出更强的立体感,还可以模拟物体表面的粗糙度,以及水面的波动,让地图表现得更加真实。

光照基础

冯氏光照模型

光源(投光物)

光照实现

顶点数据

模型矩阵

法向量

光照参数

光强及光源配置

相机位置

光照计算

多光源的处理

漫反射

镜面反射

  1. 传统Phong镜面反射
  2. Blinn-Phong镜面反射

Gouraud着色 vs Phong着色

LDR vs HDR

阴影实现

阴影贴图

阴影着色

改进优化

  1. 性能问题,延迟渲染
  2. 多光源动态支持
  3. 深度精度一致性问题
  4. 相机可视范围与光源可视范围不一致的问题