在OpenGL中平滑面边缘的技巧

时间:2009-06-05 02:34:24

标签: opengl lighting smoothing

当我使用面法线在OpenGL中点亮我的人体模型时,每个面都在模型上的位置非常明显。使用顶点法线照明变得相当平滑但仍然明显。是否有任何技术可用于平滑有机模型而不添加额外的顶点(例如细分)?

3 个答案:

答案 0 :(得分:6)

如果您看到每个顶点法线的单面,您可能忘记启用平滑面:

glShadeModel(GL_SMOOTH);

如果这没有帮助确保具有相同位置的所有顶点也具有相同的法线。但这应该由搅拌机自动完成。您的模型也可能只有很少的多边形。如果是这种情况,你要么必须使用更多的多边形,要么做贝塞罗所说的。 Create a normal map并将其与GLSL着色器一起使用。

答案 1 :(得分:4)

如果您可以访问更高分辨率的模型/网格,或者可能是一个体面的3d modeling tool,可以通过细分或其他花哨方法创建高分模型...

GLSL per-pixel-lighting + normal maps

更新:

http://www.blender.org/development/release-logs/blender-246/render-baking/

答案 2 :(得分:1)

是的,有许多不同的技术。一种方法是首先计算每个面的法线(您可能正在使用面的顶点)并使用这些法线计算每个顶点的新法线。

这是one,您可以在其中计算五个相邻三角形的平均值。

干杯!