0

我正在开发一个 OpenGL 应用程序,它现在只绘制一个由几个小圆柱体组成的大管(有点像一个紧身的)。当我打开照明和法线时,我得到了一个恼人的效果,因为从某些角度,我在圆柱体的边界上看到了这些恼人的黑点:

单个圆柱体边界上的黑点

我相信这是气缸非常薄的副产品。基本上我在设置顶部/底部时将法线设置为(0,0,+/- 1),然后侧法线是(cos(toRadian(beta)),sin(toRadian(beta)),0)。

是否有可能在获得“更胖”的气缸的情况下消除这种影响?还是我定义法线的方式有问题?

谢谢

4

1 回答 1

0

这似乎是圆柱体侧面的渲染。图像中的黄色对应于圆柱体的顶部。圆柱体的侧面与顶部成 90 度角,因此它们没有被点亮(我猜光线与相机的方向相同)并且看起来是黑色的。由于圆柱体非常薄,这些不会填充像素,因此它们不会显示太多。

如何解决?我有几个想法:

1) 只画顶部和底部,而不是侧面 - 从这个角度看这肯定会解决问题,但如果你的相机移动会导致更多问题。

2)禁用照明,然后所有面将被绘制相同的颜色(假设侧面与顶部的颜色相同)。

3)使用多重采样——这意味着大多数边缘不会出现(因为每个像素更可能是顶部而不是侧面由于角度)。

4) 在场景周围添加更多灯光,垂直于当前灯光。

1 和 2 是您最好的选择,具体取决于您要达到的目标。

于 2011-02-21T13:30:06.113 回答