Cycles illumination vs model units

maybe this is for @nathanletwory

trying to improve my plugin’s translation of rhino lights, I have run into what looks like a bug, where a model of the same physical size renders with different illumination based (apparently) only on the model units

this model is using mm and has a 100mm box: box-100mm.3dm (2.0 MB)

this model is using m and has a 0.1m box: box-0.1m.3dm (2.0 MB)

I can’t absolutely guarantee these files are the same, since one was created from the other by changing model units, and I can’t know what might internally be stored as a result

but as far as I can tell they should describe the same physical model, and my expectation (if it is valid, let me know if not) would be that they should render with the same illumination

the behavior is the same in v7 or v8, tested only on windows at this point

I have to look into it more deeply - admittedly it is an area that hasn’t had much attention, but here are some things to know:

  • In mm the box is 100 units long
  • In m the box is 0.1 units long
  • No unit conversion is done, everything is sent ‘as-is’ to Cycles
  • In Cycles one unit is always one meter
  • No light conversion is done, since through just ChangeQueue there is no info about model unit setting
1 Like

thanks sir, I’ll see if I can get a better match using that info

One of the difficulties I find is what does 1.0 intensity for a light mean in the different model unit settings…

since there is no physical output value you have to achieve, my guess would be to just pick a units value to be “native” (say meters, since you say that is cycles native units), compensate when using other units to obtain consistent unit-independent illumination, and then add a flag to 3dm files where you adjust values when opening old files, to retain prior behavior for those files

from there, you may (I don’t know enough about cycles to know if this is valid) be able to do some calibration to achieve output in real world units (well, for area lights – maybe not so much for the others), and similarly upgrade old files once that is working

the payoff for the second part is maybe not obvious, but it is real – the renderer becomes far more predictable for users when they can think about putting 1000 lumens out of a light instead of some meaningless intensity value

1 Like