2
$\begingroup$

I would like to scale my scene down. The scene contains numerous objects and lights. When I scale the scene down, the Power and Size properties of the lights remain unchanged, making the lights too bright for the scaled down scene. Is there a way to make sure that those properties get adjusted according to the scale?

The Power properties are all set with 'W' as the unit, the Size properties with 'm' as the unit.

$\endgroup$
3
$\begingroup$

I don't think you can scale the lights with the regular "Scale" tool, but with a little script you can scale every light's energy and size using python.

import bpy

factor = 2  # Replace this by your scale factor

for obj in bpy.data.lights:
    for attr in ('energy', 'shadow_soft_size', 'size'):
    # for attr in ('energy',):  # Replace if you only want to scale the energy
    # for attr in ('shadow_soft_size', 'size'):  # Replace if you only want to scale the size
        if hasattr(obj, attr):
            setattr(obj, attr, getattr(obj, attr) * factor)

Keep in mind that light energy decreases quadratically relatively to the distance it travels, so if you scale your scene by a factor of 2, you should increase the energy by a factor of 2^2 = 4. (Or 0.25 if you scale by a factor of 0.5)

Follow this if you don't know how to run a script in Blender.

| improve this answer | |
$\endgroup$
  • 1
    $\begingroup$ This looks real good - thanks Gorgious! I'll try it out. $\endgroup$ – Ondrej Apr 13 at 19:42
  • 1
    $\begingroup$ This worked like a charm. Thank you! $\endgroup$ – Ondrej Apr 15 at 17:52

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.