[Addon] Vertex Heat v1.25 [update 04.03.2013]

im working on a new addon and would like to get a bit of feedback and ideas to make it better.

  1. how does VertexHeat work?

vertices in the active vertex group are taken as border conditions and all the vertices that are not in the active group will get their weight smoothed out. confused? let me show some examples.

if you like it more technical, heres a wiki link to the heat diffusion which i try to add to vertex weights

  • create a new vertex group
  • select some vertices that you like to be the max border and assign weight 1 (or whatever weight you like) to them.
  • select the vertices for the min border condition and assign weight 0 to them. i know the min border is not visible in weight paint mode but im thinking about possible solutions for that…
  • choose choose the vertex heat iterations
  • press the “Calculate” button. depending on iterations and mesh resolution this can take some time.

here a example what the addon does:
i defined some border conditions in weight paint mode. (for now make sure to use a curve without falloff)

and this is how it looks after running the addon. (note: without a min border condition the weight will increase until everything hass the weight of the max border condition)

here i added additional min border conditions (vertex weight 0 at 12 and 6 o’clock), now you see that it only smooths the are between the max and min condition.




v 1.25
- increased iteration max to 10000 and lowered default to 100
- added option and sliders for threshold weights to gui
- implemented threshold values from sliders

v 1.24
- use activeList to speed up iterations
- change bmesh creation method to prevent mode switching

what a SUPER USEFUL addon, thank you for sharing :-)!

you are welcome, if you have ideas how to improve it let me know.
i already have several things in my todo list but im always open for more things.

here are some things i am thinking about:

  • option to calculate heat over multiple vertex groups
  • option to define min/max weights and recalculate everything else

Nice. Just an idea: How about using Vertices inside the Geometry? The software i’ve seen always kind of subdivide the Mesh inside (don’t know how it’s called). I think this is necessary for realistic calculate Objects, and not just surfaces… As i said, just an idea :wink:

hm not sure i understand this correctly, you mean creating subdivisions to get a more acurate result because the mesh resolution is to low?

I mean vertices inside the Geometry… As i understand right, as of now it calculates the heat across the surface. With Vertices inside the Geometry you could calculate Heat transfer inside an Object.I’ll try to find some reference…

Edit: Combine this with your MeshPy TetMesh

So what i think to calculate Heat in Object. Generate first TetMesh - calculate Heat - then maybe transfer Vertex Color Back to input Mesh/Object.

aha like that inside… well i have to think about that, but sounds definitely something that would be plausable to do with a tetmesh.

Yeah, just think about it :wink:

And Thanks for your work.

PS: I kind of think a really usable Heat Transfer solution should interact Between Meshes, having Heat source (and cold), different Materials, affect Particles (they should have Heat transfer as well)… but that’s maybe just me dreaming :wink:

you have some great ideas:D i will add some stuff in the TODO list later, keep em coming^^

Have looked a bit into this area while researching for my DIY not yet built Workstation. Heat and Watercooling and so. :wink:

maybe get some ideas from:


both open source 3D Physics stuff calculations, fluid and heat and way much more.

I wonder how far to go would make sense for Blender, and for you. I think integrating one of those into Blender would be more powerfull, but of course waay less fun for the dev, you, to do. ;-). And probably a hell lot of work, but maybe their interested to have it integrated in Blender too and could help some?

again, just me dreaming, and in the End, “we” as Blender User don’t “need” to calculate Physically correct Heat Transfer (I don’t mean the Heat Transfer calculation itself, but to get accurate Results there must be more to it, like from Object to Object, Material to Material changes, Cooled by Water… what do i know…).

So just go on with what you like :wink: Even not a 100% accurate Heat Transfer is way Fun and usable too. Thanks

i think most of that goes a bit to far for my liking:D but i got a nice idea for some 3d heat diffusion, so i will take that into my list as well.
at the moment the main priority to solve is that vertices with 0 weight assigned are not visible in the weight paint mode but are taken into the calculation which can make it unpredictable since its possible to paint with 0 weight…

if anyone got an idea for that problem lets hear it^^
maybe i have to switch to vertex color and then transfere that to weights… hmm that might not be such a bad idea… gona check that one out:D

“maybe i have to switch to vertex color and then transfere that to weights… hmm that might not be such a bad idea… gona check that one out:D”


i just tried it with a tetmesh and it seems to work but since the softness of the result is dependent on the mesh resolution its pretty slow on a tetmesh:O
run 10k iterations on a tetmesh with 30k triangles and that took about 10 minutes:O

and the result is more than underwhelming, so this will need a 3d method to calculate weights in reasonable time i would guess.

Do you know Cython? Can convert Python to C, but still can be called like any python module. Not that hard to use. I could use it, and my programmer/python knowledge is very limited.

no i dont know that, will check that out. my programming skills are also limited but getting better every day:D

i added some sliders to control the threshold of the weights that get calculated.
it can be useful on vertex groups which have other weights than 1 and 0 in them.

This strikes me as potentially really useful. I’m a newbie, just been working for a couple of months, but this is very similar to what I’ve been looking for. Unfortunately, I’m having some trouble installing the add-on. Is it possible that the installation instructions are out-of-date? Is it working for Blender 2.77?