Threejs OBJLoader 的网格似乎有不正确的顶点排序

Threejs OBJLoader'd mesh appears to have incorrect vertex ordering

我正在使用 OBJLoader 将 OBJ 文件加载到我的场景中。

无论出于何种原因,顶点排序似乎都不正常。

这是我在搅拌机中的模型照片:

这是我模型的三张照片:

我之前在模型中看到过类似的效果,这一直是由于顶点排序造成的,所以我假设那里出了问题。

编辑 顺便说一下,请注意在 Blender 中有 none 的字母交叉的三角形。我相信在某处引入的顶点数中可能存在偏移量......也许吧。

代码:

    const mtlLoader = new MTLLoader();
mtlLoader.load('./test.mtl',
    (materials) => {
        materials.preload();

        const objLoader = new OBJLoader();
        objLoader.setMaterials(materials);
        objLoader.load(
            './test.obj',
            (object) => {
                scene.add(object);
            },
            (xhr) => {
                console.log((xhr.loaded / xhr.total * 100) + '% loaded');
            },
            (error) => {
                console.log('An error happened');
            }
        );
    },
    (xhr) => {
        console.log((xhr.loaded / xhr.total * 100) + '% loaded');
    },
    (error) => {
        console.log('An error happened');
    }
)

默认情况下,Three.js只渲染三角形的正面。看起来你的一些脸是颠倒的。确保在 3D 编辑器中计算法线,使它们指向“向外”。这样,当您导出它们时,引擎将知道三角形应该面向哪个方向。

此外,Three.js 不会呈现 n-gons,看起来你的信件中有很多。看'U',是一个平面。确保在导出前转换为三角形。或者至少转换为四边形,这样出口商可以轻松地将它们细分为三边形。