柔和阴影:球面区域光源



我正在尝试在我的光线追踪器中实现柔和阴影。为此,我计划从交叉点向区域光源拍摄多个阴影光线。我的目标是使用球面区域光 - 这意味着我需要在球体上为射线的方向矢量生成随机点(回想一下,射线是用原点和方向指定的)。

我已经四处寻找在球体上生成随机点均匀分布的方法,但它们似乎比我正在寻找的要复杂一些。有谁知道在球体上生成这些点的任何方法?我相信我的球体区域光源将简单地由其 XYZ 世界坐标、RGB 颜色值和 r 半径来定义。

谢谢,我感谢您的帮助!

Graphics Gems III,第126页:

void random_unit_vector(double v[3]) {    
    double theta = random_double(2.0 * PI);
    double x = random_double(2.0) - 1.0;
    double s = sqrt(1.0 - x * x);
    v[0] = x;
    v[1] = s * cos(theta);
    v[2] = s * sin(theta);
}

(这是MathWorld的球体点拾取文章中给出的四种方法中的第二种。

ETA:如果半径为 r 的球体以 O

中心,而 u 是随机单位向量,则球体表面上的随机点由 O + ru 给出

全局照明纲要中找到了许多很好的随机分布公式。Part 4.B. 具有在(半球)球面上生成点的公式。它是采样、集成等的绝佳参考。

相关内容

  • 没有找到相关文章

最新更新