Javascript 使用Three.js从一侧看不可见的面

Javascript 使用Three.js从一侧看不可见的面,javascript,3d,three.js,Javascript,3d,Three.js,我将一个带有JPG纹理的OBJ文件加载到一个页面中——从一侧看,这些面是可见的,但从另一侧看,它们是不可见的 面部可见(有点暗-抱歉!) 其他侧面-不可见 我尝试添加model.doubleside=true但这似乎没有改变任何事情。尝试添加渲染器.setFaceCulling(三个.CullFaceNone)在材料上添加双面标志。假设您有类似于: material = new THREE.MeshLambertMaterial ({ color: 0xFF00FF }); 加: 或者在创

我将一个带有JPG纹理的OBJ文件加载到一个页面中——从一侧看,这些面是可见的,但从另一侧看,它们是不可见的

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

其他侧面-不可见


我尝试添加
model.doubleside=true但这似乎没有改变任何事情。

尝试添加
渲染器.setFaceCulling(三个.CullFaceNone)

在材料上添加双面标志。假设您有类似于:

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

或者在创建材质时,请执行以下操作:

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文件的一部分加载,因此我认为我无法更改材料的侧面。谢谢!确实解决了一些模型的问题,但由于某些原因,并非所有…:(不幸的是,运气不好!
if (object instanceof THREE.Object3D)
{
    object.traverse (function (mesh)
    {
        if (! (mesh instanceof THREE.Mesh)) return;

        mesh.material.side = THREE.DoubleSide;
    });
}