Introducing physically based, photometric lighting for Cycles and Eevee
This plugin for Blender adds over 60 photometric light presets to your Add menu. Here's what you can expect:
- All lights are based on real world light fixtures and are organized by type and strength.
- There are over 30 plain point, spot, area, and sun presets in total.
- There are also over 30 IES presets that cast believable patterns according to how each bulb is actually used, for a total of over 60 presets.
- Each light's strength can be adjusted in lumens instead of watts (explanation below.
- Each light has a preset Kelvin color temperature based on its real world source, which can be easily adjusted.
- You can set an RGB color instead of a Kelvin value if desired. The number of lumens will be the same regardless of the color selected, so a blue light and a red light will appear equally bright.
Adjusting a normal Blender light with constant watts makes some colors appear darker than others:
Adjusting a photometric light with constant lumens keeps the perceptual brightness about the same (explanation below):
- A lumens conversion node group is appended if Use Nodes is enabled, which can be used for any type of light in Cycles including mesh lights.
- You can set the scene's exposure to match the newly added preset with one click.
- Spot lights produce the same amount of light regardless of their spot angle, so tightening the beam will actually focus the light, unlike Blender's default.
- Sun presets can be created with a corresponding sky that's automatically linked to the sun's rotation. They're also automatically placed above the height of the camera for convenience.
- Area lights have a Spread Angle property to control how much light is directed forwards.
- All lights can be used in Eevee but are more convenient to use in Cycles. Because Eevee can't use nodes yet, the lumens, color temperature, & spot angle values can only be adjusted upon creation and IES textures will not be applied.
💡 So, what's the deal with photometrics?
Our eyes are amazingly adaptive - we can see a broad range of amounts of light as "bright" and even a broad range of colors as "white". What we experience is entirely dependent on context. It's incredibly hard for us to judge the qualities of a light if we don't have anything to compare it with.
One side affect of this amazing adaptability is that our intuitions about the strength and colors of light can be terribly off. We often trust our gut when lighting virtual scenes in Blender, which can lead us to results that don't make any sense.
🤓 Blender's defaults are made to be mathematically convenient, not artistically intuitive.
The default cube is a whopping 6.5 feet tall (2 m), the camera is flying 16 feet (5 m) off the ground, and the default lamp is about 20 feet (5.8 m) from the nearest point on the cube.
Why does this matter? Because the apparent scale of your scene and the strength of your lights are interconnected.
Light follows the inverse square law when it’s being emitted in all directions, which states that the amount of light hitting a surface decreases in proportion with the square of its distance from the source. It's a very specific curve that our eyes are used to seeing. If we scale up a room five times, one way we can tell that it’s bigger is by observing the falloff of the light.
You can imagine that if we’re just guessing about how bright to set the light, we can very easily make the room look too large or too small totally by accident. It’s not something we’d notice right away but it can subconsciously tip us off to the fact that something is faked.
If you use real world measurements for the scale of your models, then using real world measurements for your lights will give you more natural looking results. However, that's easier said than done.
⚡ Wrong watts, Watson!
Blender’s lights are calculated in watts. A bulb in my lamp at home says 45 watts, so if I set my Blender light to be 45 watts and the same size then it should match, right? Unfortunately, we’d be way off because there are two different measurements going on and both use watts as a unit.
A lightbulb is listing the amount of electrical watts needed to power it on, while Blender is calculating how many watts are being emitted as light. Since an incandescent light bulb is not that efficient, only a fraction of the input watts are turning into visible light while the rest is turning into heat.
To make things more confusing, other types of bulbs, like very efficient LEDs, sometimes show a watt equivalent, which is how much energy it would hypothetically use if it were an incandescent bulb of similar brightness, which is neither how much it is using nor how much it’s putting out. Good grief.
🕯 Lighting with lumens
What most lights are measured in, however, is lumens. Lumens measure how much light appears to the human eye as being emitted from the source. It's a believably consistent way of lighting that uses information we can easily find online.
Here’s where things get a little weird. As mentioned, lumens are based on how bright something appears to the human eye to be. We can’t do a simple conversion because different RGB hues of the same value appear to us as different brightnesses. If you’ve ever run into the frustration of trying to make something really colorful but also really really bright, or even consistently bright between colors, I feel your pain. The problem isn’t with the computer or physics though, it’s with our eyeballs.
We’re just better at detecting some wavelengths of light than others, so in order to convert lumens to watts in an RGB system we need to first get the spectral distribution of the light, separate the red, green, and blue, multiply by the luminous efficacy of each, multiply by the maximum possible efficacy, add them back together, and use that to divide the input number of lumens by in order to get the corrects watts output.
That's a lot to worry about though, so this addon does it all for you.
Check out just how much the Power property shifts when changing the hue while using a constant number of lumens!
🌞 Sunlight is actually pretty darn bright
Blender's default sun lamp is set to a strength of 1. That's... very dim! It illuminates a room hardly more than a candle:
In reality, sunlight should make the candle's contribution to the scene negligible in comparison:
Notice how, by using a better value for the sun, our bounce lighting looks much more natural as well! This is before we even add a sky or environment texture.
Because the sun is so bright and may blow out your scene, I've added a Set Exposure option to each light which will set the scene's exposure accordingly, just like a camera set on auto.
If you're using an HDRI instead of a sun lamp, use the sun presets as a reference! For example, add a Sunset light, click Set Exposure, and then delete it. Load in your sunset HDRI and adjust the strength to match the new exposure. Your HDRI will now light your scene much more believably!
❄ Keeping it cool (or warm) with Kelvin
Creating believable lights isn't just about the strength - it's also about the color!
To measure naturally produced light, we use a Kelvin value, which is what color a completely neutral substance (called a blackbody) is when heated to that Kelvin temperature.
A candle starts at around 1800, incandescent bulbs are usually around 2700, fluorescent light is around 3-4000-ish, direct sun is around 5000 give or take, and a clear sky can be about 6500. By coloring your lights using Kelvin values, they’ll be a bit more believable, especially when you have more than one type of light in your scene that you’ll be comparing them with.
All of the lights in this addon have their color temperatures set in Kelvin based on their real world sources so that you don't have to remember all that.
💡 60+ physically based lights
The lights are organized into four categories - natural, incandescent, LED, and fluorescent. To keep things simple I've placed halogen lights under incandescent and metal halide & high intensity discharge lights under fluorescent. They're not technically the same, but for artistic uses they're close enough.
Note - since EEVEE doesn't support nodes, IES lights will only show their texture in Cycles
💡 Simply better defaults, that's all
Although I'm basing these values off of the best information I can find from the real word, the end result is not going to be exactly perfect because I've had to make some assumptions.
The lumen and Kelvin values listed by light manufacturers are enough to at least get us in the right ballpark, but we don’t have enough information about how they got those numbers in order to exactly match reality. So, I can call these lights physically based or photorealistic, because they are, but I’m not going to claim that they are physically accurate because that’s just not possible with the kind of data that’s readily available. We could actually get more accurate results by using radiant watts, but that's less easy for the user to look up and can be confusing as explained above.
Secondly, do you have to use real world values to light your scene, even if they could be 100% accurate? NO! If computer graphics isn’t about bending the laws of physics to your whim to make s**t look cool, then I don’t know what is. Reality doesn’t always live up to our ridiculous expectations, which is why film studios and photographers use absurdly bright lights and more visual trickery than a stage magician. However, it’s better to start with something based in reality and break rules of thumb intentionally when you want to be creative, rather than by accident and the other way around.
If all this sounds useful, grab a copy!
It's less than the Tylenol you'll need from staring at the screen for too long, tweaking values you shouldn't have to worry about in the first place.
If you'd like to try the addon without all 60+ presets and without supporting development, you can find it for free on GitHub under my username, jlampel. You can also get the full version for free if you're a CG Cookie member.