Home › Forums › Games202-高质量实时渲染 › [作业4]请教 E(u)的计算 This topic has 10 replies, 8 voices, and was last updated 1 year, 11 months ago by Noviorlu. Viewing 7 reply threads Author Posts 2021年8月11日 at 上午7:31 #9058 Score: 0 Neil2077Participant 作业4,2.2.1 预计算 E(u) 的部分:这个是一个双重积分。。。这个怎么用蒙特卡洛方法求解?之前都是搞一重积分。。。请高手指点!先谢过! 2021年8月11日 at 上午11:23 #9061 Score: 0 小夜子Participant 公式里是双重积分。但利用蒙特卡洛积分后,其实是对球面进行采样完积分,所以核心是对球面进行采样。 2021年8月11日 at 下午5:09 #9069 Score: 0 Neil2077Participant 这个点搞明白了,多谢! 不过,还是不会做….,继续请教。:) IntegrateBRDF()函数的注释: TODO: To calculate (fr * ni) / p_o here 这里的 fr 就是微表面模型的 brdf 值,对吧? p_o 是样本的 pdf 值?就是这个 ni 是啥。。。。 2021年8月11日 at 下午5:34 #9072 Score: 0 Neil2077Participant 又看了一遍文档,尝试 ni==mu_i,即 sin(theta)。。。貌似结果是正确了 2021年12月18日 at 下午3:08 #9996 Score: 0 YuiParticipant 积分里不是乘的sin(theta)吗,怎么这里用的是n*i,也就是cos(theta)呢? 2022年1月5日 at 上午9:46 #10220 Score: 0 闪电的蓝熊猫Participant 这个我查了原paper,发现paper里用的是cos(theta),闫老师讲的是sin(theta),可能是弄错了。 2022年6月7日 at 上午11:29 #11684 Score: -1 小木子Participant Karma: -1 pt 并不是闫大讲错了,是你没有想明白为什么这积分里用cos还是sin的值会一样,原因我发下面了 This post has received 1 vote down. 2022年4月10日 at 上午11:43 #11271 Score: 1 ZETAAAAAAAAParticipant Karma: 3 pts 别纠结sintheta,costheta,他就是把反射率方程的Li换成1然后做换元,我们还是对反射率方程做蒙特卡洛积分。可以看下面的推导 This post has received 1 vote up. Attachments:You must be logged in to view attached files. 2022年6月7日 at 上午11:27 #11683 Score: -2 小木子Participant Karma: -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. 2023年1月4日 at 下午6:31 #16106 Score: 1 shuaigougou5545Participant Karma: 1 pt 还是用第一行的公式,而不是第三行的,这样就是cosθ了 This post has received 1 vote up. 2023年1月14日 at 上午6:08 #16113 Score: 0 NoviorluParticipant Karma: 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 是 蒙特卡洛积分公式自带(得回去复习一下了) Author Posts Viewing 7 reply threads You must be logged in to reply to this topic. Log In Username: Password: Keep me signed in Log In