I’m trying to turn on and off a hdr map in three js.
This is how I create it
//HDRI LOADER
var envmaploader = new THREE.PMREMGenerator(renderer);
const loadhdri = new THREE.RGBELoader()
.load("myhdr.hdr", function (texture){
texture.mapping = THREE.EquirectangularReflectionMapping;
scene.background = texture;
scene.environment = texture;
})
So far so good.
I then add it to the gui:
var gui = new dat.gui.GUI();
var params = {switch: true}
const lightsFolder = gui.addFolder('Customize lights')
lightsFolder.add(params, "switch").name('hdrenv').onChange(updateHdr)
Finally, I try to specify the on/off logic, but when I read the console logs, it’s always printing ‘false’
function updateHdr() {
if (params2==true)
{
scene.environment = texture
console.log("true")}
else
{scene.environment = null
console.log ("else switch false")
}
}
Note that the hdr loads correctly, turns off correctly when I click the switch button, but never turns on again.
Advertisement
Answer
Try to write your updateHdr function like so:
function updateHdr( value ) {
if ( value === true ) {
scene.environment = texture;
console.log( 'true' );
} else {
scene.environment = null;
console.log( 'else switch false' );
}
}