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 '21 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 '21 at 2:19

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 '21 at 5:51

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.