who can tell me what the "LevelSet" actually is? i
13237 6 1- VFXCSN0309
- Member
- 14 posts
- Joined: Aug. 2008
- Offline
- rafal
- Staff
- 1449 posts
- Joined: July 2005
- Offline
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.
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
- Member
- 14 posts
- Joined: Aug. 2008
- Offline
- Soothsayer
- Member
- 861 posts
- Joined: Oct. 2008
- Offline
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.
--
Jobless
Jobless
- jason_iversen
- Member
- 12474 posts
- Joined: July 2005
- Offline
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).
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).
Jason Iversen, Technology Supervisor & FX Pipeline/R+D Lead @ Weta FX
also, http://www.odforce.net [www.odforce.net]
also, http://www.odforce.net [www.odforce.net]
- lynbo
- Member
- 47 posts
- Joined: July 2005
- Offline
- VFXCSN0309
- Member
- 14 posts
- Joined: Aug. 2008
- Offline
-
- Quick Links