【问题标题】:Cylinder Normals圆柱法线
【发布时间】:2011-02-06 18:22:18
【问题描述】:

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

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

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

谢谢

【问题讨论】:

  • 看起来好像没有从该图像启用照明。您是否需要绘制每个圆柱体的顶部和底部?另外,是否有任何有效的比例矩阵?
  • 光线很远,所以它们都同样亮(因此看起来是平的,这张照片是看着几乎垂直于其顶部/底部的圆柱体)。不,没有有效的比例矩阵。 (是的,我需要顶部底部,否则我最终会得到一个我不想要的空心管)。编辑:可能是由于缺乏抗锯齿,或者这些线条中的某些东西,因此这些边界看起来参差不齐?
  • 更有可能你没有启用人脸剔除?
  • 开启/关闭面部剔除没有任何区别......那些恼人的故障仍然存在......

标签: opengl graphics normals


【解决方案1】:

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

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

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

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

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

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

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

【讨论】:

    猜你喜欢
    • 2016-05-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-25
    • 1970-01-01
    • 1970-01-01
    • 2021-07-05
    • 2017-02-01
    相关资源
    最近更新 更多