Voxel Heat Diffuse Skinning

by Mesh Online in Addons


New Features

  • The latest version is 3.5.2, updated on February 17, 2024.
  • Physically based energy attenuation algorithm.
  • Built-in 'Joint Alignment Tool' add-on.
  • Built-in 'Surface Heat Diffuse Skinning' add-on.
  • Built-in 'Corrective Smooth Baker' add-on.
  • Complete skinning solution.
  • Supports Blender v2.8 - v4.2.0 Alpha.

How Can It Help Me?

The add-on can help you to resolve three skinning problems:

  1. Blender throws a message: 'bone heat weighting: failed to find solution for one or more bones'.
  2. Some body parts or accessories are ignored, you have to fix vertex weights by hand.
  3. You have spent a long time to fix vertex weights, but you are still not satisfied with the result.

Quick Start


The soldier has a lot of equipments, even if you are a skilled artist, it will take a long time to skin the character.

You can use this add-on to generate perfect vertex weights for the soldier in less than five minutes.

What the artists say:

"Outstanding! You saved me a ton of work!"

"I think you may have saved my life with this add on.  Of all the add ons I've bought, for what I'm doing and how it's helping me, this is NUMBER ONE! thanks!"

You may find more comments in the 'Ratings' page.

Full Tutorial:

Video Package: Download the HD version of the video(Format:zip,Size:15MB,Date:Jun 17,2021).

Watch Online:


The Story

Two months ago(2017), I needed another 3d character for our educational product, so I quickly generated a character within 'MakeHuman', when I tried to bind the character to the armature in Blender, the result frustrated me - The hair broke into pieces, the eyes were drifting in the sky, and there were holes in the body.

If the character is watertight, Blender's built-in automatic armature deform will work very well, but artists work in their own way, they create various character components, then group them together, this is artists' most natural workflow.

I used to subscribe Maya LT from Stream platform several years ago, Maya LT has an amazing feature - 'Geodesic Voxel Binding', it can deal with non-watertight character, why not add the feature to Blender?

My goal is to achieve better result and better skinning solution, not a simple copy from May LT.

When the product was born, I was so proud of the add-on, it uses unique ray tracing technology to build voxel grid, which is super robust and accurate, and the add-on combines Blender's built-in heat map diffuse skinning tool and the voxel heat diffuse skinning tool to deal with all skinning issues, I can always get perfect results.

It's a milestone, Blender has the world's best armature deform portfolio today.

That's the story of this add-on.

Introduction

Traditional heat map diffuse skinning algorithm can only deal with watertight meshes, but artists create character components in their own way, then group them together to a character, usually the character is not seamless, this often cause traditional heat map diffuse skinning algorithm to fail.

 

Voxel heat diffuse skinning algorithm can overcome the shortcoming, it converts the non-seamless character into a solid statue, heat diffuses in the solid statue, so we can get the most natural vertex weights.

 

The voxel heat diffuse skinning had already been equipped in Autodesk's Maya and 3ds Max for years, but Blender users don't have an opportunity to benefit from the feature.

Traditional heat map diffuse skinning algorithm can get much better result in detailed areas such as fingers and toes than voxel heat diffuse skinning algorithm, we can combine them to get perfect result with this Blender add-on.

We believe that all digital artists and game teams want this feature, fortunately, you can do perfect automatic vertex weight skinning within Blender today.

Interface

When selecting all the sub-meshes and the armature, the interface will appear in the animation tab of the tools shelf, one mouse click to finish voxel heat diffuse skinning.

Tutorial

Video Package: Download the HD version of the video(Format:zip,Size:119MB,Date:Oct 10,2017).

Watch Online:


Tutorial By CGDive:


Blender Version

Proved Blender version: v2.8 - v4.1.0 Alpha.

Platform

Linux(x86_64/arm64)

Windows 7-11(x86_64/x86/arm64)

macOS 10.9-12.4(x86_64/arm64)

Note: The add-on supports both 64 bit and 32 bit of Windows.

CPU

The algorithm uses multiply CPU cores to boost the running speed, more CPU cores, more faster it runs.

Memory

The algorithm needs large memory to run high voxel resolution, the computer's memory is at least 8GB

How To Install

Launch Blender, navigate to 'Edit->User Preference...->Add-ons', click the 'Install Add-on from file...' button, a pop up dialog will appear, select 'voxel_skinning-3.5.2.zip', click the 'Install Add-on from file...' button on the pop up dialog, the add-on will be installed to Blender's addons directory.

When the pop up dialog closed, we are still on Addons page, a few seconds later, the add-on will appear, activate the add-on, then click the 'Save User Settings' button and close the 'Blender User Preference' window.

Note: Please don't simply copy and paste the unzipped add-on directory to Blender's own working add-on directory, because the operating system may prevent the add-on from writing temporary data to the directory, which will cause the add-on don't work at all.

How To Upgrade

Download the new version of the product.

Launch Blender, navigate to 'Edit->User Preference...->Add-ons', type 'voxel' in the search box, the add-on will appear, click the small triangle beside the add-on to expand the contents, click the 'Remove' button to remove the add-on.

Install the new version of the product.

Blender 2.8+ Support

The latest version supports Blender 2.8+.

Please re-download your product and extract the package, there are two sub-directories named by Blender version, you may choose the corresponding version to install.

Type 'n' key in the 3d view if the sidebar is hidden. If you select both the meshes and the armature, the user interface will appear in 'View3D->UI->Mesh Online' tab of the sidebar.


Personal Workflow

Select all the sub-meshes and one armature, the interface will appear on the tool shelf section of 'View3D->Tools->Animation'.

Because the alogrithm will convert all the sub-meshes to one solid statue to obtain best result, you'd better select all the sub-meshes and one armature before you run voxel heat diffuse skinning.

If you are rigging for RPG games, the armature is usually not complicated, you can use the default parameters, select all the sub-meshes and the armature, click the 'Voxel Heat Diffuse Skinning' button, the result will be fairly good.

Here are the steps:

1. Select all the sub-meshes and the armature, click the 'Voxel Heat Diffuse Skinning' button.

If you are rigging for a movie, the armature is usually rather complicated, in this case, we combine traditional heat map diffuse skinning and voxel heat diffuse skinning to get perfect result:

Here are the steps:

1. Select all the sub-meshes and the armature, type 'Control' key + 'P' key, from the pop up menu, click Armature Deform->With Automatic Weight.

2. Select the sub-mesh which vertices need to be protected, type 'Tab' key to enter 'Edit' mode, type 'Z' key to enter wireframe display mode, type 'A' key twice to select nothing, use either box select tool or circle select tool to select character's hands parts and feet parts(if the character does not wear shoes), or other very detailed areas, type 'Z' key to back to solid mode, type 'Tab' key to back to object mode.

3. In the addon's interface, check the 'Protect Selected Vertex Weight' button, all the selected vertices' weights will be merged to new weights which generated by voxel heat diffuse skinning.

4. Select all the sub-meshes and the armature, click the 'Voxel Heat Diffuse Skinning' button.

Team Workflow

If you have a powerful server, for example, the CPU has 32 cores or more, you can greatly boost the speed by distribute the voxel heat diffuse task to the server.

From the 'Blender User Preference' window, activate the other three addons, click the 'Save User Settings' button and close the 'Blender User Preference' window.

Here are the steps:

1. Select all the sub-meshes, click File->Export->Voxel Mesh (.txt), type a filename, click 'Export Voxel Mesh' button to export a voxel mesh file.

2. Select the armature, click File->Export->Voxel Bone (.txt), type a filename, click 'Export Voxel Bone' button to export a voxel bone file.

3. Copy the two files to the server, and copy the addon's zip file to the server, unzip the addon file, there is a command line tool for each platform: Linux, Windows and Mac, you can find them in the sub-directory of 'voxel_heat_diffuse_skinning'->'bin', in fact, the actual task is done by the command line tool.

4. Open a terminal window, run the command line tool for your platform without parameters, it will report the usage.

5. Run the command line tool for your platform with parameters, the parameters are the same as in the add-on's interface except that you need to tell it where the voxel mesh file is, where the voxel bone file is, and where the voxel weight file is.

6. After the command line tool finished runing, copy the generated voxel weight file to the desktop computer. From Blender's 3D View, select all the sub-meshes and the armature, click File->Import->Voxel Weight (.txt), select the voxel weight file, there is a 'Protect Selected Vertex Weight' button in the left panel, check the button if you want to protect some vertices' weights, click 'Import Voxel Weight' button to import the voxel weight file.

Auto-Rig Pro Workflow

This add-on is compatible with Auto-Rig Pro, if you own Auto-Rig Pro, you can first bind all the sub-meshes to the armature with the "Bind" button of Auto-Rig Pro, then use this addon on top.

Here is the document: http://lucky3d.fr/auto-rig-pro/doc/auto_rig.html#skinning-binding.

I have recorded a short video to show how simple the workfow is, but it is just a basic binding, for more advanced binding, please refer to the above document.

Video Package: Download the HD version of the video(Format:zip,Size:14MB,Date:Mar 26,2022).

Watch Online:


Built-In Joint Alignment Tool Add-on

Since v3.5.0 the product package introduced a new built-in joint alignment tool add-on, I believe that the joint alignment tool will greatly facilitate your character binding workflow.

When we are binding the 3d character to the armature, to align the bones to the 3d character is a time-consuming task, for facial bones and finger bones are so small and there are so many such bones that it is hard to align them to corresponding mesh parts exactly in a short time.

Can we just move joints on a 2d plane? For moving joints to their proper 2d positions on the current 2d view plane is much easier than in 3d space. After we have finished aligning joints on current 2d view plane, if there is a magic tool that we can use to push all the joints to desired mesh surface or to desired mesh volume center in 3d space automatically, it will save us lots of time.

This joint alignment tool is exactly designed for this job, you just need to move joints to their proper positions on the current 2d view plane, then you can push selected joints to desired mesh surface or to desired mesh volume center with one click.

How to use the tool?

  1. Select the armature, enter 'EDIT' mode.
  2. Rotate the viewport to proper angle, switch to orthogonal view.
  3. Move the joints to their proper positions on the current 2d view plane.
  4. Select the joints, click the button to push them to mesh surface or mesh volume center.

Note:

  1. In surface mode, the tool always pushes the joints to the front surface of the mesh part, even if the joints are behind the front surface.
  2. In volume mode, the tool always pushes the joints to the volume center of the mesh part, the tool will cast a ray from every selected joint to the mesh part, and it uses the entering point and the leaving point to calculate the volume center, you might need to adjust the 'Max Raycast Hit Count' parameter, the default value is 2, which is suitable for manifold mesh part, you can imagine that a ray enters the mesh part then leaves the mesh part with only two hit points; if the mesh part is not manifold, you can imagine that a ray enters the mesh part then leaves the mesh part with more than two hit points, in this case, you need to increase this number to a proper value (such as 4) to let the ray can enter and leave the mesh part, but can't enter other mesh parts, if there are other mesh parts in front of the ray, an inappropriate number might cause interference from other mesh parts, the result might be wrong.


First, we align the facial joints on the current 2d view plane, then we push them to the head surface with one click automatically.


First, we align the ear joints on the current 2d view plane, then we push them to the head surface with one click automatically.


First, we align the forearm joints and the finger joints on the current 2d view plane, then we push them to the volume center of the forearm and the volume centers of the fingers with one click automatically.

Built-In Surface Heat Diffuse Skinning Add-on

Blender already has built-in bone heat weighting, it works well in most time, but sometimes it fails to find a solution.

To completely resolve the issue, I created an open source add-on on GitHub:

https://github.com/meshonline/Surface-Heat-Diffuse-Skinning

The surface heat diffuse skinning add-on can generate similar results to Blender's built-in Armature Deform->With Automatic Weight tool, but it never fails.

You can use this free add-on to generate vertex weights for detailed areas when Blender's built-in weight tool fails.

I have added this free add-on into the product, you don't need to download it separately.

The installation and usage are very similar to the voxel heat diffuse skinning add-on.

Select all the sub-meshes and the armature, the interface will appear on the tool shelf section of 'View3D->Tools->Animation'.

Simply click the 'Surface Heat Diffuse Skinning' button with default parameters to skin the meshes usually gives you a fairly good result.

Built-In Corrective Smooth Baker Add-on

I have integrated my Corrective Smooth Baker add-on into this add-on, you can use the add-on to fix vertex weight issues automatically, details refer to the product page.

Integrate to your own workflow

There are two global properties since version 3.2.2:

  • bpy.context.scene.surface_job_finished.
  • bpy.context.scene.voxel_job_finished.

With these properties, you can integrate the skinning job to your own workflow.

First, call 'bpy.ops.wm.surface_heat_diffuse()' or 'bpy.ops.wm.voxel_heat_diffuse()'  from script.

Then, check the property repeatedly until the value of the property becomes 'True'.

Finally, do your custom jobs.

How Does The Algorithm Work?

The algorithm use ray tracing technology to convert polygon mesh to solid statue, which is quite different from Maya's method, ray tracing always generate better result than multi-view voxelization methods.

Bones generate heats, heats diffuse among the solid statue, and lose a bit heat when diffused to neibour voxels, if we iterate the process, it will reach a balance status.

We use CPU's multiple cores to boost the speed. For example, the CPU of my Mac mini (Late 2012) is 2.5G HZ Intel core i5, it has two cores, but each core supports two super threads, the algorithm will use four threads to generate solid statue and diffuse heats simultaneously.

When heat diffusing process completed, bones heats will distribute smoothly among entire solid statue, the heats values represent the influence weights of the bones.

 Though the theory is simple, a good product needs to deal with lots of details.

 Our goal is to generate better result and provide better skinning solution for Blender users.

Detail Of The Parameters


Voxel Resolution: The maximum voxel size, default value is 128, which is suitable for most characters, you may increase this value to use high resolution voxelization, usually this is not necessory.

Diffuse Loops: Heat diffuse pass equal to 'Diffuse Loops' multiply 'Voxel Resolution', default value is 5, which is enough for all cases, you don't need to change this value.

Sample Rays: Use how many random rays to detect darkness, default value is 64, more sample rays, more accurate the solid statue, but runs more slower.

Influence Bones: How many bones will influence a vertex, default value is 8, which is suitable for desktop animations in Blender.

Note: You'd better use a smaller value such as 4 to run animations smoothly for mobile devices.

Diffuse Falloff: How much heat will lose when diffusing, default value is 0.2, which is suitable for most cases, more bigger the value is, more sharper the weight change will be.

Protect Selected Vertex Weight: If you want to preserve existed vertex weights for some vertices, select these vertices in 'EDIT' mode, quit 'EDIT' mode and enable this option.

Detect Solidify: Detect solidified clothes, if you enable this option, make sure that all bones are in the charecter's volume, otherwise, the result may be wrong.

Use Selected Bones: Use only selected bones, if you enable this option, unselected bones will be ignored.

Use Half CPU Cores: Use only half of the CPU cores, if your computer get stuck, please enable this option to keep your computer running smoothly.

License

The add-on is under a dual-license.

The Python code of this add-on is under the GPL license.

The add-on interacts with a universal text format.

The product package also includes a command-line utility, which interacts with the universal format.

The command-line utility is written in c++, which links to c++ libraries to generate the binary file.

The add-on uses the command-line utility via a simple system call.

Note: The command-line utility is NOT under GPL license.

All Products

Better Fbx Importer & Exporter - Blender Add-on

Voxel Heat Diffuse Skinning - Blender Add-on

Corrective Smooth Baker - Blender Add-on

Blender Game Development Tutorial - Blender e-Book

Mantis LOD Editor - Unity Editor Extension

Change Log

[2024-02-18]

Release version 3.5.2

  • Fix 'No Deform Bone Selected' bug.
  • Add 'Try Except' block to make the add-on more stable.


[2024-01-18]

Release version 3.5.1

  • Add 'Use Half CPU Cores' option.


[2023-11-16]

Update version 3.5.0

  • Add 'Max Raycast Hit Count' option in the 'Joint Alignment Tool' add-on.


[2023-11-16]

Release version 3.5.0

  • New 'Joint Alignment Tool' add-on.


[2023-10-27]

Release version 3.4.5

  • Support Linux arm64 and Windows arm64.


[2022-04-02]

Release version 3.4.2

  • New algorithm to calculate the heat diffuse radius.


[2023-02-14]

Release version 3.4.3

  • Add 'Use Selected Bones' option.


[2022-02-22]

Release version 3.4.1

  • Improve baking result for too few bones.


[2022-02-18]

Release version 3.4.0

  • Make it always on the sidebar.


[2022-02-16]

Release version 3.3.3

  • Fix 'Bone name with comma character' bug.
  • Fix 'Loose vertices & loose edges' bug.


[2022-01-19]

Release version 3.3.2

  • Change the default value of the 'Influence Bones' option to 8.


[2021-12-03]

Release version 3.3.1

  • Improve ray tracing algorithm.
  • The 'Voxel Resolution' can be up to 1024.


[2021-06-28]

Compatible with macOS Mavericks.


    [2021-06-27]

    Compatible with macOS High Sierra.


      [2021-06-08]

      Release version 3.3.0

      • Add 'Detect Solidify' feature.


      [2021-06-05]

      Release version 3.2.6

      • Set 'Pseudo Inverse Solver' as default linear system solver in 'Corrective Smooth Baker' add-on.
      • Fix 'Endless Loop' bug in 'Voxel Heat Diffuse Skinning' add-on.


      [2021-05-25]

      Release version 3.2.5

      • The 'Corrective Smooth Baker' add-on improves performance for Blender 2.93 and 3.0.


      [2021-05-22]

      Fix 'NameError: name 'ON_POSIX' is not defined' bug.


      [2021-05-20]

      Release version 3.2.4

      • Rework some code.


      [2021-04-20]

      Release version 3.2.3

      • Compatible with Ubuntu 2018 LTS.


      [2021-04-15]

      Release version 3.2.2

      • Add 'bpy.context.scene.surface_job_finished' property.
      • Add 'bpy.context.scene.voxel_job_finished' property.


      [2021-04-09]

      Release version 3.2.1

      • Fix 'Divide by NoneType' bug in corrective smooth baker add-on.


      [2021-04-06]

      Release version 3.2.0

      • Integrate 'Corrective Smooth Baker' add-on.


      [2021-03-03]

      Fix interface bug on Blender 2.93.


      [2021-03-02]

      Release version 3.1.4

      • New install method.


      [2020-11-27]

      Release version 3.1.3

      Fix vertex weights for isolated vertices in 'Surface Heat Diffuse Skinning' add-on.


      [2020-10-08]

      Release version 3.1.2

      New light strength function in 'Surface Heat Diffuse Skinning' add-on, may have improved the result a bit.


      [2020-05-31]

      Portable path.


      [2020-04-23]

      Release version 3.1.

      Faster ray marching algorithm.


      [2020-03-26]

      Fix sharp vertex weight edges for high resolution mesh.


      [2019-07-28]

      Fix type annotation warning in Blender 2.8.

      Move all the scripts to their own directories.


      [2019-07-26]

      Change license to 'GPL'.


      [2019-04-2]

      Add code sign for macOS.


      [2019-01-29]

      Add support for 32 bit of Windows.


      [2018-12-06]

      Improve team workflow.

      Update document.


      [2018-12-04]

      Add support for Blender 2.8.


      [2018-04-04]

      Release version 3.0.

      Better surface heat diffuse skinning add-on.

      Fix blocky vertex weight issue.


      [2018-03-31]

      Fix small bugs.

      Add surface heat diffuse skinning add-on.


      [2018-03-22]

      Physically based energy attenuation algorithm.


      [2018-03-10]

      Release version 2.0.

      Even faster speed.

      No longer supports 32 bit of Windows.


      [2018-03-08]

      Optimize the core algorithm, much faster than ever.


      [2018-02-26]

      Update document in the package.


      [2018-02-23]

      Set parent of all sub-meshes to the armature automatically.


      [2018-02-05]

      Multiple sub-meshes can bind to one armature.


      [2018-01-20]

      Fix an install bug.


      [2018-01-15]

      Make the add-on compatible with Auto-Rig Pro.


      [2017-10-16]

      No longer need to apply location, rotation, and scale.


      [2017-10-11]

      Fix an issue of controller bones, which should be ignored.

      Thanks the help from 'Artell' - Author of 'Auto-Rig Pro'.

      Choose a product version:

      Sales 7700+
      Customer Ratings 62
      Average Rating
      Dev Fund Contributor
      Published over 6 years ago
      Blender Version 4.0, 3.6, 3.5, 3.4, 3.3, 3.2, 3.1, 3.0, 2.93, 2.92, 2.91, 2.9, 2.83, 2.82, 2.81, 2.8
      License GPL
      Have questions before purchasing?

      Contact the Creator with your questions right now.

      Login to Message