我正在尝试渲染6个聚光灯来创建一个用于阴影贴图算法的点光源。
我不确定我这样做是否正确,在设置视图和投影矩阵时,我或多或少遵循了here的说明,但最终结果如下所示:

白色区域是被6个阴影贴图之一覆盖的部分,较暗的区域是那些没有被阴影贴图覆盖的区域。显然,我对茶壶和盒子的阴影投影到场景上没有问题,但是你可以看到6个阴影贴图有盲点。这是立方体阴影贴图应该看起来的样子吗?它看起来不像是点光源的阴影贴图...
发布于 2009-12-13 20:02:31
实际上,你可以调整你的六个点,让圆锥体完美地填满立方体地图的每一面。您可以通过设置每个圆锥体的光圈来围绕每个立方体贴图面创建一个外接圆来实现这一点。在这种情况下,你不必担心重叠,因为重叠的部分超出了面部的区域。
换句话说:调整灯光的“投影矩阵”FOV,这样就不会出现包含光锥的视锥,但视锥将包含视锥。
整个实现see this paper。
发布于 2009-12-12 21:23:33
你在这里看到的是一个圆和两条双曲线--圆锥截面--这就是你所期望的结果,如果你取一个双端圆锥,并将它与一个平面相交。
这个数学可能看起来与情况无关,但它解释了你的问题。聚光灯会产生一个圆锥体,你不能用来自同一点的一堆圆锥体来完全填满一个实体空间。(我建议卷起一堆纸,把它们粘在一起,然后试一试。)
然而,当你远离模拟点源的原点时,圆锥体会聚到它们的渐近线上,并且在光线中有一个无限窄的缝隙。
解决这个问题的一种选择是改变圆锥体的焦点,使它们稍微重叠--这将产生过度曝光的区域,但过度曝光只会随着距离的增加而变得明显。只要所有对象都在点光源附近,这可能不是什么大问题。
另一种选择是将所有灯光的焦点移到更靠近其光源的位置。这样,他们会更快地收敛到他们的渐近状态。
https://stackoverflow.com/questions/1890125
复制相似问题