【问题标题】:Faces invisible from one side using Three.js使用 Three.js 从一侧看不见的面孔
【发布时间】:2014-05-16 03:14:55
【问题描述】:

我在页面中加载了一个带有 JPG 纹理的 OBJ 文件 - 从一侧可以看到面,但从另一侧看是不可见的。

面部可见(有点暗 - 抱歉!)

另一面 - 面不可见。

我尝试添加model.doubleSided = true;,但这似乎没有任何改变。

【问题讨论】:

    标签: javascript 3d three.js


    【解决方案1】:

    在材质上添加双面标志。假设你有类似的东西:

    material = new THREE.MeshLambertMaterial ({ color: 0xFF00FF });
    

    添加:

    material.side = THREE.DoubleSide;
    

    或者当你创建材料时:

    material = new THREE.MeshLambertMaterial ({ color: 0xFF00FF, side: THREE.DoubleSide });
    

    编辑:对于返回 Object3D 的 OBJMTL 加载器,我们需要遍历对象以设置适当的标志:

    if (object instanceof THREE.Object3D)
    {
        object.traverse (function (mesh)
        {
            if (! (mesh instanceof THREE.Mesh)) return;
    
            mesh.material.side = THREE.DoubleSide;
        });
    }
    

    【讨论】:

    • 材质是作为 OBJ 文件的一部分加载的,所以我认为我无法更改材质的侧边性。
    • 谢谢!绝对解决了一些模型的问题,但由于某种原因不是全部...... :(
    【解决方案2】:

    尝试添加renderer.setFaceCulling( THREE.CullFaceNone );

    【讨论】:

    • 不幸的是,运气不好!
    猜你喜欢
    • 2012-03-17
    • 2016-03-27
    • 1970-01-01
    • 1970-01-01
    • 2013-01-13
    • 1970-01-01
    • 1970-01-01
    • 2022-06-14
    • 2016-11-25
    相关资源
    最近更新 更多