Voxel Heat Diffuse Skinning

by meshonline in Scripts and Addons

New Features

  • The latest version is 3.0, released on April 4, 2018.
  • Physically based energy attenuation algorithm.
  • Better surface heat diffuse skinning add-on.
  • Fix blocky vertex weight issue.
  • Complete skinning solution.

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 two 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:49MB,Date:May 19,2018).

Watch Online:


The Story

Two months ago, 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:


Blender Version

Proved Blender version: 2.78, 2.79

Platform

Linux(x86_64)

Windows 7/8/10(x86_64)

macOS 10.9/10.10/10.11/10.12/10.13(x86_64)

Note: From version 2.0, it only supports 64 bit of platforms.

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

The product is a zip file named 'vhd-blender-addon.zip', unzip it anywhere, launch Blender, navigate to File->User Preference->Addons, click the 'Install Add-on from file...' button, a pop up dialog will appear, select 'vhd-blender-addon/addon/vhd.zip', click the 'Install Add-on from file...' button on the pop up dialog, the addon will be installed to Blender's addons directory.

When the pop up dialog closed, we are still on Addons page, type 'voxel' in the search box, our four separate addons will be filter out, if you are a personal artist, you just need to activate the 'Voxel Heat Diffuse Skinning' addon, other three addons are for team workflow, we'll explain later, then click the 'Save User Settings' button and close the 'Blender User Preference' window.

How To Upgrade

Quit Blender, unzip the latest 'vhd.zip', replace all the old files with the new files.

To find Blender's add-on directory, switch to Blender's Python Console window, type the following commands:

import bpy

bpy.utils.script_path_user()

Blender will tell you where the add-on directory is.

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, type 'Control' key + 'P' key, from the pop up menu, click Armature Deform.

2. 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.

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

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.

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

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.

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

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.

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, 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/#skinning_binding.

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 4, which is suitable for games, you can increase this value if you are making a movie.

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.

Change Log

[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'.

What's new in version 3.0?

From version 3.0, the add-on has become a complete skinning portfolio:

Even if Blender's built-in bone heat weighting fails, you can use surface heat diffuse skinning add-on to generate vertex weights for fingers and toes, then combine voxel heat diffuse skinning add-on to get perfect vertex weights.

In short, version 3.0 gives you a complete skinning solution.

Can I modify vertices weights after voxel heat diffuse skinning?

Yes, you can.

Voxel heat diffuse skinning just gives you a good start point, you can modify vertices weights anytime.

How to fix vertex weights of the torso part?

If the character uses a simple skeleton, such as motion capture skeleton, the vertex weights of the torso part may not good, the torso slightly moves with the arm movement.

You can fix the issue by adding two support bones at the chest joint to balance the vertex weights.

How to fix blocky vertex weights?

If you skin a high resolution mesh with default voxel resolution(128), the vertex weights is blocky.

You have several ways to fix the issue:

1. Skin the low resolution version, subdivide the mesh after skinning.

2. Add a 'Corrective Smooth' modifier to the mesh in 'Object Mode'.

3. Apply several 'Smooth' operation to all vertex groups from the 'Weight Tools' section in 'Weight Paint' mode.

4. Use high voxel resolution to skin the mesh.

Note: The issue have been fixed in version 3.0.

What's the difference of the surface heat diffuse skinning add-on and the voxel heat diffuse skinning add-on?

Sometimes, Blender's built-in Armature Deform->With Automatic Weight tool throws: 'bone heat weighting: failed to find solution for one or more bones', then give up.

If this happens, you can't use the advanced skill to protect selected vertex weights, for there is nothing to protect.

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 surface heat diffuse skinning add-on to generate vertex weights for fingers and toes when Blender's built-in Armature Deform->With Automatic Weight tool fails, then combine voxel heat diffuse skinning add-on to get perfect vertex weights.

What is the benefit of physically based energy attenuation algorithm?

Like Cycles is better than Pong shading, physically based energy attenuation algorithm generates much natural vertex weights.

How can I tell a bone not to deform the mesh?

When you selected the bone, there is a 'Deform' option in the 'property->Bone' panel, uncheck the option, and delete the bone name from the vertex groups of the mesh, then run voxel heat diffuse skinning again.

Can I select multiple meshes and skin them to the same armature?

Yes, you can.

The feature is available from version 2.0, you no longer need to join the meshes to a big mesh.

Does it support pitchipoy version of Rigify?

Yes, it supports both official version and pitchipoy version of Rigify.

The add-on is also compatible with Auto-Rig Pro.

Does it support 2d characters?

No, the add-on is more suitable for 3d models.

I'm not sure if my computer can run the add-on?

If the CPU of your computer is x86_64 architecture, you can run it.

It supports 64 bit of Windows, Linux and macOS.

From version 2.0, it only supports 64 bit of platforms.

Do you have any plan to speed it up?

Yes, the kernel is written in c++, and we have been optimizing the code.

The latest version has achieved six times faster than the initial version.

Should I use high resolution grid?

High resolution grid works well on fingers and toes, but high resolution grid may bring side effects on other mesh parts, like the clothes, the hair, or the equipments, these parts may break into pieces in high resolution mode, it's not perfect in all cases.

To combine Blender's built-in heat map diffuse skinning and voxel heat diffuse skinning is a better solution, you always get perfect result.

When should I use the command line tool?

If you want to use higher resolution than 256, for instance, 512 or 1024, you have to use the command line tool.

High resolution mode requires huge memories, and the task will run for a long time, running the add-on within Blender may cause Blender to crash, so you need to run it as an independent task.

Another reason is that you are a team or you have powerful servers, you may build your own automated workflow by writing shell scripts, distribute the heavy task to your powerful servers.

There are still a few vertices sticked together, how to fix them?

There are two ways:

1. Use 'Protect Selected Vertex Weight' feature, please watch the tutorial to learn more.

2. If there are only a few vertices sticked together, you may clean them manually.

Item Rating

This item has an average rating of 5 from 14 ratings by the community.

79%
15%
0%
8%
0%
  • timosantos about 1 month ago

    I am sure this will be a useful add-on, but needs better documentation. As of this writing, there is too little info on the settings, so a novice user like myself must spend time experimenting with settings.

    • Mingfen Wang about 1 month ago

      Thank you, the default settings is suitable for most 3d models, but you need to adjust 'Voxel Resolution' for some 3d models, usually you don't need to change other parameters.

  • Roly about 2 months ago

    Love it!

    • Mingfen Wang about 1 month ago

      Thank you Roly.

  • Dominik Scherer 4 months ago

    I am very disappointed with this product. I have problems in the torso area of a character with certain motions and was hoping this product would provide a quick fix to that. Unfortunately the weight map I get from this addon isn't that much better than what I get from the Blender included function, regardless of what settings I choose. Maybe my expectations were to high since other customer‘s experiences seem to be very positive but in my particular case the addon didn't help. I will weight paint the mesh by hand and try to get a refund for this. On a positive note, the results do seem to be better than with the automatic weights function of Blender in most cases but they are far from perfect contrary to what the demo video suggests, therefore 2 stars.

    • Mingfen Wang 4 months ago

      You said that you have problems in the torso area? It can be caused by some simple skeletons, such as motion capture skeletons, sometimes you need to add support bones to balance the vertex weights. The add-on is not a silver bullet in all cases, I suggest that you keep the add-on, anyway, it is a useful toolkit.

  • toomanydemons 5 months ago

    This is easily one of the best addons ever made for Blender. I am hopeful for the future of Blender in professional 3D workflows and believe this sort of functionality should be included in the core software.

    Thanks for the great addon!

    • Mingfen Wang 4 months ago

      Thanks.

  • shark 6 months ago

    I purchased this add-on with the recommendation of the developer of AUTO-RIG PRO.

    The two add-ons seem to work well together.

    It is very easy to use, so anyone can solve difficult problems easily. Thank you for your efforts.

    • Mingfen Wang 6 months ago

      The developer of Auto-Rig Pro had helped me a lot to test 'Surface Heat Diffuse Skinning' add-on, without him, I could not release the add-on in such a short time.

  • Phil Stopford 6 months ago

    I've been using this in combination with Auto Rig Pro set-ups and it really does make a huge improvement on the default weighting from blender. Greatly appreciated.

    • Mingfen Wang 6 months ago

      Thanks!

  • papasmurf7777 9 months ago

    Awesome addon

    • Mingfen Wang 9 months ago

      You can select multiples meshes and skin them to the same armature now, enjoy the new feature, cheers!

  • spec24 10 months ago

    Outstanding! You saved me a ton of work!!

    • Mingfen Wang 10 months ago

      I'm glad you like it.

  • biblesinger 10 months ago

    This addon deserves six stars! It saved me from spending even more time on an extremely complicated mesh blenders default auto skinner couldn't tackle.

    • Mingfen Wang 10 months ago

      My pleasure, thank you.

  • nateordie 11 months ago

    I was always getting the "Bone heat weighting Failed" when trying to use a Rigify Armature. This add on fixed that issue for me. Now I can focus on animating instead of trying to fix 'non manifold geometry'. Thank you!

    • Mingfen Wang 10 months ago

      Thanks!

  • Warren Reed about 1 year ago

    I am making a feature animation, with close to a hundred characters, most made in Fuse or Makehuman, with the exception of the three main characters. Fixing the weight painting on them is a headache with one character and imperfect. I just tried this out on two of them and I felt the weight of hours and hours of work fixing all of them fall right off my shoulders. 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!!!

    • Mingfen Wang about 1 year ago

      I'm glad to hear it useful for you!

  • panicq about 1 year ago

    Nice addon ! The only down side for me is that unlike in maya you cannot select multiples meshes and skin them to the same armature. You are oblige to join them and then un-join them, a process that can take times with characters that have a lots of accessories :p

    • Mingfen Wang about 1 year ago

      Thanks!

  • CG-Lion about 1 year ago

    Works great! achieves far better initials skin weights that the built-in method.

    • Mingfen Wang about 1 year ago

      Thanks!

  • Artell about 1 year ago

    Excellent work, thanks!

    • Mingfen Wang about 1 year ago

      Thanks!

Purchase this item to leave a review!