VFXCSN0309
Nov. 12, 2008 03:18:54
who can tell me what the “LevelSet” actually is? in houdini, and what's it used for?

ops:
rafal
Nov. 12, 2008 09:41:48
Informally, a level set is a set of points that satisfies certain criteria (eg, an equation). Such a set of points usually forms a surface. For example, a set of points in 3D space that satisfies x^2 + y^2 + z^2 = 1 constitutes a sphere with radius of 1.
I think, in Houdini, it is used in modeling (IsoSurface SOP), character animation (muscles and Metaball SOP), can be used in volume rendering, and perhaps in gas and fluid dynamics.
VFXCSN0309
Nov. 12, 2008 11:39:30
Thanks a lot….
Soothsayer
Nov. 13, 2008 01:37:34
I don't know the Houdini specifics but the term is quite general. Imagine several objects in a room that emit heat. You could sample points in that room and assign each of them a temperature value. You could then take all the points that equal, say 23 degrees celsius. That would be a level set. If you were to make a surface with those points you'd have an isosurface.
jason_iversen
Nov. 13, 2008 02:16:36
More simply put, it's a 3D grid of sample points (like a voxel grid) which store not varying density values (like for a cloud), but a distance value to the nearest surface. Like with voxel densities, each cell stores a simple scalar value. This is a common industry thing, by the way.
In a level-set, positive values means that the sample point is outside the surface, negative mean the sample point is inside. (see: volumesample() expression/VEX operation). FYI, this sign can change implementation-to-implementation. If you take the gradient at a point in a level-set gives you a vector to the nearest surface. (see: volumegradient() expression/VEX operation)
So you can imagine many uses: if you have a velocity, you can know whether you'd intersect the surface on the next time-step. It provides a very fast lookup for whether a point is inside or outside an object. You can generate more accurate surfaces from a level-set, more accurate than a iso-contour. It's basically a way representing a solid object in a way that's much faster to query and manipulate then arbitrary topology polygons (or another other regular geometry type, eg. NURBS).
lynbo
Nov. 14, 2008 10:23:18
Wow Jason that was very well stated,
and not a bit of math involved. Well done.
One of the better “layman” explanations I have heard.
VFXCSN0309
Nov. 14, 2008 10:37:08
Thank you guys!!!