网格上的一半三角形异常亮起

时间:2015-11-03 08:47:46

标签: opengl mesh surface

我有一个我从导出的网格数据生成的网格物体。网格有一些大三角形,我分成较小的三角形。分裂后,大约一半的法线似乎都没有了。

对于我创建的每个新顶点,我还创建一个新法线,其中数据i从三角形分割中的其他法线之一复制。分割后,我的法线数组与顶点数组的数量相同。然而,出现以下问题:

Exhibit A(动画版本https://i.gyazo.com/2ae87dda9bfbff16b0be421941e8bca6.gif]

我使用的是VBO网格样式。非常感谢任何帮助!

由datenwolf编辑以合并评论中的信息:

启用面部剔除后,渲染结果如下所示:

Exhibit B

1 个答案:

答案 0 :(得分:2)

您的渲染会遇到两个问题:

  • Z战斗:(显然你的网格是"双壁")在那里两面墙的渲染"冲突"在深度测试中。这可以通过启用背面剔除(glEnable(GL_CULL_FACE)
  • 来缓解

然而,对于背面剔除工作,您必须解决另一个问题

  • 不一致的面部绕组/法线方向:看起来网格中的一半面是顺时针指定的,另一半是逆时针指定的。自动绕组正则化是在该Q& A格式中难以触摸的主题。立即建议将网格物体加载到提供此功能的3D建模器中并将其固定在那里(例如Blender,它具有功能" Make Normals Consistent&#34 ;, Ctrl + N热键在编辑模式中)。