2013-07-17 91 views
2

我試圖給我的PhongMaterial添加環境貼圖,但是當我這樣做時,幾何圖形消失。這裏是我的代碼:envMap和three.js中的MeshPhong材質

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更改爲朗伯材料,我可以看到你的幾何和反射。你知道我做錯了什麼嗎?

更新:我發現正常和envMap不能一起工作。因此,如果我不使用普通的Map,envMap就可以工作,並且normalMap只能在沒有envMap的情況下工作。這是一個已知的問題,是否有任何方法可以將這兩個地圖添加到我的mehsphong材料中?

回答

2

EnvMap和normalMap可以一起工作 - example。你必須有聚光燈在現場。否則,你會得到「'vWorldPosition':未聲明的標識符」錯誤。

似乎是原因是在着色的Phong:

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