Page tree

Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

Image RemovedImage Added

Introduction

RenderMan provides the ability to render implicit surfaces (sometimes referred to in RenderMan as "RiBlobby" or blobby surfaces). Most geometry types in RenderMan have explicit control meshes: the geometry is specified by a collection of vertices that are on or near the surface. Implicit surfaces are different: they are built up from primitives that are defined implicitly, by the use of a mathematical function that is equal to some threshold value at every point on the surface. This complicated math is hidden by the renderer but leads to a representation that allows for a very efficient way to model geometry in situations where users want to create amorphous shapes , and are willing to trade away fine control over details of shape for ease of modeling gross features.

...

One way of building an implicit surface in RenderMan is to build them up by combining a simple built-in primitive shapes: an ellipsoid. Here, the most important feature of implicit surfaces is automatic blending: adjoining primitives will meld together into rounded, tubby, globular masses. When the primitives get close enough to each other, this blending happens automatically (or not, as the modeler wishes), with no need to construct explicit round and fillet patches joining them. The following demonstrates six multi-colored spheres that start out at some distance from each other; at this distance, they do not interact. As they move closer, however, they begin to stretch and blend together, smoothly merging into a larger mass. This blending happens automatically and efficiently in the renderer, without incurring extra memory costs; implicit surfaces tend to be much more memory efficient than creating the equivalent polygonal tessellation in a modelling modeling program.

Accordion Image Slider
maxNumber5
sliderHeight256
labelsFilterblend
autoplaytrue

When using the built-in primitive ellipsoid shapes, the underlying mathematical function is such the resulting blended surface has approximately the same volume as the constituent primitives. This makes this workflow an excellent choice for modelling modeling things like viscous fluids, where this volume-preserving property is highly desirable. However, as mentioned above, there is no fine control over how the shapes are blended together: either the primitives interact and blend, or they do not. The threshold at which they blend can be set globally for the entire surface (which will cause the entire implicit surface to "bulk up" or "shrink down"), but the threshold cannot be set on a sphere-by-sphere basis.

Implicit Field Plugins

...

However, implicit field plugins also lend themselves to a very different approach to using implicit surfaces: by taking as input an implicit field representation generated in another program. Implicit fields are a natural and efficient representation for fluid and volume effects , and can be output directly by programs such as Maya Fluids, programs that output OpenVDB files, or Bifrost.  Implicit field plugins can be written to bridge the gap between these third-party implicit data file formats, and the RenderMan implicit primitive, allowing the output of fluid simulations to be rendered directly and efficiently inside RenderMan. Typically in such cases, the implicit surface consists of a single primitive which is conceptually just the implicit field plugin itself, with parameters that have special meaning to the plugin. Blending with other primitives is usually not a concern nor is it desired in this case. The renderer ships with two plugins of this type: one that reads Maya fluid cache files, and one that reads OpenVDB files.

Note

Some implicit field plugins (like the OpenVDB plugin) can be used both with implicit surfaces and with the volume primitive. This reflects that the fact that implicit fields also happen to be a good way to represent volumes. In the case of OpenVDB, the choice of which primitive to use is predicated by the type of OpenVDB file you are using ("levelset" versus "fogvolume").