我正在使用余弦加权半球实现环境光遮蔽。到目前为止,我假设半球以正态 (0,0,1( 为中心,它指向正 z 方向。我使用天顶角和方位角对这个半球投射光线 $0 <\theta <\pi/2, 0 <\phi <2\pi$$,其中射线的方向计算为(sin theta cos phi, sin theta sin phi, cos theta(。
我怎样才能将其概括为适用于任意法线?
查找曲面的局部坐标系。
即让 z 轴为法线。然后,找到 x 和 y 的两个正交轴。这可以通过首先假设(0, 1, 0)
作为 y 轴(如果这是法线,则为备用轴(来实现。然后将 x 轴计算为 x = cross(y, z)
并将 y 轴细化为 y = cross(z, x)
。
然后,您可以使用点计算 ( p
( 作为此坐标系上的权重:
dir = p.x * x + p.y * y + p.z * z