I have a room with env enabled globally. Although it’s inside a cube, the floor reflects the outer sky. How do I prevent this? The ceiling and the walls shouldn’t block the env?
Nope, that’d require realtime ray sampling which is too expensive for webgl graphical capabilities (for non-webgl often as well.)
The only way to avoid this would be to use path tracing renderer (which is not realtime), some kind of custom probing, or baked light.
You could add a different environment map to the floor, and any other materials you don’t want to use your global map.
See three.js docs
envmap intensity 0 gives this. complete dark. is this how it’s supposed to be?
export function WoodFloor() {
const texturePaths = [
'/textures/smoked-walnut-swing/PARKY_0005_SMOKED-WALNUT-SWING-06_AO_1K.jpg',
'/textures/smoked-walnut-swing/PARKY_0005_SMOKED-WALNUT-SWING-06_COL_1K.jpg',
'/textures/smoked-walnut-swing/PARKY_0005_SMOKED-WALNUT-SWING-06_DISP_1K.jpg',
'/textures/smoked-walnut-swing/PARKY_0005_SMOKED-WALNUT-SWING-06_GLOSS_1K.jpg',
'/textures/smoked-walnut-swing/PARKY_0005_SMOKED-WALNUT-SWING-06_NRM_1K.jpg',
'/textures/smoked-walnut-swing/PARKY_0005_SMOKED-WALNUT-SWING-06_ROUGH_1K.jpg'
]
const textures = useTexture(texturePaths)
textures.forEach((texture) => {
texture.repeat.set(5, 5)
texture.wrapS = THREE.RepeatWrapping
texture.wrapT = THREE.RepeatWrapping
})
const [aoMap, map, displacementMap, metalnessMap, normalMap, roughnessMap] =
textures
const dummyEnvMap = new THREE.TextureLoader().load('/textures/dummy-env.jpg')
dummyEnvMap.mapping = THREE.EquirectangularReflectionMapping
return (
<Box args={[floorX, wallZ, floorZ]} castShadow receiveShadow>
<meshPhysicalMaterial
aoMap={aoMap}
map={map}
displacementMap={displacementMap}
normalMap={normalMap}
metalnessMap={metalnessMap}
roughnessMap={roughnessMap}
displacementScale={0}
metalness={0}
roughness={1}
// envMap={dummyEnvMap}
envMapIntensity={0}
/>
</Box>
)
}
and env also make my directional light’s shadow disappear but not point lights


