How to have light on the main object but not the ground? (Best practice?)

I’ve started playing around with isometric rooms again and now I’ve been wondering how I could have light falling through the windows but not hit the ground, since the ground is more there to be a nice backdrop and shadow catcher, but shouldn’t feel “connected” to the “world” of the room.

Since the lamp is in front of the window, it also hits the ground.

This is what I’m talking about:


As you can see in this ultra crappy preview render on the left side, the light is visible on the ground. (On the right side as well, but my main gripe is with it showing up underneath the light on the left).

Setting the light source to not be visible on diffuse would be one way, I know, but that would also impact other objects in the room that have a diffuse material.

Render layers would be another way, but I’m not sure if that’s a work around or if it’s how you would generally do this. (Not sure how that would work either, since I do want the light to show up in the room, and the rooms shadows should show up on the ground.)

What would be the most straight forward way to accomplish this? I’ve run into this issue a few times before and would love to know how to do this right in the future.

Make a render with only the ground.
Make render with only the room and save with alpha channel.
Plug them together in the compositor.

In BI, “layer specific lights” will shine only upon things in the designated layer.

Having isolated the floor using layers, you can also select and use only the shadow layer, if the only thing that you’re interested in is the shadows that are cast upon the floor.

And in general, “look at the light.” What do you actually want the light to be doing in the scene, and what’s the cheapest way that you can think of – no doubt, using compositing – to come to “good enough?” You don’t have to mimic physical reality. The western-town sets built for spaghetti movies consisted of nothing but the front because this was the only thing that was needed.