【问题标题】:Techniques to smooth face edges in OpenGL在 OpenGL 中平滑面部边缘的技术
【发布时间】:2009-06-05 02:34:23
【问题描述】:

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

【问题讨论】:

    标签: opengl lighting smoothing


    【解决方案1】:

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

    glShadeModel(GL_SMOOTH);
    

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

    【讨论】:

      【解决方案2】:

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

      GLSLper-pixel-lighting + normal maps

      更新:

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

      【讨论】:

      • 我正在使用搅拌机。出于性能原因,我将模型保持为低多边形。 Phong 着色看起来很有前景,但它不受 OpenGL 的支持,而且这种优势并不能保证性能受到影响。
      • 如果这不是 OpenGL ES 1.1 问题(例如 iPhone),您的硬件可能支持着色器,您可以编写实现 phong 着色 + 法线贴图的着色器。
      • 对,您在 Blender 中创建一个高分辨率模型并使用它来生成法线贴图。创建低分辨率版本并使用法线贴图 + 着色器在最终渲染产品中创建缺失的顶点细节
      【解决方案3】:

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

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

      干杯!

      【讨论】:

      • 链接已失效。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-08-09
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多