Vertex Normal Toolkit for 3DS Max
Tool which can align vertex normals.
Using force is allowed...
Documentation for version 1.26
VNT : main window
Main ui window contains all the controls which are available at given moment.
UI is tailored in a way that only those options are visible which can be potentially used.
Window is divided into few areas. They are as follows counting from the top one:
VNT : 1. Pick object, version / about and script state.
Huh ? What ? none ? ...
This button acts as a picking one. In order to generate normals You need an object. This can be any geometrical scene element. Just to not to fool any one and make all clear, a small warning :
WARNING !
Every asset picked to be used by this script will be merged into editable poly, will be “resetXform”-ed.�This is current biggest limitation I can think of regarding the way people usually work with assets.
So in this case, all Your modifiers will be collapsed into current state.
Version number.
This is a button. When pressed You will know where You can send all Your ideas, compains, bug reports ( To my surprise, I got much less than I expected tbh :) )
There is also full license text, required by some companies.
Nothing special I think, just to keep things right.
Script state.
When it is in “PLAY” mode script is operating as it should.�When it is in “PAUSE” mode then it means picked object has some modifiers applied. Nothing is restricted if there is a valid reason for it. Including Your ability to add modifiers to picked asset.�In this case, icon will become a button. When pressed will collapse newly added modifiers and will switch back to its normal operation.
VNT : 2. Layer assignment area.
First row is just a column “indicator”, however when right clicked can exclude given layer from edit.
Would be rather sad when work done for given layer would be accidentally changed or overwritten.
Left click does nothing.
Why right click ? I talked with few users and it turned out, left click would make it “too easy” to exclude layer from layers editing.
Second row ( with lightbulbs ) is to hide / unhide or make “solo” each layer. When asset is simple this is not a big deal to see it as a whole all the time. For more complex areas or those where selecting faces is not that easy, might be useful.
Left click - hide / unhide layer
Right click - hide other layers ( make solo ) / make all layers visible.
Select
Easy way to select given layer.
Left click - select layer as individual selection.
Right click - “select more” - adds layer selection to existing one. If nothing is selected, selects layer faces just like with left click.
Last row with “+” is to mark selection as polygons added to selected layer.
Each column represents separate layer / selection set.
Layers can be understood as Photoshop layers in a way where You can edit / show / hide / select them independently.
VNT : 3. Preview area.
Simple switch between original material setup and one prepared to be used in VNT.
Makes layer setup and selection much easier as You should not guess which polygon belongs to which layer.
When preview is on, editing topology of selected asset is not possible. At some point VNT heavily relies on polygon indexing. Changing topology layout by adding a new faces will ruin entire layer setup. However, when preview is set to off, You can do whatever You like. If there will be a new polygons non existent before, You will see a new black button.
By pressing it you will select new faces and will be able to assign them to any layer.
This area with visual adjustments is to make working with VNT a bit easier and make asset more “readable”.
Simple switch between current layer colors preview and single color preview.
There are moments when original material and colorful preview will not give a comfortable environment to examine the final result.
Another switch. This time it might be very useful to use reflection map to better see potential shading errors. Reflection map can be set at the lowest area of VNT “colors… colors…”.
How to make reflection map ?
Look at last slide.
These buttons will make selected asset more or less transparent. Works in preview mode only.
VNT : 4. Main area. Part I Topology based
This area will hold various tools and features which are relevant to the way given layer will have vertex normals aligned.
Each layer can use three main methods of vertex normal alignment:
Topology based.
This method works very similar to 3Ds Max weighted normals modifier and other similar tools using topology layout.
Biggest difference is VNT can use this method on selected part of the asset. And at custom layout alignment order.
Snap vertex normals to biggest polygons.
Regular weighting normals based on angle and size of neighbouring faces.
Snapping to largest faces is not a golden solution and can bring more errors than regular method.
Dividing object by layers will give You full control over the final result. In this case, snapping to largest face for layer 1 will not influence faces assigned to layer 5 as the second one will align normals using faces from this layer only.
VNT : 4. Main area. Part II Procedural gizmo
Procedural gizmo.
This method is using procedural approach. It uses three methods : sphere, cone and plane.
COMMON OPTIONS:
When pressed script will enter into gizmo setup mode.
Switch between opposite gizmo vertex normal direction.
Switch between gizmo transparency levels.
Spinner next to it can set vertex normal arrow length.
Gizmo as sphere. Vertex normals will be aligned just like there were a sphere which drives their direction
Gizmo as cone ( cut version ), which can be adjusted so it will act as cylinder.
Gizmo as plane, which can be adjusted so it will act as torus or cylinder.
VNT : 4. Main area. Part III Procedural gizmo - sphere
Gizmo as sphere. Vertex normals will be aligned just like there were a sphere which drives their direction
Sets sphere radius.
VNT : 4. Main area. Part IV Procedural Gizmo - cut cone / cylinder
Cone ( cut version ), which can be adjusted so it will act as cylinder.
Every spinner controls cone radius.
Link on the right can be clicked to link both values. This way You can use this as cylinder gizmo.
VNT : 4. Main area. Part V Procedural gizmo - plane / torus / cylinder
Plane, which can be adjusted so it will act as torus or cylinder.
Every spinner controls plane width and length.
Link on the right can be clicked to link both values. This way You can use this as square gizmo.
Every spinner controls plane bend value. It can be bent in two directions at once independently, so it is possible to set it from flat plane through every type of torus like shape and end by shaping it into very exotic form. Link on the right can be clicked to link both values. This way You can use this as evenly bent gizmo.
Candy anyone ? ;)
And everything in between :) those shapes are just a tiny range of possible variations.
VNT : 4. Main area. Part VI Projection mesh
Projection using other object.
In this mode in order to get properly aligned vertex normals You will have to prepare a separate object which will “guide” low poly normals to get the direction which is as close as possible to those from projection mesh.
It is using two methods which are tailored to be used for two main scenarios:
COMMON OPTIONS:
You can have scene full of objects, but object You want to use as projection mesh needs to be picked.
Switch between projection mesh transparency levels. It has 4 instead of 3 levels of transparency, 4th one is to show original mesh color. To make it the way You can recognize it if You are using color coding for Your assets.
You can have scene full of objects, but which one was “this one” used as projection mesh ? Press this button and this object will be selected.
Projection mesh can be placed anywhere on the scene ( reason why pivots should match ). If you right click this button picked projection mesh will be positioned at the same place as main mesh You are working on.
This one can be described as “organic one”.
It is not THAT precise as the other, but can easily transfer normals from other low poly non subdivided mesh. Good for foliage. Fast.
This on the other hand is VERY precise. Think of it as hard surface transfer machine. It requires more detailed projection mesh, but result will be better than very good :) Super slooooow when very high precision is required.
WARNING !
Picked mesh and projection gizmo must share the same pivot position.
In other words: if You match pivot position for both objects, projection mesh should be positioned exactly as You want it to be. This small requirement will save You a tone of frustrations and will allow You to keep Your scene clean.
VNT : 4. Main area. Part VII projection mesh - “organic”
Projection using other object.
“Organic” method. I can’t guarantee this is 100% what You can achieve in Maya and its VERY good attribute transfer, but this is something I would call a “good enough”.
If projection mesh is dense enough it may be used as projection mesh for hard surface meshes. BUT. It all depends on what kind of mesh You have, what level of quality You are ready to take as “good enough” and which method will be the best for You to get the result You are expecting :)
VNT : 4. Main area. Part VII projection mesh - “hard surface”
Projection using other object.
“Hard surface” mode
Left / right click to increase / decrease subdivision level. Higher means higher precision but not endlessly. Above ~1.500.000 triangles there is no big difference. If final result if not as expected at this level of subdivision, projection mesh requires additional adjustments.
4 - initial value, possible range is {1...10}
Increasing subdivision level “endlessly” is not the way to get good final result. If tri count will cross 1.000.000 You will see this pop-up. Remember: MESH WITH TOO HIGH SUBDIVISION CAN EAT ALL OF YOUR RAM, FAMILY, DOG ( CAT even ) AND A FEW NEIGHBOURS. Better focus of projection mesh itself. Should be clean, topology evenly distributed, and if possible no manual vertex movement, this last one can lead to misery and sadness. �If You REALLY want to move vertex, use soft selection.
And one more thing: good projection mesh is not something You make in 1-5 minutes and call it done. It is not about judging anyone who is better modeler or “whatnot”. I’m trying to say, good projection mesh CAN take a LOT of time to give the result You need to have.
VNT : 4. Main area. Part VIII projection gizmo to mesh
Every gizmo shape can be transformed into “real” geometry, still 100% parametrized to be used as projection mesh.
Procedural gizmo.
When setup button is active ( red ) then right click on button with gizmo type / shape will create “clickable” version of this gizmo. This feature can be used as a very good starting point for making a proper projection mesh.
“Not 1 but 32 bits of explanation”
This tool can use up to 7 layers. �Every polygon, vertex / edge is using 32bit information about its current state. 25 bits are already in use by program itself to perform various operations such us selection, visibility, id assignments and so on. Last 7 is “free” to use by the user, You I mean :) Because of 32 bits limit, this script is not able to use more. Sometimes asset is far more complex than usual and these 7 layers may become not enough. To somewhat overcome this limitation, some parts of the asset can use single source of vertex normal information to be aligned across not connected with each other areas. This way there is a small chance, this limit will be still enough to deal with such assets.
Don’t be afraid to go really crazy when it comes to shape of projection mesh.
With this method you can make single projection mesh and use it to align vertex normals for many combined but not welded subobjects.
In example below I have merged two of them to save on layers and still I can create a good looking result.
Reflection map
To make a reflection map do the following:
Spherical reflection mapping will use this map to reflect all inaccuracies in vertex normal alignment and each glowing spot will become a circle.
WARNING ! this may lead to a conclusion that there is no such thing like perfect vertex normal alignment.
Which is probably true as models you will make ( beautify ;) ) are limited by the amount of topology they use.� So expect some limitations here and there.
However, it does not mean you should not try to get the be(a)st out of your meshes :)
The End (?)
I think this tool has some potential to be extended by new features and options.
If You would like to see something which is not covered here, please let me know.
I’m open for opinions, reviews, new ideas and improvement of existing features :)
For complaints I’m open too! If You have some, let me know, I’m sure I can figure something out :)
Contact : studio@scgstudio.net