网格上的一半三角形异常亮起
Half of the triangles on a mesh are unusually lit
我有一个从导出的网格数据生成的网格。网格有一些大三角形,我将它们分成较小的三角形。分裂后,大约有一半的法线看起来不对。
对于我创建的每个新顶点,我还创建了一个新法线,其中包含我从正在拆分的三角形上的其他法线之一复制的数据。拆分后,我的法线数组与顶点数组的数量相同。然而,出现以下问题:
(animated version here https://i.gyazo.com/2ae87dda9bfbff16b0be421941e8bca6.gif]
我使用的是 VBO 网格样式。非常感谢任何帮助!
datenwolf 编辑以合并来自评论的信息:
启用面部剔除后的渲染结果如下所示:
您的渲染有两个问题:
- Z格斗:(显然你的网格是"double walled")深度测试中两面墙的渲染"conflict"。这可以通过启用背面剔除来缓解 (
glEnable(GL_CULL_FACE)
)
然而,要使背面剔除起作用,您必须解决另一个问题,即
- 不一致的面绕组/法线方向:您的网格中似乎有一半面是顺时针指定的,另一半是逆时针指定的。自动缠绕正则化是一个太复杂的主题,无法在这种问答形式中触及。直接的建议是将网格加载到提供此功能的 3D 建模器中并在那里修复它(例如 Blender,它具有功能 "Make Normals Consistent",编辑模式下的 Ctrl+N 热键)。
我有一个从导出的网格数据生成的网格。网格有一些大三角形,我将它们分成较小的三角形。分裂后,大约有一半的法线看起来不对。
对于我创建的每个新顶点,我还创建了一个新法线,其中包含我从正在拆分的三角形上的其他法线之一复制的数据。拆分后,我的法线数组与顶点数组的数量相同。然而,出现以下问题:
我使用的是 VBO 网格样式。非常感谢任何帮助!
datenwolf 编辑以合并来自评论的信息:
启用面部剔除后的渲染结果如下所示:
您的渲染有两个问题:
- Z格斗:(显然你的网格是"double walled")深度测试中两面墙的渲染"conflict"。这可以通过启用背面剔除来缓解 (
glEnable(GL_CULL_FACE)
)
然而,要使背面剔除起作用,您必须解决另一个问题,即
- 不一致的面绕组/法线方向:您的网格中似乎有一半面是顺时针指定的,另一半是逆时针指定的。自动缠绕正则化是一个太复杂的主题,无法在这种问答形式中触及。直接的建议是将网格加载到提供此功能的 3D 建模器中并在那里修复它(例如 Blender,它具有功能 "Make Normals Consistent",编辑模式下的 Ctrl+N 热键)。