Home Forums Games202-高质量实时渲染 [作业4]请教 E(u)的计算

Viewing 7 reply threads
  • Author
    Posts
    • #9058 Score: 0
      Neil2077
      Participant

      作业4,2.2.1 预计算 E(u) 的部分:这个是一个双重积分。。。这个怎么用蒙特卡洛方法求解?之前都是搞一重积分。。。请高手指点!先谢过!

    • #9061 Score: 0
      小夜子
      Participant

      公式里是双重积分。但利用蒙特卡洛积分后,其实是对球面进行采样完积分,所以核心是对球面进行采样。

      • #9069 Score: 0
        Neil2077
        Participant

        这个点搞明白了,多谢!
        不过,还是不会做….,继续请教。:)
        IntegrateBRDF()函数的注释: TODO: To calculate (fr * ni) / p_o here
        这里的 fr 就是微表面模型的 brdf 值,对吧? p_o 是样本的 pdf 值?就是这个 ni 是啥。。。。

    • #9072 Score: 0
      Neil2077
      Participant

      又看了一遍文档,尝试 ni==mu_i,即 sin(theta)。。。貌似结果是正确了

    • #9996 Score: 0
      Yui
      Participant

      积分里不是乘的sin(theta)吗,怎么这里用的是n*i,也就是cos(theta)呢?

    • #10220 Score: 0
      闪电的蓝熊猫
      Participant

      这个我查了原paper,发现paper里用的是cos(theta),闫老师讲的是sin(theta),可能是弄错了。

      • #11684 Score: -1
        小木子
        Participant
        -1 pt

        并不是闫大讲错了,是你没有想明白为什么这积分里用cos还是sin的值会一样,原因我发下面了

        This post has received 1 vote down.
    • #11271 Score: 1
      ZETAAAAAAAA
      Participant
      3 pts

      别纠结sintheta,costheta,他就是把反射率方程的Li换成1然后做换元,我们还是对反射率方程做蒙特卡洛积分。可以看下面的推导

      This post has received 1 vote up.
      Attachments:
      You must be logged in to view attached files.
    • #11683 Score: -2
      小木子
      Participant
      -1 pt

      为什么就没人把话说完,ZETAAAAAA的公式是对的,对立体角的积分转化为对theta和phi的积分,再转换为sin theta和phi的积分,其实这三个积分都可以做蒙特卡洛,而且值还都是相等的,那么三次蒙特卡洛的区别在哪里?
      1.积分公式:第一个积分里面是cos,第二个积分里面是cos sin ,第三个积分里面是sin
      2.pdf:(假设都是均匀采样,那么概率密度就是积分区域的倒数)做蒙特卡洛是要当前采样积分结果乘1/pdf的,第一个积分的pdf显然就是半球立体角的倒数1/2pi,第二个积分的pdf(双重积分的pdf用两次采样pdf的乘积)是theta的积分域pi/2的倒数与phi的积分域2pi的倒数乘积= 1 / pi^2,第三个积分的pdf是 sintheta 积分域 1 的倒数 和 phi 积分域 2pi的倒数乘积 = 1/2pi
      综上所述,所以不用纠结积分公式里是sin 还是 cos,因为他们的pdf都是 1/2pi,所以无论是cos还是sin都不会改变这个积分的值

      This post has received 2 votes down.
      • #16106 Score: 1
        shuaigougou5545
        Participant
        1 pt

        还是用第一行的公式,而不是第三行的,这样就是cosθ了

        This post has received 1 vote up.
    • #16113 Score: 0
      Noviorlu
      Participant
      1 pt

      其实这个问题很简单,我们去看一下squareToCosineHemisphere这个蒙特卡洛积分中,他的求导单位是什么就明白了。

      蒙特卡洛积分是对连续函数的离散分析,他的sampleList中的Direction代表的是dwi立体角,而不是dudphi。也就意味着我们积分内的公式应当使用ZETAAAAAAAA的图片中的第一条。所以这里ni代表的就是cos(theta in)而不是ui。

      最后单个离散积分的公式应当是(F * D * G) / (4.0f * NdotV * NdotL) * NdotL / pdf
      这里,
      (F * D * G) / (4.0f * NdotV * NdotL) 是 microfacet brdf
      NdotL 是渲染方程带的 cos(theta in)
      1/pdf 是 蒙特卡洛积分公式自带(得回去复习一下了)

Viewing 7 reply threads
  • You must be logged in to reply to this topic.