Материал 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"