胡说八道

学而不思则罔,思而不学则殆

  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 :: 管理 ::
渲染公式的推导:

 L (x->x1) = 积分 ( L (x2->x) * BRDF(x2->x,x->x1) * G (x2,x) * d A(x2)

 其中 
 L (x->x1) 表示x到x1的光的强度
 L (x2->x) 表示x2到x的光的强度 
 BRDF(x2->x,x->x1) 表示从x2->x,x->x1的BRDF
 G (x2,x)= vis(x,x2) *cos(N)*cos(N2)/(length(x2,x) N1,N2分别为x,x2的法线和连线的夹角
 vis(x,x2)表示x,x2的可视关系

 过程:

 我们可以知道从x2->x的能量传递是
 d F(x2->x) = L(x2->x) * d A(x2) * vis(x,x2) *cos(N2) * dw(x2->x)
 d F(x2->x) = L(x2->x) * d A(x) * vis(x,x2) *cos (N) * dw(x->x2)
 照度:
 d E(x2->x) = L(x2->x) * vis(x,x2) *cos(N) * dw(x->x2)

 我们知道 L = E * BRDF
 于是:
 d L(x->x1) = d E(x2->x) * BRDF(x2->x,x->x1)
 = L(x2->x) * vis(x,x2) *cos(N) * dw(x->x2) * BRDF(x2->x,x->x1)

 积分后得到:

 L(x->x1)=积分 L(x2->x) * vis(x,x2) *cos(N) * dw(x->x2) * BRDF(x2->x,x->x1)

 d w(x->x2) = (cos(N2)/length(x,x2)) * d A(x2)

 带入上面的方程:
 L (x->x1) = 积分 ( L (x2->x) * BRDF(x2->x,x->x1) * vis(x,x2) * (cos(N) * cos(N2))/length(x,x2) * d A(x2)

 我们把vis(x,x2)* (cos(N) * cos(N2))/length(x,x2)使用G(x2,x)代替表示几何关系这样就得到了最上面的方程

 L (x->x1) = 积分 ( L (x2->x) * BRDF(x2->x,x->x1) * G (x2,x) * d A(x2)

 结束

 由渲染公式出辐射度公式( 假设x点自身不发光)

 L (x->x1) = 积分 ( L (x2->x) * BRDF(x2->x,x->x1) * G (x2,x) * d A(x2)

 首先:
 对于diffuse反射来说
 BRDF=K/PI; 
 K是漫反射率
 而且
 B=L * PI;

 所以
 L (x->x1) = 积分 ( L (x2->x) * BRDF(x2->x,x->x1) * G (x2,x) * d A(x2)
 可以推导为
 L (x->x1) * PI = PI * 积分 ( L (x2->x) * BRDF(x2->x,x->x1) * G (x2,x) * d A(x2)
 B(x) = 积分 ( B(x2) * BRDF(x2->x,x->x1) * G (x2,x) * d A(x2)
 B(x) = 积分 ( B(x2) * K/PI * G (x2,x) * d A(x2)
 B(x) = K * 积分 ( B(x2) * (G (x2,x) /PI) * d A(x2)

 我们知道
 G (x2,x) = vis(x,x2) *cos(N)*cos(N2)/(length(x2,x))
 G (x2,x) / PI = vis(x,x2) *cos(N)*cos(N2)/(length(x2,x) * PI)
 (G (x2,x) / PI)*d A(x2) = vis(x,x2) *cos(N)*cos(N2)/(length(x2,x) * PI) * d A(x2)
 这个就是我们计算的形状因子F(x,x2)

 B(x) = K * 积分 ( B(x2) * F(x,x2))
 B(x) = K * 总和 ( B(x2) * F(x,x2))

 就得出了辐射度方程

posted on 2004-12-29 11:20  胡说八道  阅读(870)  评论(0)    收藏  举报