Road to Top

导航

Random Point Generation in CG

产生某种形状的均匀分布,最关键的是公式应该是一个保持面积均等的映射,如果把下图的均等化分的小块,映射到新的形状后,小块的面积依然相等:

image 

此图来自Global Illumination Compendium

Triangle

怎样产生三角形内的均匀分布?最直观的方法是基于Barycentric坐标系产生2个均匀分布alpha,beta,应该有alpha+beta+gamma<1,如果r1+r2>1可以使用alpha=1-r1,beta=1-r2。实际上就是把三角形外的点对称回来,两边都是均匀的。

image

另外一个方法是根据三角形中的那一点所分成的面积,alpha = 1-sqrt(r1);beta = (1-r2).*sqrt(r1);gamma = r2.*sqrt(r1); r2就是面积比比如beta/gamma,仔细想想为何需要r1开方?如果不开方,结果是这样的:

image

错误的原因是没有保证面积块相等,应该如下图所示:

image

image 

参考自这里+Graphics Gem I,p24

Sphere

在研读PRT相关文献时,一开始不知道球面均匀分布的坐标如何产生……

imager1是等距的化分,分的的球面面积是相等的,用r1来计算elevation角即可。如果需要加入带有cos项的更加复杂的随机数生成, 请参考Global Illumination Compendium。

以前的看所有些错误,现在修正。

posted on 2010-01-08 18:06  daizeng  阅读(191)  评论(0编辑  收藏  举报