Blender add-on for three common real-time art tasks:
- assigning stepped grayscale vertex-color values;
- adding or removing vertices from a named vertex group;
- transferring character shape keys to a nearby mesh by proximity.
- storing an export transfer source pointer for shape-key and robust-weight transfer tests.
The panel is in 3D Viewport > Sidebar (N) > Tool > Vertex Data Tools.
- Download or clone this repository.
- Zip the repository folder with
__init__.pyat the zip root. - In Blender, open Edit > Preferences > Add-ons > Install from Disk.
- Select the zip and enable Vertex Data Tools.
Blender 4.0 or newer is required.
The vertex-color and vertex-group tools use the current mode as their scope:
- Object Mode changes the whole mesh of every selected mesh object.
- Edit Mode changes selected vertices. Selected edges and faces work because their vertices are selected by Blender.
The top of the panel shows the current target scope.
Use this section to assign grayscale values commonly used as masks in Unreal or other real-time shaders.
Steps:
- Select one or more mesh objects.
- To initialize the whole object, stay in Object Mode. To paint a region, enter Edit Mode and select the target geometry.
- Press
0.0,0.2,0.4,0.6,0.8, or1.0.
The tool writes:
(value, value, value, 1.0)
It uses the active real Color Attribute when possible. Valid attributes are
BYTE_COLOR or FLOAT_COLOR on the POINT or CORNER domain. If none exists,
the tool creates a color attribute named Color. Non-color attributes such as
custom normals are ignored.
Example mask workflow:
- In Object Mode, press
0.0to clear the whole object. - Enter Edit Mode and select the desired faces.
- Press a higher value for the selected area.
Use this section for binary membership: weight 1 or not in the group.
Steps:
- Enter the target group name. The default is
head. - Select mesh objects or enter Edit Mode and select geometry.
- Press
1to add the vertices with weight1.0. - Press
0to remove the vertices from the group.
The group is created automatically if it does not exist. 0 removes
membership rather than storing an explicit zero weight.
Use this to copy deformations from a character surface to nearby meshes such as eyebrows, eyelashes, clothing, or accessories.
Steps:
- Switch to Object Mode.
- Select exactly two mesh objects:
- the character/source mesh with shape keys;
- the receiving mesh.
- Make the receiving mesh the active object last.
- Optionally enable Overwrite Existing.
- Press Transfer Proximity Shape Keys.
The tool samples up to eight nearby source vertices for each receiving vertex, blends their deformation by inverse-distance weighting, and creates one receiving shape key for every non-Basis source key.
Important behavior:
- the source must have at least one non-Basis shape key;
- the receiver gets a
Basiskey automatically when needed; - existing keys with matching names stop the operation unless Overwrite Existing is enabled;
- matching relative shape-key relationships are reused when the corresponding receiver key exists;
- current source and receiver shape-key values are restored after processing;
- no cage or temporary modifier is created.
This is a proximity transfer, not a surface-wrap solver. Check the result when the receiver is far from the source, crosses to another body region, or has very different topology.
Use this section to store a source mesh pointer on a target mesh or live Hair Tool curves object. The pointer survives object renaming because Blender stores the actual object reference.
Steps:
- Select the target mesh or live Hair Tool curves object.
- Set Transfer Source to the body/source mesh with the object picker.
- For mesh targets, press Shape Keys, Weights, or Shape Keys + Robust Weights.
The weight buttons require the Robust Weight Transfer add-on to be enabled.
The complete add-on currently lives in:
vertex-data-tools/
|-- __init__.py
`-- README.md
Important code areas in __init__.py:
- mode-dependent targeting:
get_target_objects; - color-attribute validation and writes:
is_real_color_attribute,apply_color_object_mode,apply_color_edit_mode; - vertex-group writes:
apply_group_object_mode,apply_group_edit_mode; - proximity binding and shape-key creation:
create_proximity_bindings,add_proximity_shape_key; - export transfer source storage:
VDT_ObjectProperties; - pointer-based shape-key and robust-weight transfer:
OBJECT_OT_vdt_pointer_transfer_shape_keys,OBJECT_OT_vdt_pointer_transfer_weights,OBJECT_OT_vdt_pointer_transfer_all; - operators:
MESH_OT_vdt_set_active_vertex_color_value,MESH_OT_vdt_set_vertex_group_value,OBJECT_OT_vdt_transfer_surface_shape_keys; - UI and settings:
VDT_Properties,VIEW3D_PT_vertex_data_tools_panel.
The main transfer tuning constants are PROXIMITY_SAMPLE_COUNT and
DEFORMATION_EPSILON. Preserve the operator's rollback path when changing the
shape-key workflow so a partial failure does not leave temporary or half-created
keys behind.