Lighting billboards

I have a low poly tree model, it’s mostly made from flat polygons in a star arrangement:
(green lines are normals)

The problem is that when I light the model, some of the polygons appear way to dark:
(left is lit, vs right unlit, as seen in pview)

I googled a bit and the solution to this (common?) problem is to make all the normals of the model ‘point outside’ or up. I tried both solutions(the first screen shows my normals) and it still doesn’t look as I would like it.

I’m wondering if someone found a solution to this issue, maybe with some shader magic?

I was thinking of making object space normal maps and totally discarding the actual geometry and it’s normals for lighting, bit it’s kind of hard to do.

I’m open for any suggestions.

This page has lots of information about this

I once converted the NormalThief script to Blender.
You can download it here:

That does look like a rather neat technique!

That said, Wezu mentions having tried setting the model’s normals to point outwards or up, which seems pretty close to what that technique seems to do. :confused:

Well, what effect are you trying to achieve? (Can you perhaps edit an image, or find an illustrative image somewhere, as an example of what end result you’re after?)

Making the normals point up is your best bet if you don’t want it to show that it’s just a few planes. If you want more than that, normal maps would be the way to go.

I was using the original normal thief script for max, but it changed nothing… and it turns out the max export script skips the edited normals :cry:

I must look for another pipeline or as I wrote in the first post - some shader trick (best idea I had so far is to sum all light colors, apply it as ambient light and hope I’ll never need point/spot lights).

How would I like the tree model to look? More or less how it looks in Tree[d]:

It’s possible that I’m missing something, but it looks to me as though the leaves are either unshaded or shaded with normals that all point in one direction (as rdb suggests), with only the trunk having “standard” shading.

You know, you might be right. You can turn the light on and off in tree[d] and I don’t think it affects the lighting on the leaves, just the trunk and branches.

I hacked a shader to use (0,0,1) as the normal and that looks like the model was lit by ambient light only… for now I’m gonna add some light to parts of the tree that are too dark:

result +=light_color*step(0.5,1.0-NdotL)*0.5;  

It’s not perfect but way better then the default look:

(left hack, right default)

One thought, since you’re already delving into shader solutions: it might be worth experimenting with dimming the light-colour a little towards the trunk-end of your branches, to give the impression of light not reaching the deeper parts of the tree as it does the outer parts. I’m not sure that it will actually produce a pleasing effect, but it might be worth trying.

That is a good idea, but I’ll just dim the texture at that end, and if anyone asks I’ll tell 'em it’s a ‘pre computed ambient occlusion term’ :