Материал envMap и MeshPhong в тройке

Я пытался добавить карту окружения в свой 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,

    } 
    );

Если я изменю Фонг на материал Ламберта, я смогу увидеть твою геометрию и отражение. Ты хоть представляешь, что я сделал не так?

Обновление: я обнаружил, что normal и envMap не работают вместе. Так что envMap работает, если я не использую карту нормалей, а normalMap работает только без envMap. Это известная проблема, и есть ли способ, которым я могу добавить обе карты в свой материал mehsphong?

1 ответ

EnvMap и normalMap могут работать вместе - пример. Вы должны быть в центре внимания на сцене. В противном случае вы получите ошибку "vWorldPosition: undeclared identifier".

Кажется, причина в phong shader:

"#if MAX_SPOT_LIGHTS > 0 || defined( USE_BUMPMAP )",
    "varying vec3 vWorldPosition;",
"#endif"
Другие вопросы по тегам