Textured area lights in Blender

One of my favourite pictures from the original Lightcuts paper is an office scene lit exclusively by a tv screen. You can do that with textured area lights.

In Blender you can already link a texture to a light, but the outcome is a sort of texture projection, which is useful if you want to fake effects like light passing through a tree without actually computing the visibility: that comes of course very handy for cutting rendering time, to have artistic control on shadowing, etc.

What I mean here with textured area lights, on the other hand, is actually modulating the color and intensity of the light throughout its area. This way you can obtain the effect of lighting coming from tv screens, large windows with varying lighting conditions, and even area lights with custom shapes. Here are some examples.

Textured area light

Area light with custom shape

Tv screen

In the lightcuts paper you had also the added contribution of indirect light. In this case I added some additional lighting using a faint environment map. The interesting point to note is that putting additional lighting has a negligible impact on rendering time, if not a beneficial effect! This is because completely occluded areas evaluate far more lights than bright areas, as a consequence of using a proportional error metric; thus, having those parts brighter allows for less evaluations.

Here’s a false colour rendering where the green areas show where the environment lighting is more influential and the bluish areas show where the area light is more influential. The red channel counts the number of lights used with respect to the maximum, so the image is white where it’s most occluded, as expected.

Textured area light (false colour)

  1. Wow!!!!

    These are great results and news! :D

    Thank you for your efforts! :)

  2. That is sick! what I like the most is the shading in the monkeys, much much better than blender’s arealamps. Heres a request, do a render with a much larger arealamp, like 5 times larger, thats where blender arealamps fail miserably in the shading departament

  3. this is great work

    • U
    • July 14th, 2008

    At the end of the next to last paragraph: “having does parts…” ;)

  4. Thanks guys, it looks like this is a popular feature!

    @ZanQdo: good idea, I will do a comparison soon.

    @U: ouch! Thanks ;)

    • Mike
    • July 14th, 2008

    I have a question: Will/can it be possible to set specific lights as ‘always on’?

    • Sienio
    • July 14th, 2008

    Hi! I’m really impresed your work! Looks like global ilumination :o I compiled branch with lightcuts, could you post some test scenes, please?

    Regards

    • Steren
    • July 14th, 2008

    Great work, keep going !

    • Faquin
    • July 15th, 2008

    Awesome work ! Keep’em coming !

    • woolyloach
    • July 17th, 2008

    Just. Freaking. Amazing. Gimme gimme! ;-p

    • n-pigeon
    • July 21st, 2008

    Awesome :D

  5. I just tried to fake this effect by dupliverting a square textured spotlight along the screen, which kind of works:

    http://pub.instinctive.de/screen.png

    Of course, your solution is far more practical, and possibly faster (rendering time here: 1 min 20 secs on an Athlon 64 X2 1,7 GHz or something…)

  6. Any chance we could see an animation? (Maybe use a few shots from BBB?)

    That would really show it off…

  7. (If you want, Ill render it. My quad core is sitting here not doing much….)

  8. @Alexander: well, my renderings took approx. 8 mins on my laptop, 800×600 OSA 5… one could argue that in your picture the boundaries of the spotlights are visible, plus my renderings also have a bit of environment light; still, the speed difference seems too big… :?

    @GustavTheMushroom: it could be nice to render a short animation (a bunch of seconds) of a scene lit by a tv (a BBB scene would be ok), and submit it for the Siggraph demo reel… I’m not sure if a scene rendered by a branch is allowed though. If someone wants to set this scene up, I can help with the parameters and Gustav could render it…

  9. Brother..its ultimate

  10. UncleZeiv: Hehe, didn’t want to spoil your fun :) If I quadruple the number of spotlights, the boundaries disappear; however, rendering time roughly quadruples as well and is then close to yours.

  11. @Alexander: why don’t you grab a lightcuts build and perform a comparison on the same machine? That would be interesting. How many spotlights are you using?

  12. I could do that, yeah :) I’m using 840 spots for getting smooth results (render time is then 8 minutes):

    http://pub.instinctive.de/screen1.png

    Packed Blend:

    http://pub.instinctive.de/screen1.blend

    Cheers

  13. OK, I tried to build the same lighting situation using your build, tweaking the “Area light lights density” setting until the DOS prompt said “1141 point lights”, which should be roughly equivalent to your example render.

    At PAL resolution (720 x 576) OSA 5, took 2 minutes 31 seconds. So I guess, definitely an advancement :)

    • DavidC
    • October 7th, 2008

    Could the image be animated?

  14. @DavidC: sure!

    • John
    • November 26th, 2008

    Hi, I have never used lightcuts before, and I don’t even know what it is, but I saw the image in this post and I thought I would try to mimic it. In the scene that I built I used area lights to match the light from the image to mimic light projecting from the TV. The example render is at:

    http://gallery.john.whettens.org/albums/blender/finished1_713upload.mov

    The uncompressed file is obviously much clearer. So there are just eight area lights and AO turned on. Again, this is using the regular 2.48a build of blender using blenders internal ray tracer. So I think I accomplished with a regular build what you are trying to do with a special build of the software. Thanks for the inspiration, though.

    John

  15. @John: your test is nice; I’m curious to know how you did it. Do you alter the color of the area lights with a script? Let me know. Anyway, every effect can be faked, artists have been faking GI for ages, but this doesn’t make GI useless, does it? Of course the ability to fake effects is a very important tool, particularly for animations, so your experiment is indeed useful in my opinion.

    • John
    • November 28th, 2008

    Yes, I did indeed fake it, and I had to use other software to achieve the effect. I broke the time lapse video up into eight sectors, averaged each one of those sectors down to one pixel, (a single representative pixel for color and brightness for the sector) and mapped each one of those eight pixels onto its respective area light. (If you map only one pixel to an area light, it is not a “texture” map anymore, because you cannot make out any repetitive texture, it is merely a color/brightness map. The same thing can be achieved with a multiple pixel texture as long as all pixels have the same values.)

    Here is the original image I used to test my method:

    http://gallery.john.whettens.org/view_photo.php?full=1&set_albumName=album01&id=monkeyTV

    Is light cuts another ray tracer? I couldn’t find any information in your blog about what you are doing fundamentally. Your Lightcuts group seems to be very close knit and tight, but I don’t see enough information about what you are doing to break into the conversation. Could you provide a little more basic information so that I can learn more about what you are doing? I have only been using blender for about five months, but I am trying to learn things very quickly.

  16. @John: sorry for the late answer. Have a look on the Blender wiki for more information, or look for the original lightcuts paper. Let me know if you need more information. Cheers!

  1. No trackbacks yet.