envMap and MeshPhong Material in three.js



我试图将环境贴图添加到我的PhongMaterial中,但当我这样做时,我的几何体消失了。这是我的代码:

var reflection = THREE.ImageUtils.loadTextureCube( [ 'textures/hdr/pos-x.png', 'textures/hdr/neg-x.png', 'textures/hdr/pos-y.png', 'textures/hdr/neg-y.png', 'textures/hdr/pos-z.png', 'textures/hdr/neg-z.png' ] );
    material = new THREE.MeshPhongMaterial( 
    {   
        map: textures.color,
        normalMap: textures.normal,
        specularMap: textures.specular,
        envMap: reflection,
        combine: THREE.MixOperation, 
        reflectivity: 0.25,
        specular: 0xffffff,
    } 
    );

如果我将Phong更改为Lambert材质,我可以看到几何体和反射。你知道我做错了什么吗?

更新:我发现法线和envMap不能一起工作。因此,如果我不使用法线贴图,则envMap有效,而法线贴图仅在没有envMap的情况下有效。这是一个已知的问题吗?有没有办法把这两张地图都添加到我的mehsphong材料中?

EnvMap和normalMap可以一起工作-例如。你必须把聚光灯对准现场。否则,您将得到"'vWorldPosition':未声明的标识符"错误。

似乎是因为在phong着色器:

"#if MAX_SPOT_LIGHTS > 0 || defined( USE_BUMPMAP )",
    "varying vec3 vWorldPosition;",
"#endif"

相关内容

  • 没有找到相关文章

最新更新