Muscle object
Creates a smooth muscle surface you can use to deform a character’s skin in a realistic way.
This object can have an arbitrary number of inputs. When a muscle is created, it creates points based on the locations of its inputs and draws a smooth line through these points. The SOP then creates a muscle surface lying along this line. The surface’s shape relative to this line can be specified by the user. The positions and orientations of the inputs control the position, shape and orientation of the muscle. Hence, the behavior of the muscle can be influenced by bones or other surrounding geometry.
To generate the muscle surface, the Muscle Object creates a number of metaball primitives that, when blended together, form a smooth surface. These metaballs can also be used to capture and deform points. See the Capture Metaball SOP and Deform Muscle SOP. When using a muscle as a capture region in a Capture Metaball SOP, the muscle object’s name with “/muscle” appended to the end of it should be used so that the underlying Muscle SOP is captured. For example, if the path to a muscle object is “/obj/muscle1”, then the capture region name that must be used is “/obj/muscle1/muscle”.
Using Muscles
Click the
Muscle button on the Character tab.Select the parent objects in the desired order and press Enter to confirm your selection.
Note | Muscles are usually attached to null objects, which are attached to bones. |

The muscle is made of metaballs, which can be scaled and manipulated in the parameter editor.
Using Muscle Handles
The muscle manipulator consists of a line corresponding to the center line of the muscle, as well as five circles at the control points that allows you to change the position of the point and the scale of the muscle at that point. The orientation of the circles correspond to the orientation of the metaballs on the muscle.

| To... | Do this |
|---|---|
Move a control point | Click on outer circle or inner sphere of the handle and slide it along the line.
|
Scale the muscle’s width | Click
|
Scale the muscle’s height | Click
|
Scale the muscle in all directions | Click
|
Scale the muscle at multiple control points | Press Shift +
|
Parameters
| The |
Muscle
Muscle Name | Specifies the name of a group in which the underlying muscle geometry stores its metaball primitives. |
Rest Anchor | Specifies geometry to which this muscle is related (a bone lying under the muscle, for instance). This is used to determine whether the muscle is transforming rigidly with respect to an underlying skeleton or if it is deforming relative to this skeleton. This information is necessary in order to simulate the effect of muscles “sliding” under the surface of skin. |
Capture Position Bias | Controls the capture weights assigned to points that are captured to this muscle in the Deform Muscle SOP. A larger bias reduces the radius of influence of each metaball in the muscle when capturing, which in turn biases the capture weights of a point towards metaballs that are closer to that point. This can be used to gain finer control over how deformations in the muscle influence the deformation of captured points. Points must be recaptured in the Capture Metaball SOP when this parameter is changed. |
Muscle Scale | Use this parameter to uniformly scale the muscle primitives. |
Muscle Control Handles
The shape of the muscle and the distribution of primitives along the muscle’s length is controlled by five “handles” positioned along the center line. Each of these handles has associated scale values, which determine the scales of primitives along the muscle’s length. Handles also have a position along the curve, which allows for finer control of the distribution of metaballs along the muscle’s center line.
Primitives Per Segment | The number of primitives to place between pairs of handles along the muscle’s center line. This is similar to the Number of Segments parameter used in profile mode. |
Handle 1-5 Scale | Each handle has an associated scale, which is used to control the scales of primitives close to that handle. |
Handle 2-4 Position | The first and last handles along the muscle’s length have fixed positions, but the middle three handles can slide along the muscle’s center line to control the positions of primitives along this curve. These parameters control the positions of handles along the center line curve. |
Preferences
Muscle Type | The type of muscle to be generated.
| ||||
Add Custom Color | Indicates whether or not to display the muscle using a user-specified color. | ||||
Muscle Color | The color do be used when displaying the muscle. | ||||
Enable Color Gradient | Indicates whether or not to display the muscle using a color that varies along the muscle’s length. | ||||
Color Gradient | This parameter is used to determine how each primitive along the length of the muscle is to be colored. The color for each primitive is determined by sampling this channel at regular intervals between its start frame and its end frame. The red channel for each primitive’s color is assigned the value of this channel evaluated at the start frame, while the values of the blue and green color channels depend on the values of the gradient channel between the start frame and end frame of the channel. By default, enabling the color gradient gives the muscle a red color in the center that fades to white towards the ends of the muscle surface. |
Center Line
Spline Type | The method of interpolating between the input points to draw the muscle’s center line: Bezier, Special Bezier, Special Smooth Bezier, Degree 2 Bezier, BSpline, Cardinal or Linear |
Sample Divisions | Number of spline divisions to perform when resampling the muscle center curve. |
First CV Count | Number of times to repeat the first control vertex, determining its multiplicity. |
Last CV Count | Number of times to repeat the last control vertex, determining its multiplicity. |
CV Tension | Spline tension. |
Render
Display | Whether or not this object is displayed. Turn on the checkbox to have Houdini use this parameter, then set the value to 0 to hide the object, or 1 to show the object. If the checkbox is off, Houdini ignores the value. |
Examples
The following examples are specifically designed to demonstrate this node:
HandleExample
$HFS/mozilla/documents/examples/nodes/obj/muscle/HandleExample.cmd





