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

三种Envorinment Map的Spherical Harmonic Coefficients的计算方法

时间:2015-06-09 19:19:46      阅读:406      评论:0      收藏:0      [点我收藏+]

标签:

        去年10月自学了edx上的公开课Foundation of Computer Graphics,从此就入了图形学的坑。这个课的老师Ravi Ramamoorthi在第一节课上介绍自己的博士论文是关于Spherical Harmonic Lighting的,没想到正好半年后就要学这方面的知识。

        这篇文章介绍如何计算三种Environment Mapping(EN)的Spherical Harmonic Coefficients(SHC)。其中Sphere Map的计算方法是来自Ramamoorthi[1],Cubic MapParabolic Map的计算方法是自GPU Gem2的第十章[2]。

 

基本原理

1. Envorinment Map

        原理可参照参考[3][4]中的资料,理解EM的原理有助于理解如何计算其每个texel对应的Solid Angle

2. Spherical Harmonic

        原理可参照参考[5][6]中的资料,可对照《信号与系统》中的傅里叶变换来理解。还可参考本文最后的  “Spherical Harmonic其他资料”。

 

计算方法

        SHC可由公式1计算得到

                                            技术分享

        对于一个EM来说,公式1可变为

                                                   技术分享

        其中:

                N是texel总数

                L (i)是第i个texel的RGB值

                Y_l_m(i)是第i个texel的Spherical Harmonic Basis Function的值

                dw(i)是第i个texel对应于单位球上的solid angle,满足技术分享

        

        所以,要计算EM的SHC,则需要分别计算出  Y_l_m(i)和  dw(i)。对于不同的EM来说,计算  Y_l_m(i)和  dw(i)的方法是不一样的。

 

Parabolic Map

       Parabolic Map需要计算两面,计算方法相同,以+z面为例,如图所示

                                   技术分享

       Solid Angle:

                              技术分享

       SH Basic Function:

                              由n和v计算出r,由r计算Y_l_m

 

Cubic Map

       Cubic Map需要计算6个面,每个面计算方法是一样的,以+z面为例,如图所示

                                       技术分享

       Solid Angle:

                             技术分享

       SH Basis Function:

                             由(x,y,1)计算Y_l_m

 

Sphere Map

       Ramamoorthi的计算方法是先将Sphere Map的texel映射到单位球上。如下图所示 ,紫色的点代表靠近  Sphere Map圆心的texel,绿色的点代表边缘的texel,越靠近边缘绿色越深。

                                                  技术分享

        Solid Angle:

                             技术分享

                            技术分享

      SH Basis Function:

                            通过单位球上的点(x,y,z)可以计算出Y_l_m

 

        我现在暂时还没有弄明白为什么要这样计算Solid Angle。参考[4]中说Sphere Map边缘的texel应该比中心的texel包含更多的环境信息,按照我的理解边缘的texel对应的Solid Angle应该更大才对。

        用Ramamoorthi的方法可以得到和他论文一样的结果。为了方便计算,均采用PPM格式。

                      技术分享

 

参考

[1] Ramamoorthi, Ravi, and Pat Hanrahan,  "An Efficient Representation for Irradi-ance Environment Maps," Computer Graphics (SIGGRAPH 2001 Proceedings), pp. 497-500, August 2001.

[2] Gary King, “Real-Time Computation of Dynamic irradiance Environment Maps,” GPU Gems 2.

[3] Jason Zink, “Dual Paraboloid Mapping In The Vertex Shader,”gamedev.net.

[4] Paul Zimmons, “Final Project : Spherical, Cubic, and Parabolic Environment Mappings,”

[5] Robin Green, “Spherical Harmonic Lighting : The Gritty Details,”

[6] Peter_Pike Sloan, “Stupid Spherical Harmonics(SH) Tricks,”

 

附:Spherical Harmonic其他资料

[1] kayru.org/articles/spherical-harmonics-in-games/

[2] http://www.yasrt.org/shlighting/

[3] Kelly Dempski, “Advanced lighting And materials With Shaders”

三种Envorinment Map的Spherical Harmonic Coefficients的计算方法

标签:

原文地址:http://www.cnblogs.com/RenewGT/p/4563793.html

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