Shadow Volume 5
2017-12-28
静态阴影体的生成方法
生成 Shadow Volume 的方法:
- 遍历模型的所有三角面
- 找出所有面向光源的三角面
- 将这些三角形的边存储到一个 List 中
- 遍历这个 List,如果一条边重复出现两次,则删除这条边
- 最后 List 中剩下的边即为轮廓边,利用这些轮廓边即可生成 Shadow Volume
我发现以上这种方法使用于一些复杂的模型上时会出现问题,所以对上述方法进行了一定的改进
- 遍历模型的所有三角面
- 找出所有面向光源的三角面
- 沿着光照方向直接投射这些三角面,形成 ShadowVolume
- 优化投射出的 ShadowVolume,将不必要的面删除。
这种方法对于很多复杂的模型同样能够得到正确的 Shadow Volume,缺点就是计算量很大,好在我这里都是离线处理静态模型。