码迷,mamicode.com
首页 > 其他好文 > 详细

球谐光照总结

时间:2018-06-24 23:58:14      阅读:455      评论:0      收藏:0      [点我收藏+]

标签:lob   球面   cal   计算   www   变换   sub   render   tail   

实习需要学习了一下求谐光照,总结如下:

1. 首先是下面的rendering equation

技术分享图片

第二部分是一个半球面上的积分。

 

2. 球谐变换

类比傅里叶变换[采用定义在圆上的三角函数],球谐变换采用定义在球面上的一组球谐基函数。[Spherical Harmonic Lighting: The Gritty Details]有这些函数的介绍。

现在只需要知道

  • 一个定义在球面上的函数可以近似分解成一组正交基函数的加权和:F(s) ≈ ∑ fi Yi(s).
  • 两个函数f(s),g(s)乘积的积分可以用两个基向量的点积近似表示:∫f(s)g(s)d≈∑ fi gi.
  • 坐标fi的求解,类别向量的点积,函数的点积为积分:fi=∫F(s)Yi(s)d

3. 蒙特卡罗积分

求解fi需要用到神奇的蒙特卡罗积分技术分享图片

 

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

下面可以写代码了,看一下最简单的“dot product lighting”,也就是漫反射模型,对应的渲染方程里面的brdf部分f(p,wo,wi)是一个常数,可以拿出积分号外,现在积分号里面剩下了∫Li(p,wi)*max(n.dot(wi),0)dwi。根据2.2,我们只需要分别投影分解Li(p,wi)和max(n.dot(wi),0)dwi两个函数,利用蒙特卡洛方法求积分的时候还可以加上可见性的判断。注意需要对模型的每一个顶点都需要计算一组基向量fi,如果加上自遮挡的判断会耗费大量时间,例如下面的dragon用了6000s来处理所有的模型顶点。

技术分享图片 技术分享图片

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

贴一下代码

 

球谐光照总结

标签:lob   球面   cal   计算   www   变换   sub   render   tail   

原文地址:https://www.cnblogs.com/redips-l/p/9221982.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!