Dear PavelBoytchev and everyone else
First of all, I would like to apologize to keep discussing such a general topic in this particular thread. One can create a different one if you find it adequate and useful.
Pavel, I agree with you, but if you are designing, let’s say, a program that deals with the Universe as a whole, you must do something that is not realistic at all: you must light the scene, i.e., the whole Universe, so that users can see it. But it doesn’t make any sense defining the intensity in candela of a light source that lights the whole Universe (or the solar system, for instance). Reasoning in the opposite direction, I think it doesn’t make sense either defining the intensity in candela of the light source that illuminates, let’s say, a DNA molecule.
Besides this, I think that it is easier for programmers to find the right value for the light intensity if they know that, in a particular API, this parameter is normalized, i.e., it ranges from 0.0 to 1.0. When three.js evolved from r154 to r155 (thanks for reminding me the version number) I had to define new values for such parameter; and since it is not upper limited, I felt a bit lost in finding the appropriate ones.
Maybe three.js would be more universal if it would not adopt any measuring system. It would be fully independent of the application contexts (large scale, small scale, human scale, whatsoever).
Finally, two more different (but related) topics:
1 - Pavel, you said that one can always scale the whole scene so that it fits our purposes, no matter its real dimensions are. Could you (or anyone else) please tell me if three.js automatically normalizes normal vectors in such situations? Or do programmers need to do it instead? Or is there some parameter, as it happens with other APIs, that allow us to decide?
2 - I was consulting three.js documentation and I realized that classes such as PointLight and SpotLight have a property named “power”. It allows programmers to define the “luminous power of the light measured in lumens (lm)”. I must say I’m no expert but, shouldn’t this property be named “flux” instead? If three.js developers really want to keep SI units, shouldn’t the intensity be expressed in candela, the flux in lumen, and the power in Watts? And shouldn’t the relationship between flux and power depend on the nature of the light source (incandescent, fluorescent, LED)?
Best regards
JP