Spherical Normals for Trees (Blender)

So, after posting pictures of my trees in the UE4 Discord, and just in general, even, I’ve had a lot of people ask me or others about how to make the normals for trees or bushes spherical. If you have Max, this is easy as all you have to do is download the NormalThief script and you’re all set to transfer your normals. Modo Indie: Too bad. Maya: Can do this out of the box, I think; if not, it’s a script or plugin away. So what do you do if you don’t have one of the really big name modeling programs and you want spherical normals? Download Blender.

So before I go further, I feel like Simon Schreibt deserves alot of credit for bringing attention to this method of having stylized rendering for trees with this writeup: Airborn – Trees | Simon schreibt.

Alright, so with that stuff out of the way, and assuming you read Simon’s article to understand the goal here, let’s get started.

So in this picture, all I have is a group of arranged foliage cards generated by the Blender Add-on, Sapling Tree Gen. You’re going to want to transfer normals to your foliage after you already have them arranged on your branches/mesh, so do that.

Next, head over to the Data tab and enable Auto-Smooth.

Move one tab over to the Modifiers tab and add in a Normal Edit modifier. Leave it set to Radial and do not apply the modifier just yet.

Next, hit A to deselect your foliage, then Ctrl+A>Mesh>UV Sphere. With the UV sphere highlighted, hit S to scale the sphere to where it’s big enough to fit your foliage inside of it completely. You don’t want foliage sticking outside of the sphere, and you don’t want the sphere to be a lot bigger than your foliage, so play around until you get a tight fit on the inside. Once you’ve done that, move the camera into the sphere so you can see, select your foliage and head back over to the normal modifier we added earlier. Under the word radial, there will be a drop down box that will let you pick the mesh you want to transfer normals from. Simply pick your sphere and hit apply.

Before applying the modifier:

After applying the modifier:

The Before picture shows the area to view normals. To get them to become visible, select your foliage, hit Tab to enter edit mode, then hit N to bring up that palette. Finally, scroll down to the area I highlighted in the Before pic, click view vertex normals per face (the middle one) and set your normal size to whatever you want.

Well…that’s it. Getting spherical normals in Blender is very simple, and I’m pretty sure I didn’t leave out any steps. If you have questions, feel free to ask.

Edit: If you don’t want entirely spherical normals, you can cut the sphere in half and then stretch it to become somewhat of a cone. This will make it so that the bottom of your foliage doesn’t have normals that point downwards. This can affect shading in way that some don’t like, so I figured that was worth mentioning.

Thanks for sharing!
Didn’t know that Blender had a modifier to mess with normals like this. Will start experimenting with it!

Glad you found it useful, and I’m not surprised; it didn’t have this ability for a long, long time.

You can also do the same thing with the Data Transfer modifier, it has a few more options for how to interpolate the normals.

This is true, you can, though for something as simple as getting spherical normals, it’s a little more complicated and unnecessary.

This guide on spherical normals for trees was really great to see! I never even knew it existed and was really happy to see the quick but well written guide you had made! However, due to my lack of knowledge of blender/graphics terminology I had some problems understand what you meant by;

“You’re going to want to transfer normals to your foliage after you already have them arranged on your branches/mesh, so do that.”

This is from what I can tell the only reason making my attempt during this entire week futile and feel slightly discouraged atm. I was wondering wether you woulf have time to just elaborate exactly what this means. It would be greatly appreciated.

(Excuse potential spelling and structure issues, writing on phone and not native language)

Best Regards

I really want to make this work but for some reason it always ends up looking really weird in engine, except if I view it from a distance?
above is how I’d want it to look more or less, but that is viewed from a long way away.

up close is looks gross, what gives? What am I doing wrong? D:

Does anyone have any clue why this is not working in Blender 3.1 ?

No matter what I try I cant manage to get the normals to point towards the spwhere geometry, they always just point into the pivot point of the sphere.

No idea why it doesn’t work, but you should probably just be using the data transfer modifier instead: