What's the conversion formula for three.js lights?

Hello,

Three.js uses watts as light units whereas Blender Cycles uses so called “light strength units” which has nothing to do with real physics as far as I know.

Do you know the proper formula to convert three.js light characteristics to Blender Cycles ones?

I don’t think this statement is correct. First you have to set WebGLRenderer.physicallyCorrectLights to true. After that, you can indirectly define the intensity of a PointLight via the power property in lumen. The intensity of ambient lights like AmbientLight and HemisphereLight is then defined in lux. This approach is demonstrated in the following demo:

https://threejs.org/examples/webgl_lights_physical

Most other official examples don’t use physically correct lights mode.

1 Like

Thanks for your clarification, but the question’s still open. If I have my lights in three.js measured in lumens/lux, I still don’t have an idea how to convert them to Blender units.

Most other official examples don’t use physically correct lights mode.

However, this is for historical reasons and simplicity. They probably should, and IMO it would be better if three.js adopted physically correct lights as the default.

There’s some info here about how to use proper lighting units in blender.

Once you’re using lux and lumens for your lights in blender, then you can use physically correct lights in three.js and they should match, as long as the exporting/loading process doesn’t break anything. I’d suggest using glTF format and setting up a couple of simple tests to check whether things are working correctly.

1 Like

This is the conversion formula for blender’s units that they suggest in that article:

1.000 W/m2=683.0 lumen/m2 (Lux) at the wavelength of 555.0 nm

It’s only accurate for pure green light which is in the middle of the human vision spectrum, but from what I’ve seen it’s the standard approximation that most renderers use.

2 Likes