我尝试将环境贴图添加到我的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可以正常工作,而normalMap只能在没有envMap的情况下使用。这是一个已知的问题,有什么方法可以将这两张地图添加到我的mehsphong材料中吗?
答案 0 :(得分:2)
EnvMap和normalMap可以一起工作 - example。你必须在现场有聚光灯。否则你将得到“'vWorldPosition':未声明的标识符”错误。
似乎是phong着色器的原因:
"#if MAX_SPOT_LIGHTS > 0 || defined( USE_BUMPMAP )",
"varying vec3 vWorldPosition;",
"#endif"