Hello! I just wanted to follow up with my findings on this issue in case it could help out anybody else in the future. Before I posted initially, I just tried to eyeball the correct intensity values for the lights that were imported from the Blender GLTF.

I found that a value of about 10% of the original “Watts” value from Blender was pretty close. But I wanted it to be as close to the original as possible since this 3d implementation was going to be only one of the uses across multiple platforms.

So, as I mentioned above and as @looeee helped me out with, I found some conversion formulas in a github post that discussed this issue. But unfortunately the formula that @looeee provided seemed to still be missing something when I tried to implement it. So I tinkered around a bit and finally found something that seemed to make it work. Here’s how it went:

Base values:

KV = 683 – This is a constant related to the modern definition of the candela

Watts – Unit of light measurement used in blender

Lumens – This seems to be an unnecessary intermediary conversion, but it keeps the formulas simpler

Candela – Unit of light measurement used by GLTF

Color – According to Threejs documentation part of the formula for candela calculation

Intensity – Unit of light measurement used by Threejs, second part of the threejs candela calculation

Base formulas:

Watts * 683 = Lumens

Lumens / 4π = candela

Color * intensity = candela

So after combining the formulas into a single equation, I got:

Color * Intensity = \frac{683 * W}{4π}

So to get the intensity value I needed for threejs:

Intensity = \frac{683*W} {color *4π}

My problem was: what the heck was “color”? After some more looking around and testing, I guessed that “color” might be the actual light wavelength of the source light. My light was white (6500K) and to get that wavelength, I averaged the top and bottom numbers on this converter and I came up with:

WhiteLight = approx. 570nm.

Substituting that in, I could get the calculation:

Intensity = \frac{683 * W}{570 *4π}

Multiplying it out I got

approx. 0.0954 * W

is the intensity value needed to correct for the numbers coming out of Blender (for white light specifically). It’s so close to my estimation of 10% that it makes me wonder if it was even worth all the time I spent figuring it out.

Honestly? It looked absolutely perfect when I applied that multiplier. Am I sure that 570 was the right number to use? Not totally, but it seemed to work.

Sorry for the overblown narrative, I hope this helps someone else. Thanks!