Can anyone explain to me what is ISOVALUE in mesh making?

I saw this word in many plugins, Millipede, Dendro, Axolotl…

And this is the Dendro explanation:

I have to be honest that I don’t know what this is.
Can I understand it as contour lines(boundaries) that share the same value(height) but in 3D space?

1 Like

Yes, it’s just like contouring a height field, but one dimension up.
Think of a 3d field like air temperature.
At any point in space there is a temperature value. If a room has some warm parts above 0 degrees, and some cold parts below 0, the places where that value crosses 0 form a surface.
We can make a mesh from a level set or isosurface of a field, by trying to place mesh faces at this threshold.
The value we make the mesh at could be 0, or some other isovalue.

5 Likes

Thank you so much! This answer solved my long time confusion on many components!

1 Like

This is a good question @Quan_Li and could be added to the book “Everything you wanted to know about Grasshopper, but were too afraid to ask!”.

Does it always form a surface? Or can it sometimes form a surface, sometimes not form a surface and sometimes form many surfaces, depending on the distribution of “temperature” or whatever level set is being used?

Is the strategy for setting the isovalue experimental (I’ll tweak this slider until something appears that I like) or can some sort of sensible logic be applied in general? Or is it very much case dependent?

1 Like

The isosurface of a field may consist of one or multiple parts.
An isosurface can never have holes, since the value can’t go from below the threshold to above it without passing through it. This is one of the things that makes them suited to design for 3d printing.
Of course even if the field is defined out to infinity, we can only ever make a mesh of a finite region, and if the isosurface crosses the limits of this region, we get naked boundaries there (unless we add a rule eg to also include the limits of the sampling region where the field value is below the threshold).
However, it can potentially have non manifold points or edges, such as when two regions exactly touch without overlapping.
We also need to distinguish between the theoretical surface and the result of any specific algorithm we use to generate the actual mesh. This mesh could have holes because it skipped some parts, or it could have some edge case handling to prevent non manifold edges even where the true surface has them, etc.
Also as a side note, meshing is not the only way to show isosurfaces - for instance they are also often raymarched directly, as you see a lot on eg Shadertoy.

As for strategies for setting the isovalue - that is indeed completely case dependent - it’s like how to choose the height to take a contour at - we need to know the contour of what and for what purpose.
Scalar fields can be defined in many different ways - as a distance field from some other type of geometry, as a mathematical equation, as a set of sampled values at points on a grid, or really any piece of code that returns a value for each point in space.
There are some ways of defining how ‘well behaved’ a field is that can help in figuring out what guarantees can be made about the result when meshed with a given algorithm. Something like the isosurface of a fractal Julia set or Mandelbulb, or a mathematical function that gives values which change slowly in some parts and very rapidly in others will generally pose more challenges for the mesher than something well behaved like an SDF - a signed distance field, which has the same rate of change everywhere.

4 Likes

Thank you for this great explanation!

1 Like