为什么两张脸在 ThreeJs 中是看不见的?

Why do two faces appear invisible in ThreeJs?

我在 Blender 中有一个对象。因为我想使用 ThreeJS 进行一些 UV 展开(请参阅 ),所以我确定我需要合并两个边才能正确展开。

因此,在将 .blend 导出为 .obj 对象之前,我选择了 Tris to Quads 面选项来为两侧创建一个方形面,而不是由两个面组成三角形。这是它在 Blender 中的样子:

但是当我将 .obj.mtl 文件导入 ThreeJs 时,我得到了这个:

这是我没有更新添加到新对象的 material 的问题吗? 出现白色的手柄让我觉得是这种情况。如果是这样,我该如何解决?

当我看到这样的东西时,我通常做的第一件事就是将 material 设置为 side: THREE.DoubleSide。如果这有帮助,问题与 normal-directions 有关(所以脸实际上在那里但没有渲染,因为它背对着你)。

要解决此问题,您应该尝试以下操作:

  • 在 Blender 中,您可以在 right-hand 菜单中启用 normal-directions 的显示(select "Face normals in section "Mesh Display")。
  • 您现在应该看看是否有任何法线指向 inwards/in 错误的方向。
  • 有一个自动修复程序适用于正确构建的网格:
    • select 对象并切换到 edit-mode ()
    • select所有顶点(快捷键<A>)
    • 通过菜单 "Mesh" > "Normals" > "Recalculate Outside"(快捷键 +)。