My first addon for Blender is nearly finished and ready for public testing. It includes editors for vertex normals and smoothing groups, as well as a customized exporter that can export both and calculate tangents/binormals for any normals you choose to export.
This addon is basically the result of me reaching a barrier at a low-mid level of modeling skill and trying improve by learning everything I can about the technical side of modeling.
I will be adding more features to this over time, mostly presets for automatic generation. Let me know if there's anything you'd like to see added to the tool.
I just found out about the new Blender alpha supporting split normals and will look into taking advantage of that feature.
Download (Github)
Features:
Editor for Vertex Normals:
- Manual editing per poly or vertex
- Automatic generation with several presets for different scenarios
-- presets:
--- Smooth (Blender default)
--- Angle-Based (slow but customizable algorithm)
--- Up-Vector
--- Bent (facing away from 3d cursor)
--- Ground Foliage (selected ground based vertices point up, everything else bent from an offset point)
--- (TBD: Edge-Based and Smoothing Group-Based)
- Allows calculating normals for selected faces or the whole mesh
- Normals can be displayed as lines for visual editing
- copy/paste selected normals between meshes with identical vert locations (buggy/wip, but fixes modular mesh seams when it works)
- Real-time in Edit Mode
Editor for Smoothing Groups: *experimental*
- Manual editing of smoothing groups per face
- Groups can be displayed as numbers on corresponding faces
- Real-time in Edit Mode
Customized FBX Exporter:
- Can export everything from the above addons
- Can calculate and export tangents and binormals
- Optional support to export normals generated by asdn's Recalc Vertex Normals addon
- UDK-specific optimiztions:
-- b_root is now exported as root bone instead of the exporter creating a new one
-- limited axis flip settings to things that make sense and labeled them
-- tangents are very close to UDK's
Notes:
Display:
Custom normals are not actually displayed on meshes since the variable needed to display split normals in Blender is currently read-only. They can be displayed as directional lines with options in the editor panel, however.
The tools do not take transforms that have not been applied into account, so make sure you do that before generating or trying to display them.
Performance:
If displaying normals or smoothing groups is enabled on a complex mesh with thousands of polys, things will slow down. Choosing to display them on only selected faces helps with this, but I'm looking into optimizing speed in later versions.
xNormal:
Tangents/binormals exported by this addon are read by xNormal, allowing you to take advantage of synced normal map baking.
Exporting Tangents:
Triangulation is required if you don't want potential shading errors. While it's possible to run the algorithm on a mesh with quads, it's not recommended.
Make sure your UVs are matched to the mesh, as in, you have made no changes like splitting edges or merging vertices since you unwrapped your UVs. To match your existing UVs after little changes like that, do the following in Blender:
- Go to Edit Mode, select all of your mesh
- Open the UV Editor, Select all UVs
- in the UVs menu, click
- UVs -> Seams From Islands
- UVs -> Pin
- UVs -> Unwrap
- UVs -> Unpin
Custom Angle-Based Normals:
This feature is a work in progress and is currently broken on complex meshes. It works well with cubes and faces that are pointing in somewhat the same direction, but things get messy when trying to use it on cylinders or spheres.
Generating normals on selection:
This feature is also a work in progress, and will mess up the custom mesh data's vertex order if used with the 'Smooth (Default)' setting.
(Screenshots and basic documentation in the next post)
This addon is basically the result of me reaching a barrier at a low-mid level of modeling skill and trying improve by learning everything I can about the technical side of modeling.

I will be adding more features to this over time, mostly presets for automatic generation. Let me know if there's anything you'd like to see added to the tool.
I just found out about the new Blender alpha supporting split normals and will look into taking advantage of that feature.
Download (Github)
Features:
Editor for Vertex Normals:
- Manual editing per poly or vertex
- Automatic generation with several presets for different scenarios
-- presets:
--- Smooth (Blender default)
--- Angle-Based (slow but customizable algorithm)
--- Up-Vector
--- Bent (facing away from 3d cursor)
--- Ground Foliage (selected ground based vertices point up, everything else bent from an offset point)
--- (TBD: Edge-Based and Smoothing Group-Based)
- Allows calculating normals for selected faces or the whole mesh
- Normals can be displayed as lines for visual editing
- copy/paste selected normals between meshes with identical vert locations (buggy/wip, but fixes modular mesh seams when it works)
- Real-time in Edit Mode
Editor for Smoothing Groups: *experimental*
- Manual editing of smoothing groups per face
- Groups can be displayed as numbers on corresponding faces
- Real-time in Edit Mode
Customized FBX Exporter:
- Can export everything from the above addons
- Can calculate and export tangents and binormals
- Optional support to export normals generated by asdn's Recalc Vertex Normals addon
- UDK-specific optimiztions:
-- b_root is now exported as root bone instead of the exporter creating a new one
-- limited axis flip settings to things that make sense and labeled them
-- tangents are very close to UDK's
Notes:
Display:
Custom normals are not actually displayed on meshes since the variable needed to display split normals in Blender is currently read-only. They can be displayed as directional lines with options in the editor panel, however.
The tools do not take transforms that have not been applied into account, so make sure you do that before generating or trying to display them.
Performance:
If displaying normals or smoothing groups is enabled on a complex mesh with thousands of polys, things will slow down. Choosing to display them on only selected faces helps with this, but I'm looking into optimizing speed in later versions.
xNormal:
Tangents/binormals exported by this addon are read by xNormal, allowing you to take advantage of synced normal map baking.
Exporting Tangents:
Triangulation is required if you don't want potential shading errors. While it's possible to run the algorithm on a mesh with quads, it's not recommended.
Make sure your UVs are matched to the mesh, as in, you have made no changes like splitting edges or merging vertices since you unwrapped your UVs. To match your existing UVs after little changes like that, do the following in Blender:
- Go to Edit Mode, select all of your mesh
- Open the UV Editor, Select all UVs
- in the UVs menu, click
- UVs -> Seams From Islands
- UVs -> Pin
- UVs -> Unwrap
- UVs -> Unpin
Custom Angle-Based Normals:
This feature is a work in progress and is currently broken on complex meshes. It works well with cubes and faces that are pointing in somewhat the same direction, but things get messy when trying to use it on cylinders or spheres.
Generating normals on selection:
This feature is also a work in progress, and will mess up the custom mesh data's vertex order if used with the 'Smooth (Default)' setting.
(Screenshots and basic documentation in the next post)
Comment