Blobby Modeling



This alien hand was modeled using the blobby primitive.

Blobby Modeling 
MTOR 3.0 / RAT 4.5 introduce support for manual modeling of RenderMan blobby surfaces. A blobby model consists of a collection of blob primitives that are combined in simple or complex ways using blob operators.  MTOR employs custom Maya attributes located hierarchically within Maya's Scene Graph to represent a RenderMan blobby surface.  

You can create individual blob primitives with the Blobs submenu of the RenderMan Attributes menu.  Depending on its type, a blob primitive may have a few attributes to control its contribution to the overall blobby surface.  Primitives are sketched into the Maya scene using MTOR's ubiquitous coordinate system locators. When you create a new blob primitive, you effectively create a new coordinate system node with the following attribute settings:

  • mtorBlobType
    • primConstant -  represents a uniform blob weight with no boundary.  This gives you some control over the blob surface threshold (the point in the blob weight continuum at which the blobby surface occurs). The custom attribute mtorBlobConstStrength can be used to control the strength of the constant field.  Positive values have the effect of growing the blob, while negative values shrink it.  Note that it's possible to establish values that result in blobs disappearing. For various obscure reasons, this can happen when increasing the value just as easily as it can from decreasing.
    • primEllipsoid - represents an elliptical blob in space.  You can use the standard Maya rigid transformations to scale, stretch, orient and position the blob relative to other blobs in your blob-graph.  The Ellipsoid primitive has no additional attribute controls.
    • primSegment - represents a blobby line segment in space. Again, you can use the Maya rigid transformations to scale, stretch, orientation and position the segment.  In addition, two attributes are available for manipulation: mtorBlobSegRadius and mtorBlobSegLength.
    • primPlane - represents a repulsive surface as a PRMan depth map.  Additional attributes are: mtorBlobPlaneFile, mtorBlobRepel0, mtorBlobRepel1, mtorBlobRepel2, mtorBlobRepel3.  Please refer to the blobby appnote for a description of these parameters.
  • mtorIgnoreCoordSys - when set to 0, this attribute inhibits the inclusion of a coordinate system in the RIB stream.  Unless you need to refer to the coordinate system of a particular blob from a shader, you should set this to 0.

Attribute values can be edited via Maya's attribute editor (under Extra Attributes) or animated via the channel box.  And if scripting is your bag, you can also build up blobby surfaces with custom mel scripts.

Finally you can assign a color and/or opacity values to each primitive.  Be aware that if you assign a color to one primitive, you must assign a color to all primitives.  The assigned values are converted to RenderMan primitive variables for the Cs and Os attributes and now shaders or Slim networks can integrate these effects into the blob's appearance. PRMan's Blobby surface automatically interpolates primitive variables attached to each blob primitive.  To assign a color or opacity, simply select a node in your blob network, then select the Set Color or Set Opacity commands in the blob menu.  The option box brings up the color control dialog seen at right.  Color / Opacity and _Pref values are applied to all blobby primitives at or below the selected nodes in the scene graph.

 

Create new blobby primitives

Assign primitive color and/or opacity

Apply operators to primitives

Select nodes with blob attributes.

Detach all blob attributes from selected nodes.

 

 

 

 

 

 

 

 

But a pile of blobby primitives doesn't amount to a hill of beans! You won't get a blobby object until you describe how the primitives are combined. Simply group a subset of your primitives under a Maya transform (grouping) node and assign a blob operator to that node.  The simplest blobby primitive is a pile of primitives grouped below a node to which you associate the Add blobby operator.  Remember: when assigning a blobby operator, be sure that you've selected the correct node in the hierarchy before selecting the blobby operator.

At right is a portion of the scene hypergraph for our alien hand.  Notice that we've created each finger by hierarchically grouping blobby primitives below one another.  You can achieve a similar effect by creating a Maya skeleton and associate the mtorBlobType attributes to the correct joints in the skeleton.  Or just drop existing blob primitives into the correct location in the graph using Maya's Outliner or Hypergraph window.

For our example, we have two interesting possibilities for attaching blob operators.  We could simply attach the add operator to the hand node.  This is the simplest and might give us the effect we want.  In this case, since all the primitives are "aware" of each other, it's possible that knuckles from one finger will combine with those in another resulting in an alien hand indeed.  If you want to prevent the fingers from combining with their neighbors, you could place the add operator at the top of each finger (indexKnuckle, middleKnuckle, ...) and place the max operator at the hand. 

The best way to get a handle on the effects of the different operators is to try them - but here's a brief crib sheet: 

  • Add - Generally this is the most common operator as it results in blobby, liquidy shapes.  Since the fields are added prior to surface detection, two nearby blobs will result in a larger single blob.
  • Multiply - When multiplying two fields you can cause transition regions to be sharper.  This occurs when field values are less than 1.
  • Max, Min - Use the max or min operators to allow two independent fields to cohabitate peacefully.  The resulting field function is simply the largest or smallest of the contributing fields and so the result is no larger, and no blobbier than any of the constituent sub-blobs.
  • Subtract - Use subtract to poke blobby holes in other blobs.
  • Divide - Use divide to blur, smooth or enlarge transition regions.  This operator may not prove tremendously useful but is provided for completeness.
  • Negate - Causes the negation of the associated fields.  This could come in handy to combine invert the sense of a blob (from hole to solid) but, again, is provided more for the sake of completeness.

 

Create new blobby primitives

Assign primitive color and/or opacity

Apply operators to primitives

Select nodes with blob attributes.

Detach all blob attributes from selected nodes.

 

 

 

 

The blob menu provides a few additional functions.
  • Select - selects all nodes in your scene with a mtorBlobType attribute.  Remember, this is the key attribute that causes MTOR to emit Blobbies into your RIB stream.
  • Detach -deletes the mtorBlobType attribute from all selected nodes. We advise that you refer to the Outliner or Hypergraph window to ensure that you've selected the appropriate node(s) in your hierarchy.
  • Reference Geometry - the _Pref functions located in MTOR's Primitive Variables menu also apply to blobbies - but may only be meaningful for the Ellipse and Segment primitives.  Generally you should invoke _Pref Freeze after you've completed the modeling phase and are ready to animate.  As with color and opacity, you must be sure that all primitives in your blobby model have a value for the _Pref variable.

 

Happy Blobbing...

Create new blobby primitives

Assign primitive color and/or opacity

Apply operators to primitives

Select nodes with blob attributes.

Detach all blob attributes from selected nodes.

 

 

 

 

 



 

Pixar Animation Studios
(510) 752-3000 (voice)   (510) 752-3151 (fax)
Copyright © 1996- Pixar. All rights reserved.
RenderMan® is a registered trademark of Pixar.