Tree normal issues in 3ds Max
For anyone creating trees for 3ds max there are a number of issues you may face. I have documented what obstacles I had to overcome when first dealing with foliage in 3ds max in case it's useful for anyone else. Also I should add that much of this information comes from some great resources on the internet such as the forums and wiki on polycount.com.
My main issue with foliage or more specifically with rendering trees within 3ds max were with lighting. After adding your tree planes to the branches of the tree and completing a test render, you may notice that the planes are being lit very inconsistently. This is due to the normals of the individual leaf planes which cause every plane to be lit very differently. This is solved by averaging the normals of the planes to face outwards from the tree.
The easiest solution to this issue in 3ds max is to use a script called NormalThief which allows you to transfer the normals of one object to another. This allows you to model a shell that shapes the tree and then use this shell as a reference for the script to transfer the normals. The issue with NormalThief is that it is incredibly slow. That's where SlideNormalThief comes in, This modified NormalThief script makes it roughly a million times quicker than its predecessor and can be downloaded from -
My main issue with foliage or more specifically with rendering trees within 3ds max were with lighting. After adding your tree planes to the branches of the tree and completing a test render, you may notice that the planes are being lit very inconsistently. This is due to the normals of the individual leaf planes which cause every plane to be lit very differently. This is solved by averaging the normals of the planes to face outwards from the tree.
The easiest solution to this issue in 3ds max is to use a script called NormalThief which allows you to transfer the normals of one object to another. This allows you to model a shell that shapes the tree and then use this shell as a reference for the script to transfer the normals. The issue with NormalThief is that it is incredibly slow. That's where SlideNormalThief comes in, This modified NormalThief script makes it roughly a million times quicker than its predecessor and can be downloaded from -
The image above shows the default normals of the leaf planes on the left. They are chaotic and will cause the lighting to look like what is displayed on the right. Due to the normals not facing outwards of the tree certain leaves that should be lit are dark and vice versa.
Like mentioned before - you now need to create a shell that fits the general size of the tree. A couple of things to mention as well -
* You are required to combine all of the leaf planes into one object.
* You will need to reset x-form before running the SlideNormalThief script.
* Afterwards you need to apply both the edit normals modifier to both the foliage and shell objects.
Like mentioned before - you now need to create a shell that fits the general size of the tree. A couple of things to mention as well -
* You are required to combine all of the leaf planes into one object.
* You will need to reset x-form before running the SlideNormalThief script.
* Afterwards you need to apply both the edit normals modifier to both the foliage and shell objects.
Above you can see the shell that I created for the transfer of the normals.
Now run the SlideNormalThief script and select both the reference (the shell) and the target (the foliage) objects. Click Steal and wait a little bit, it might take a while but it's still much quicker than using NormalThief.
Hopefully your normals now look something like this. As you can see they mostly point out of the centre of the tree which will cause the lighting to look much prettier.
Final result -
Left - Tree with un-edited normals.
Middle - Same tree with normals transferred from shell.
Right - Edited normals tree with more foliage added.
Hopefully this helps someone out there! :) I would have been lost without all of the awesome support and knowledge on polycount.com!
Here are some of the links I followed to get my head around this issue.
Left - Tree with un-edited normals.
Middle - Same tree with normals transferred from shell.
Right - Edited normals tree with more foliage added.
Hopefully this helps someone out there! :) I would have been lost without all of the awesome support and knowledge on polycount.com!
Here are some of the links I followed to get my head around this issue.
Polycount Vertex Normals wiki page - http://wiki.polycount.net/VertexNormal
Polycount thread on SlideNormalThief - http://www.polycount.com/forum/showthread.php?t=83293
Polycount thread on SlideNormalThief - http://www.polycount.com/forum/showthread.php?t=83293