I have a 3D model constructed from photogrammetry. I would like to colorize this based on custom values on some vertices, and interpolate a heatmap for the rest of the mesh based on these values. I would like to either assign a max/min value to the vertices from which a color ramp is generated or do this outside of Blender and give the vertices RGB values from which the rest of the texture is interpolated.

Does anyone have a workflow or ideas on how this may be achieved?

Edit: I managed to acomplish this using the pyvista interpolate tool https://docs.pyvista.org/examples/01-filter/interpolate.html

  • $\begingroup$ You may be able to do this with vertex groups and then plugging them into a colour ramp from the shader editor. Let me test this for you, will give complete answer below soon. $\endgroup$ Feb 24, 2021 at 2:13
  • $\begingroup$ Hmmm, it seems like you can't currently import the weights from vertex groups into the shader editor natively, but there is an addon to do it. blender.community/c/rightclickselect/Mkfbbc $\endgroup$ Feb 24, 2021 at 2:19

1 Answer 1


I quite didn't understand the meaning of your Heat map so I created a not-so-complex procedural material, which would consist of 3-4 nodes based on your heat map.

1] Depth Map : This map is based on height, if u want this kind of material then use the top three nodes

nodes Heat map based on height

2] Fake Heat Map : This is a fake heat map based on distance from the camera, a very common filter.

Heat map based on distance from camera

Ahh! I nearly forgot, you can also use the layer weight node to get the faces facing the camera. Like This :

Heat map base on Facing

  • $\begingroup$ Feel free to play with the values $\endgroup$ Feb 24, 2021 at 5:51

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .