This network demonstrates the many uses of the Add SOP to build and manipulate geometry:
It is used to create points in space which can then be used to create polygons using designated patterns. These polygons can be open or closed. Futhermore, each point can be animated through expressions or keyframes.
It is used to both create points and grab points from other primitives. These points may be used in polygon creation.
The Add SOP may be utilized to create a polygon using points extracted from another polygonal object. A Group SOP allows for the creation of the point group that will be referenced by the Add SOP.
The Add SOP is used to create a polygon from a group of animated Null objects. An Object Merge SOP references the null points in SOPs which are then fed into an Add SOP for polygon generation. A Fit SOP, in turn, is used to create an interpolated spline from the referenced null points. The result is an animted spline.
The Add SOP is used to generate points without creating any primitives. Also, points from other objects can be extracted through the Add SOP.
Finally the Add SOP can additionally be used to procedurally create rows and columns.
Agent Vellum Unpack
This example demonstrates how the UV information on surfaces, NURBS in this example, are used by the Align SOP to orient one object to another’s surface.
UV reference parameters in the Align SOP can be animated as shown in the align_tube example.
Animating UV parameters leads to the translation and rotation of the aligned geometries along one another’s surface in various ways.
This is an example of how to transfer attributes from one geometry to another using the AttribCopy SOP.
A "smiley face" is painted onto a grid as a color attribute using the Paint SOP. The attribute is then transferred to another grid. Because of a discrepancy between the sizes of the grid, a tesselation occurs.
When there are differences between the sizes of the geometry, the AttribCopy SOP will repeat the pattern of the attribute in a cyclic fashion.
The AttribCreate SOP can be used to provide various object-specific attributes by allowing both a label and a value to be given to the newly created attribute.
In this example, the AttribCreate SOP is used to control the width of a curve at rendertime. There are two versions, chosen by a Switch SOP.
One AttribCreate SOP gives a constant width attribute in the X axis.
The other uses an expression to control the thickness of the curve to create a tapering effect.
The attribute is used by Mantra at render time. To see the results, right-click on the render icon in the viewport, and choose "render_example".
Attribute From Pieces
This example shows how to use the Attribute from Pieces SOP to assign pieces with an attribute indicating size.
Attribute from Volume
Here’s a simple example showing how you can deform a volume. First create a 3d grid of points with the box sop with divisions matching the resolution of the volume. Next, transfer the density from the volume on those points. Finally, the points can be deformed any way you want, and then you can create an empty volume and fill it with the densities from the points.
Attribute Remap gives you complete control over your float type attributes mapping them to any range you wish. Great for shrinking the range down, up, linearizing them or cyclically repeating the attribute across it’s original range. You can map any input range to an output range. This gives you familiar control to the reamp VOP or fit() vex functions in an artist friendly manner. A bonus ramp is added for finer shaping of the results. Works great to remap noise.
Attribute String Edit
The AttribTransfer SOP may be used to transfer various point attributes from a source geometry to a target. In this case, the normal attributes,
N, of one grid are transferred to another grid.
This example shows you how to add a single new point using the Attribute Wrangle SOP and the addpoint() vex expression.
This example shows you how the primintrinsic method can be used to obtain the number of vertices for a primitive. The point corresponding to a vertex can be obtained by first translating a primitive-vertex offset pair to a linear vertex value then looking up the point referenced by the linear vertex value.
This network utilizes the Blendshapes SOP to morph one geometry’s colors into another’s color.
Two input blend shapes act as inputs for the Blendshapes SOP.
The Blendshapes SOP interpolates all designated attributes, in this case "Cd" between the various inputs.
Play the animation to see the effect.
The Blendshapes SOP is used to blend shapes and/or attributes from input geometry.
In this case, three input morph targets are used by the Blendshapes SOP with the Differencing and Blend Position options checked.
The blend values of the input morphs is keyframed for specific effects. Play the animation to see the results.
This node shows how to stamp numbers onto points. It uses a for-each loop to iterate over each point, and the metadata source to get the current iteration number.
This shows how to re-apply the same sequence of nodes multiple times to geometry using the for-loops.
The Box SOP is used for more than just creating boxes. It can also envelop existing geometry for specific purposes.
The Box SOP can either create a simple six-sided polygon box, calculate the bounding box size for geometry, or be used in conjunction with the Lattice SOP.
There are two objects within the box.hip file that are examples of this:
The animated_bounding_box object shows how you can envelope an object and surround it with a simple box, even if it is animated. This can be useful when displaying complicated geometry, in which case you would put the display flag on the box object and the render flag on the complicated geometry.
This is an example, a Lattice SOP used in conjunction with the Box SOP. The Box SOP is used to envelope some geometry, in this case a sphere. Divisions is checked to create the proper geometry by referencing the number of divisions in the Lattice SOP.
The top points of the box are grouped by a Group SOP. The Spring SOP uses these points as the Fixed Points from which to create the deformation.
Using the Box SOP in this way allows you to change the incoming geometry (the basic_sphere in this case) and have the box and lattice automatically re-size for you.
Create a simple cat head by using the Bulge SOP combined with metaballs and a NURBS sphere.
The Bulge SOP is used to deform geometry using a metaball as a magnet force.
The magnitude of the magnet force can be adusted in the Bulge SOP.
The parameters in the Metaball SOP may also be adjusted to modify the final effect of the Bulge SOP on the deforming geometry.
This example shows how to cap two designated areas of a geometry by creating groups.
Two Group SOPs are used to create two groups, group_bottom and group_middle. These groups are created using Number Enable. The Pattern number corresponds to the primitive number, which you can see by turning on primitive numbers.
Two Cap SOPs are used to cap the two groups. By capping either the First V Cap or Last V Cap, you can select which end of the group you want to cap.
This example contains different variations on how to cap a tube.
There are three geometry types that are able to be capped – NURBS, mesh, and Bezier.
Each geometry type contains examples of different cap types – faceted, shared, rounded, and tangential.
For a better description of cap types, please open the help card in the Cap SOP.
Capture Attribute Unpack
This network is a demonstration of how the Carve SOP can be used to extract various elements of the surface geometry.
Depending on the type of geometry, the Carve SOP may be used to extract points from polygonal objects or curves from NURBS surfaces.
Furthermore, the Carve SOP uses the surface U and V information to extract the various elements, and by animating the U and V values we can create various effects as the points and curves move on the geometry surface.
This network contains an example of how the Carve SOP can extract 3D Isoparametric Curves from a surface, and how those curves may be used as a copy template.
The Carve SOP can be used to slice a primitive, cut it into multiple sections, or extract points or cross-sections from it.
In this example, the Extract option has been used to Extract 3D Isoparametric Curve(s). A series of disk-like shapes are created as the Carve SOP extracts curves from points around the surface with the same V Directional value.
It then uses the points along those curves as a template on which to copy sourced geometry.
This network is a demonstration of the Carve SOP, specifically when dealing with extracting curves from a NURBs surface and animating that extraction.
The Carve SOP uses the U and V surface data to carve the geometry.
In our example we have extracted curves which can then be used as basis for other geometry to create interesting effects.
Given the Carve SOP uses a 0 to 1 value to carve either in the U or V surface direction, that value can be animated either by keyframing or through expressions.
This is a simple example of how to utilize the Channel SOP to bring information from CHOPs into SOPs and apply it to geometry.
We use an animated sphere and create a lag in the animation of selected areas of the sphere.
In a CHOP network, the Geometry CHOP brings in point position data of the sphere geometry and runs it through a Lag CHOP for the delaying effect. The Channel SOP then references the Lag CHOP and applies the point data back to the selected areas of the original NURBS sphere.
This is an example of the different geometry types and arc types a circle can have.
Geometry types include primitives, polygons, NURBS, and Beziers.
Arc types include closed circle, open arc, closed arc, and sliced arc.
The arc examples are animated, so playback the animation to see the arcs opening.
Circle from Edges
This demonstration contains four examples of how a Clay SOP is used. The points have been animated to better visualize this.
Matrix - Point transformation is given by a matrix.
Vector - Point is translated along a vector.
Point - Point is moved to an absolute XYZ position in object space.
Primitive - Point snaps to the (U,V) of the primitive in the 2nd input of to a (U,V) on itself if no 2nd input is present.
This is a very basic example of how the Clip SOP can be used to control particle flow by cutting it with an infinite plane.
Play animation to see the effects.
This network compares the various ways in which the Clip SOP can be used with geometry. Depending on what parts of the clipped geometry we want to keep, different effects are achievable.
The Clip SOP can also be used as a grouping tool by specify group boundaries with clip planes.
Clip planes can be animated. Play the animation to view the results.
If you cluster point source geometry with a changing number of points, the clusters and cluster numbers can change randomly at each frame and you’ll get strange results. To prevent this, you must use a couple of tricks to create the clusters based on the final number of points, and only create the clusters that are needed.
First, connect the second input of the Cluster Points node to specify a set of point positions at which the Cluster Points node should cluster the points. This is called the rest position.
For example, the Impact analysis tool creates points from RBD object collisions. The number of points in the resulting geometry increases as more RBD objects collide.
(The example file may not cache to disk for the sake of simplicity.)
Branch a Timeshift node from the File node, and connect the output of the Timeshift to the Cluster Points node’s second (rest position) input.
Set the Timeshift node’s Frame parameter to the frame you want to cluster at, usually the last frame of the effect. You can use the
$NFRAMESvariable, which always contains the number of the last frame in the scene.
Second, to create the smoke boxes only as they're needed you must turn on Continuous on the Smoke Object node. This will create a new smoke box on each instance point at every frame. To work around this so the boxes only get created at the frame where the cluster center appears, the example file uses a For Each SOP to delete every cluster center at every frame except the frame where it first appears.
See also how to make scattered points stick for how to make scattered point positions and numbers consistent across frames on deforming geometry.
This example shows how to use the Comb SOP to control the direction of point normals by interactively "painting" over the normals.
Two Comb SOPs are used to comb the normals on a grid in different directions. A Sequence Blend SOP blends between the two so that the normals look like they are swaying.
A simple line geometry is attached to those points.
The Comb SOP is a great way to animate things like hair and grass.
This example shows how to create a trimmed NURBS or Bezier surface using the Convert SOP.
There are four examples contained that compare how a trimmed surface handles a texture.
Grid Surface a simple texture map on a grid.
Trimmed Circle Using the Trim SOP the conventional way of creating a trimmed surface using a Project SOP and a Trim SOP.
Trimmed Circle Using the Convert SOP creates a trimmed surface using a Convert SOP.
NURBS Surface Using the Convert SOP shows how a texture is parametrized over a surface that is not trimmed.
To get a better sense of the parameterization of the texture, turn on points and toggle between wireframe and shaded modes.
This example shows the various ways in which the Convert SOP converts geometry types using a simple sphere.
A chart is used for this demonstration.
The left column of the chart describes the original geometry type to convert from.
The top row of the chart describes the geometry type to convert to.
All Sphere SOPs and Convert SOPs in this demonstration use their default values to better visualize the differences.
This example is a simple demonstration on how to convert a curve into a primitive circle.
To convert a NURBS or Bezier closed curve to a primitive circle, it must first be converted to a polygon.
Once converted to a closed polygon curve, you can convert the curve to a primitive circle.
This example demonstrates how to convert a closed curve into a surface using the Convert SOP.
There are two versions contained in this example. One curve has been successfully converted to a surface, the other has not because of the concave shape of the original curve.
View in shaded mode to get a better sense of this.
This example displays the various ways in which a Cookie SOP operates.
This example demonstrates how to perform boolean operations using the Cookie SOP.
In this instance, the points are consolidated using a Facet SOP and a Divide SOP is used to create a smooth surface for the Cookie SOP to operate on.
This example creates a boolean operation using the Cookie SOP.
A star geometry is created and used to subtract the shape from the sphere geometry.
The Copy SOP can be used for more than copying geometry. In this example, the Copy SOP is used to transfer color attributes from the template geometry (or point) to the copied geometry.
A polygonal sphere with color infomation is used as the source geometry. A point with a color attribute (Cd) is extracted from the sphere and used as a template by the Copy SOP. Then the Copy SOP transfers the color infomation to a copied polygonal circle.
The Copy SOP is used to transfer specific attributes from a template to copied primitives. In this example, a sphere is use as a template with color attributes added to the sphere points. A Particle SOP is then used to birth particles from the sphere points.
Next, a Copy SOP does two things:
It copies geometry to the particles.
It transfers the color attribute from the source sphere points to the geometry whose position is based on the particles.
Play the animation to see the effects.
The Copy SOP is used to copy geometry to particles using the Particle SOP as a template. In the example, the Scale parameter of the Copy SOP is used to create the specific effect. The Copy SOP may also be used to control different attributes of the copied geometry beyond mere scale.
Play the animation to see the effects.
In this example, the Copy SOP is used to randomly copy various objects onto points of a given template geometry. We use the stamp capability of the Copy SOP for our purpose. Furthermore, the entire process is kept procedural so that we have the option of determining the type and the number of geometries to be copied and the kind of template to be used.
Inside the Stamp tab of the Copy SOP we create a variable named "switch" which will drive the input value of the Select Input parameter in the Switch SOP. In turn, the Copy SOP is able to copy at random any number of input geometry to template points.
This example demonstrates the power of the Copy SOP’s Stamp operation.
Here, a Copy SOP is used to copy a circle onto the points of a sphere. The Stamp operation then applies various modifications to those copies based on division, scale, color, and extrusion. This results in the generation of a randomized variety of "stars".
Starting with a simple circle, a large number of variations are created using in the copies through the use of Stamping with expressions.
This demonstration contains four different examples of applying the creaseweight attribute to polygonal geometry utilizing the Crease SOP, Vertex SOP, Attribute Create SOP, and Subdivide SOP.
It also points out some of the differences between rendering with Mantra vs. RenderMan. It is important to know that Mantra can not render the creases due to Copyright laws.
Rendering creases with Mantra requires the addition of a Subdivision SOP for calculating the geometry. The Render tab’s Geometry parameter at the object level should be set to: Geometry As Is.
If Renderman is being used, the Subdivide SOP is only for previewing the result. Renderman calculates creases during the render. The Render tab’s Geometry parameter at the object level should be set to: Polygons as Subdivision Surfaces.
This example shows how to creep metaballs on a surface. In this case, the surface is a contorted tube and the metaballs look like a "blob" being pushed through the tract.
A tube is created and used as the creep surface. A circle is created by carving a profile out from that same tube. The circle is then animated with a Creep SOP down the length of the tube.
Metaballs are attached to the points on that carved circle to create the "blob".
This example shows two different ways in which particles can be crept on a surface. In this case, the surface is a contorted tube.
One version shows how particles are crept inside the surface, the other shows how particles are crept outside the surface. This is done by changing the z scale in the Creep SOP, which offsets the particles perpendicular to the surface.
The particles are birthed from a circle that is carved from the tube geometry.
This example shows how to spiral a line geometry over a tube surface using the Creep SOP.
In this example, some text geometry is creeped along an animated surface.
The surface is comprised of two skinned curves that have been animated using a Sequence Blend SOP. The Creep SOP requires that the creep surface be a surface and not a curve.
This example shows how you can take a geometry and creep it over an animated surface.
A file, fabric.bgeo, which looks like woven fabric, has been brought in using the File SOP. A NURBS grid has been animated to look like a piece of waving fabric using sine and noise functions.
The fabric.bgeo is crept over the animated NURBS grid, using a Creep SOP, and the result is an animated piece of woven fabric.
This example demonstrates how to use the Curve SOP to create a car’s hood.
It also shows how to make points on a new curve dependent on the points of a previous curve. This way, you can move the points on one curve and affect any curve further in the network.
This is a demonstration of how the CurveClay SOP can create an embossed effect on nurbs or bezier geometry.
Two different methods of using the CurveClay SOP to imprint font onto a sphere are shown.
The first method uses a single projected profile, the second method uses two profiles.
This example demonstrates how to refine a curveclay geometry.
A letter "t" is projected onto a grid. The CurveClay SOP understands profile information and uses it to deform the surface geometry.
To get sharp edges on a curveclay, play with the Sharpness and Refinement parameters.
This example demonstrates how the Delete SOP is used to remove specified geometry from a scene.
Geometry may be deleted by Point or Primitive Numbers, by Group, or by position within a Bounding Box.
Distance Along Geometry
Distance from Geometry
This example shows how to create a low res - high res set up to support RBD objects. The two main methods are to reference copy the DOP Import SOP and feed in the high res geometry or to use point instancing with an Instance Object.
This example demonstrates a technique of using the DOP Import SOP to allow the use of proxy geometry in a DOP simulation. One set of geometries are used in the simulation, then the transform information for those objects is applied to higher resolution versions of the geometry.
DOP Import Records
The Duplicate SOP, in this example, is used to create multiple iterations of a box geometry with each copy scaled and offset cumulatively. Expressions using copy number $CY may be used to control each iteration’s parameters.
This example creates an animation illustrating how the Edit SOP’s Reference Geometry input can be used to apply an edit on animated geometry.
This example demonstrates how to measure distance on a model using Falloff, then create a custom deformer using that distance attribute to drive the amount the model is deformed.
This example shows how you can use the file sop to do a delayed load of packed disk primitives to have multiple geometry samples per frame for rendering motion blur. If you save out the packed disk geometry, you're really only saving out the point geometry with references to the disk files (which is very light weight).
This example shows how you can use the file sop to do a delayed load of packed primitives to have multiple geometry samples per frame for rendering motion blur.
The Fillet SOP is used to create a bridge between two NURBS surfaces with control over its parameterization. The fillet uses the original surface uv information for bridging.
Fillet types may include Freeform, Convex or Circular. The Freeform fillet usually provides a smooth natural form. Such parameters as the left and right UV, Width, Scale, and Offset may be used to control the fillet location between the surfaces.
Find Shortest Path
This is an example of how to use the FindShortestPath SOP to find a path through geometry where certain edges are directed edges. Directed edges can only be traversed in one direction.
Try changing the start and end points, as well as the directed edges, to explore how the SOP avoids going the wrong direction, and cannot reach points with only outgoing edges.
This is an advanced example of how to use the FindShortestPath SOP to prefer "central" paths, based on centraily measures computed using FindShortestPath and AttribWrangle. This helps avoid staying too close to walls where avoidable.
Turn on the Display Option > Optimization > Culling > Remove Backfaces to see inside the space more easily. Try visualizing the different centrality measures using the switch node. The same example without considering the centrality of the path is demonstrated in a side branch of the SOP network, in order to see the difference.
This is an example of how to use the Fit SOP to fit a NURBs curve to a basic polygon curve.
Fitting builds a new NURBs or Bezier curve through the input geometry’s points.
There are two methods for doing this:
Interpolation fitting outputs the same number of cv’s as the input curve (Original Polygon Curve).
Approximation fitting reduces the number of cv’s, while approximating a curve through the input points.
Play the animation to see how these two methods affect the resultant curve over time.
This contains examples of fitting a Polygon Mesh to a NURBS surface through the use of the Fit SOP. There are two methods of fitting:
Approximation, which generates primitives that roughly follow the path of the data points.
Interpolation, which generates primitives that touch all the data points.
This example demonstrates how you can use the Fluid Source SOP to source and advect colours from an additional volume into a smoke simulation.
This example demonstrates how to cool Lava using the Cool Within Object shelf tool.
This example demonstrates how you can use the Fluid Source SOP to create a volume for fluid simulations from a torus.
The Font SOP is used to create 3D text geometry in the scene.
The geometry may be set to Polygon, Bezier, or a combination of the two.
With the combination, Bezier will be used for letters containing curves, and Polygon will be used for those with only straight edges.
Fonts other than those loaded by default may be loaded in the Font parameter.
This example file uses the Force SOP in conjunction with Metaball SOPs and Particle SOPs to create dynamic animations.
Using the Radial Force Parameter of the Force SOP, particles are puffed in and out. Then, using the Directional Force Parameter, a rotating vortex is created as a metaball spins around an axis.
Press play to view the animation.
This example demonstrates three different methods of using the ForEach SOP: group, number, and attribute value.
This example uses the ForEach SOP in all three modes (by group, by attribute and by iteration) for you to study and use. You can make any SOP that doesn’t support local variables (like Magnet, for example) behave like one that does using any of the three methods shown here.
This example shows how to use the For Each SOP to individually boolean a bunch of self intersecting spheres with a cheese wedge.
This example shows how to use the foreach sop to intersect one object with each part of another object and merge the results together.
This example uses the foreach sop to apply the same SOP repeatedly to the geometry, accumulating the effect of each pass.
This example demonstrates using the Fractal SOP to deform geometry to get a random, jagged subdivision surface. This is a useful tool in creating things such as bumpy terrains, landscapes, rocks, or debris.
The Fractal SOP is applied to each geometry type to show how the displacement changes based on the geometry type.
The Fur SOP is used to instance hair-like curves.
In this case, the Fur SOP is used to create curves that can be used for clumping. A second Fur SOP is used to illustrate how to create hairs that use the clumping geometry.
This example demonstrates how the Fur SOP builds hair-like curves based on guide curves and skin geometry.
This example demonstrates how the Fur SOP and Mantra Fur Procedural can be applied to an animated skin geometry. CVEX shaders are used to apply a custom look to the hairs based upon attributes assigned to the geometry.
This example illustrates how custom shaders can be used to define the appearance of fur generated by the Fur SOP.
This example demonstrates how a CVEX shader can be used to apply procedural effects to the curves generated by the Fur SOP. All attributes from the Fur SOP’s guide geometry and the skin geometry inputs are made available to the CVEX shaders. The CVEX shader makes use of the attributes, a unique identifier for each curve, "fur_id", and the position of each point, "P".
This example demonstrates how to use a texturemap to color fur.
This example demonstrates the use of points to provide specific placement of the roots of hairs.
This example demonstrates how the Graph Color SOP can be used to partition a crowd into groups of agents that did not interact with each other (based on a collision radius) during the simulation. When adding secondary cloth simulations to a crowd, this can be useful for avoiding unwanted collisions from nearby agents.
This example demonstrates how feature edges of your object can be preserved during a polyreduce by using an Edge Group.
Group Find Path
Group from Attribute Boundary
This example shows how to 'brickify' or make an object appear to be made of bricks using the IsoOffset SOP.
This example demonstrates how the Join SOP can connect multiple pieces of geometry by faces and surfaces.
The Join SOP will combine the individual pieces of geometry into a single primitive that will inherit attributes.
Nurbs, Bezier, or Mesh surfaces should be used with the Join SOP.
Do not use Polygons as it will not work with the Join SOP.
Agent Animation Unpack
Agent from Rig
Agent Pose from Rig
Character Blend Shapes
This example demonstrates how to use the MotionClip Blend node to blend an animation of someone being pushed while running forwards into an animation of someone jogging around a corner.
The final result is an animation of someone being pushed while jogging around a corner.
MotionClip Pose Delete
MotionClip Pose Insert
Rig Attribute VOP
This example demonstrates how to use the KineFX Transform from Path, Blend Transforms, and Offset Transform VOPs in SOP to constrain a camera on a path.
This example demonstrates how to use the KineFX CurveSolver VOP in SOP. It does the same as the Follow Curve mode on the InverseKIN CHOP.
This is an example of how a Lattice SOP is used to create a bouncing ball.
The Lattice SOP creates animated deformations by manipulating simpler geometry that encloses the source geometry.
This example shows how the Lattice SOP can use an animated Box SOP to deform the source geometry. In this case, the source geometry is a sphere.
The LSystems SOP allows for the definition of complex shapes through the use of iteration. It uses a mathematical language in which an initial string of characters is evaluated repeatedly, and the results are used to generate geometry. The result of each evaluation becomes the basis for the next iteration of geometry, giving the illusion of growth.
The example networks located in this demonstration should be enough to get you started writing custom LSystem rules.
However, anyone seriously interested in creating LSystems should obtain the book:
The Algorithmic Beauty of Plants, Przemyslaw Prusinkiewicz and Aristid Lindenmayer
For a full list of LSystem commands, see the Houdini documentation.
This example shows the use of the Magnet SOP, and illustraites its ability to deform geometry.
The Magnet SOP works by using the Density Field of a Metaball as a Magnetic Influence Field on a piece of geometry. The degree to which the Magnetic Field effects the surface it is deforming is based on the distance of that surface to the center of the Metaball.
Here, the Metaballs have been attached to a moving particle system which bounce across a plane. The Metaballs also interact with the plane, causing it to bubble upward as their Fields intersect the surface.
Mask by Feature
This example demonstrates how the Match Topology SOP lines up the points and primitives between two geometries with equal amounts of points and primitives.
The Tracking Points, Reference Points, and Assume Primitives Match features are utilized to get a perfect match.
This example demonstrates how to use the MDD SOP and MDD File Writer ROP.
The Merge SOP applies all incoming attributes to all input geometry. Each input geometry may have its own set of attributes.
Three spheres are wired into a Merge SOP. The first has no attributes applied. The second has a color attribute (
Cd) applied by a Point SOP. The third has a normal attribute (
N) applied by another Point SOP.
The Merge SOP does NOT know how to build attributes, but can apply them. As a result, all applied attribute values are set to zero.
This is why the first two spheres display and render black. They have normal attributes applied, but their values are set to zero.
In addition, the first and last spheres have a color attribute applied, but their values are set to zero.
It is better to set attributes explicitly, instead of relying on the Merge SOP to do so.
This is a basic example of how metaballs interact as force fields with a density threshold and falloff. Metaballs can be created in Houdini through the Metaball SOP
The Point SOP is used to provide a visual representation of how metaballs interact when their respective fields blend into one another in an additive fashion.
Orientation Along Curve
This example demonstrates how to use the Paint SOP to paint an attribute onto geometry, and then use the attribute to modify the geometry.
This example demonstrates how to paint color onto geometry using the Paint SOP.
This example demonstrates how to paint scattered points onto the surface of your geometry with a set number of points per area.
This example demonstrates how to create a fluttering leaf simulation by using the Particle SOP.
It also demonstrates how to use the Point SOP to modify point normals, affecting the velocity and direction of particles. Since particles are actually points in space, the Point SOP is a powerful way to control particle attributes.
Press play to watch the simulation.
This example shows the ability of the Particle SOP to define a default Size for any given birthed particle.
A simple Grid can be used to create a dynamic solution of particles streaming off as if blown by the wind. As these particles leave the grid, their size slowly diminishes, as the particle continues to die.
This example file demonstrates using the Metaball and Force SOPs to affect particles generated by the Particle SOP.
Particles are birthed from the origin and shot towards a still metaball. The metaball has a Force SOP applied to it causing the particles, upon reaching the metaball, to spread away from it out into space.
This is a basic example of using the Particle SOP to birth particles at the SOP level, and having the particles collide with geometry.
The given example file takes a grid, and using the Particle SOP in combination with the Metaball and Force SOPs, creates a dynamic animation.
A metaball ship jets through space driving particles out of its path along the wake of the ship. With the help of the Force SOP, the metaballs are given the properties necessary to make this reaction possible.
Play the animation to see the full effect.
This example contains five demonstrations of some of the various uses of the Particle SOP.
Creep particles along a surface using a the Creep SOP.
Group birth particles from a group of points on a surface.
Split particles on contact.
Collide particles off a collision object.
Birth particles from a moving object.
Use a metaball to exert force on a particle.
This is an example of creating a fountain from several Particle SOPs and basic modeling.
It demonstrates how to create normal offsets, velocity variances, and collision behaviors to control the motion and look of the particles.
This example uses a Metaball SOP and a Force SOP to push particles side to side as they pass through a particle stream generated by a Particle SOP.
Particles are birthed in the air off of a sphere, while a metaball passes back and forth through, pushing the particles from its path.
Play the animation to see the full effect.
The Particle SOP enables the creation of particles at the SOP level and allows those particles to directly interact with geometry. Furthermore, these particles are in turn treated as point geometry.
In this example, particles are both crept along and collided with a collision tube object. It is possible to also manipulate and control particles in SOPs through the adjustment of point normals (including those of the particles).
The Platonic Solids SOP generates platonic solids of different types. Platonic solids are polyhedrons which are convex and have all the vertices and faces of the same type. There are only five such objects, which form the first five choices of this operation.
This example shows all seven of the different polyhedron forms that can be made using the Platonic Solids SOP.
This is an example of how to use the Point SOP to orient point normals along a path. This allows for control over the orientation of geometry when copied onto points.
Points are extracted along a spiral on a per frame basis using an expression in the Carve SOP. A cone is copied to these points sequentially and results in an animation along the path.
This is an example of how to calculate a cross product by using the Point SOP. The cross product is defined as the vector perpendicular to two input vectors.
To visualize this demonstration, please explore the SOP network and turn on Point Normals in the display.
This example of the Point SOP demonstrates the capacity of the Point SOP to alter geometry based on another input.
A sphere is created and then the points are randomly transformed. Then, by using both inputs of the Point SOP, the original sphere is brought back to average out its altered form. A simple math expression averages the positions of the two spheres, point by point.
The Point SOP is quite a versatile operator. This example shows how the Point SOP may be used to control point weight, color, normals, and UV attributes.
Furthermore, it is possible to create various relationships among the point attributes through the Point SOP.
This is a demonstration of how the Point SOP can be used to add Normals to geometry.
It also shows how the Point Normals affect the orientation of copied geometry and the appearance of shaders.
Using the Point SOP, a simple displacement is created and applied to a portion of a spherical surface.
Using the normals of a point, which is basically a vector, and adding that number to the position of the point, the point is displaced in that given direction. With a Merge and Skin SOP the displaced surface is then connected back to the original.
This example file uses the Point SOP to turn a regular line into a spiral.
There are two different approaches used in this example. The first uses the point numbers of the line to define the expression calculations. The second uses the position of the points in the line’s bounding box for the expression.
The Point Terrain Erode file displays a mountainous landscape, created by the Fractal SOP. The landscape is swiftly worn away by the Point SOP.
With just a spare channel, erode, and a simple clamp() expression, the Point SOP can control the whole land.
This example shows how to use a simple python expression inside a SOP node to deform a grid. The expression imports a python math library and uses noise to deform the points of a grid.
Point Cloud Iso
Points from Volume
This example demonstrates how to cap off a hole in a piece of geometry using the Poly Cap SOP.
This example demonstrates the various options for joining polygons using the PolyKnit SOP. The PolyKnit SOP is useful for filling in holes, gaps, or to re-define edges on polygonal geometry.
PolyKnit can be used to manually knit joining polygons between existing polygons. Polygons are created by specifying a list of input points from which to "knit" the new polygons.
PolyKnit will yield different results, depending on the pattern by which the points are selected or listed. Please see the Helpcard documentation for more information on how the PolyKnit SOP builds new polygons.
This example demonstrates how the Polystitch SOP can stitch together or refine seams between polygonal surfaces with incongruent U and V divisions. This is useful for smoothing and eliminating cracks at seams.
This is an example of how to use the Primitive SOP to correctly sweep primitives on a curve.
The Sweep SOP places the origin of a primitive on a curve by default. If the primitive centroid is away from the origin, the primitive will be placed away from the curve.
In order to correctly place the primitive’s centroid on the backbone, its centroid must be at the origin. For this, the Primitive SOP is used.
This example demonstrates how to rotate individual primitives on a grid surface using the Primitive SOP.
A Group SOP is used to animate a bounding box over the grid surface, thereby activating the randomized rotations in the Primitive SOP.
This example demonstrates using the Primitive SOP to add a Color attribute to primitive geometry.
The rand() function is used in the RGB fields to generate different random colors for each primitive.
Then the prim() function is used to reference the attribute values of one SOP, to drive the attribute values of another SOP.
This file demonstrates the ability of the Primitive SOP to control the individual primitives of the object.
With expressions in the Translate Parameter, motion is created driving the primitives away from their centroid. Yet another expression presents the primitives with a randomized rotation. Another randomizing expression colorizes each of the primitives.
Together these parameter create an explosion destroying the original sphere.
This example demonstrates the how the Primitive SOP can be used to drive the attributes of other geometry. In this case it is used to affect the Weight Parameter of a Metaball SOP.
In addition, the parameter can be animated over time. Press Play to see the animation.
This example shows how to use the Project SOP to create a profile on a surface.
The Profile SOP is then used to extract the profile from the surface or remap the profile on it. It also shows how the profile will animate with the surface or independent of it.
The Ray SOP projects one object over the surface contours of another.
It does so by calculating the collisions of the projected object’s normals with the surface geometry of the collided object.
In this example, a Grid is wrapped over the surface of a deformed Sphere using the Ray SOP.
A Facet SOP is used to correct the normals of the wrapped Grid after it is deformed over the surface.
RBD Bullet Solver
This example demonstrates the use of the RBD Bullet Solver SOP guiding feature.
This example demonstrates the use of the RBD Bullet Solver SOP with custom forces and dynamic constraint generation.
This example contains a setup that is used in the tutorial seen here: destruction/tutorials/intro_to_mbd_1
This example contains a number of various uses for the RBD Buller Solver SOP.
RBD Connected Faces
RBD Constraints From Lines
RBD Deform Pieces
RBD Guide Setup
This example demonstrates the use of the Resample SOP on three types of curves. (Polygon, NURBS and Bezier)
The Resample SOP rebuilds the curve by converting it into a series of Polygon Line Segments.
The curve may be rebuilt "Along Arc" or "Along Chord". "Along Arc" utilizes the Hull information as a basis of reconstruction, and can be defined by a Maximum Segment Length and/or Maximum Segment number. "Along Chord" can only be defined by Maximum Segment Length.
Resampling the curve based on Maximum Segment number divides the line into segments of equal, but unspecified length, spanning from start to endpoint. Line detail is directly proportional to the Segment number.
Resampling the curve based on Maximum Segment Length will rebuild the entire line into equal length segments except the last segment. If the Maintain Last Vertex option is on, the last segment will be less than or equal to the Maximum Segment Length value, depending on its distance to the endpoint. With the option off, the endpoint is disregarded and the line is created out of equal lengths.
Turn on Points in the display to see how the Resample SOP resamples line segments.
The Rest Position SOP creates an attribute based on the surface normals that allows a shader to stick to a deforming surface.
All primitives support the rest attribute, but, in the case of quadric primitives (circle, tube, sphere and metaball primitives), the rest position is only translational. This means that rest normals will not work correctly for these primitive types either.
Use the Rest Position SOP only when you are deforming your geometry and you are assigning volumetric or solid materials/patterns in your shader.
Rest normals are required if feathering is used on polygons and meshes in Mantra. NURBs/Beziers will use the rest position to compute the correct resting normals.
It will be necessary to render the setup in order to see the effect.
This example demonstrates the Revolve SOP’s ability to create geometry by spinning curves and surfaces around any described axis. Simple objects, such as a torus and a vase, are generated by the Revolve SOP and user-defined inputs.
This file also shows off how different geometry types react to different Revolve SOP parameter changes.
The different pieces of geometry, all with the same point count and order, are created. Each piece of geometry is fed into the Sequence Blend SOP in a specific order. Then, the Input Blend parameter is used to animate through the three input morphs using an expression.
This example shows how you can blend point positions taking into account their velocities, using the Sequence Blend SOP.
This example shows how to blend point attributes using a Sequence Blend SOP.
This example shows how to blend primitive attributes using a Sequence Blend SOP.
This example demonstrates how you can use the Scatter SOP to scatter points that stay consistent through topology changes like remodelling the input geometry or breaking it. It does this by using the option to scatter in texture space.
This simple example demonstrates how you can use the Scatter SOP to randomly scatter grass across a basic terrain.
This example demonstrates how you can use the Scatter SOP with the Attribute Interpolate SOP to easily adjust scattered points to stay consistent on deforming geometry.
Scatter and Align
This is a demonstration of using the Skin SOP to create complex forms by creating surfaces between one or two input geometries.
It also demonstrates how the Skin SOP can interpret between different geometry types and varying point numbers.
This demonstration contains example networks showing 3 different methods by which the Skin SOP can assemble input curves to produce a variety of forms.
The methods covered in this demonstration are how the Skin SOP can make a form from a single asymmetrical curve, based on grouping primitives, or from multiple curves.
This example demonstrates how you can use the Skin SOP to skin geometry in two different ways: By groups of primitives and by skipping every nth primitive.
This example displays a creative use for the Skin SOP involving the creation of an alien ship.
Curves are first created with the Curve SOP. Then, with the Skin SOP individual curves can be selected to be used as reference for a generated surface.
This example demonstrates using SolidFracture to split tetrahedra for welding and breaking with the Vellum Solver.
This example demonstrates various ways in which you can use a solver node to transform an object based on ordinary differential equations.
There are 6 different solvers in this example. There is also the exact answer as a point of reference. The solvers are numerical methods that solve the following coupled Ordinary Differential Equations with initial conditions:
x' = y ; x(0) = 1 y' = -x ; y(0) = 0
The numerical methods for Ordinary Differential Equations are: Forward Euler, Runge-Kutta Second Order, Runge-Kutta Third Order, Runge-Kutta Fourth Order, and Parker-Sochacki solved two ways. In one version, Parker-Sochacki is hard coded at order 5. In another version Parker-Sochacki is written in a for loop where the order can be adjusted by the user.
This is an example of simple footsteps using sdfs on a grid.
This is an example of a simple cloth using verlet integration and simple explicit springs.
This network utilizes three SOPs (Bound, Spring and Lattice) that commonly work together to simulate certain physical dynamics.
We have created a simple polygonal sphere to act as the source geometry. The sphere is then fed into a Bound SOP which will act as a deforming reference. The Bound SOP also behaves as re-enforcement for the deforming object.
Then the bounding box is wired into the Spring SOP with a group of grids as collision objects. The Spring SOP simulates the dynamics by calculating the proper deformations and behaviours of our source geometry as it collides with other objects. The Spring SOP is where we can apply external forces along with various attributes (characteristics such as mass and drag) which influence how the object deforms.
Finally the Lattice SOP takes the deformation information from the Spring SOP and applies it to the source sphere geometry.
This example demonstrates the three main functions of the Spring SOP.
It shows how the Spring SOP can deform input geometry to create a cloth like effect by creating interactions between two objects, defining motion, and applying forces.
Play the animation to see the Spring SOP in action.
This example shows how a flag can be simulated using a Spring SOP.
Here the Spring SOP applies forces that simulate the laws of physics on the points of a Grid SOP to create the flag effect.
This example demonstrates a way to create dynamic hair using the Spring SOP.
A Line is copied onto the points of a Sphere and input into the Spring SOP as a source. Then a Metaball and Force are input to further effect the motion of the hair.
Here the Spring SOP is used to give a line rubber band-like characteristics. Used in combination with an Xform SOP, the rubber band dances about on the floor.
This example demonstrates how the Sweep SOP copies geometry onto the points of a curve.
The Sweep SOP is unique in that it automatically places the copied geometry perpendicular to the backbone it is copied to. Variations such as the Cross Section’s scale can be adjusted using expressions.
This network contains an example of the Sweep SOP. A NURBS curve and NURBS circles are used as the backbone and the cross section geometries of the sweep operation respectively.
By controling the scaling of the cross section geometry in the Sweep SOP various effects can be acheived. Finally, a Skin SOP completes the form by using the swept geometry as a kind of skeleton.
In this example the Sweep SOP a grid is used as the backbone of a sweep operation with arcs (created by a Circle SOP) as the hull (cross sections) of the sweep object.
The final sweep object is then skinned with a Skin SOP to create the dome geometry.
This network demonstrates how the Sweep SOP can be used to construct geometry that is easily deformable. The Sweep SOP requires a backbone and cross section geometry.
Through a sin() function an expression is created to animate the backbone for a slithering effect. Then the circles are copied at every point on the backbone to create the skeleton of the worm. Finally, a simple skin operation completes the worm body.
This example shows off the flexibility of the Twist SOP. The Twist SOP has many operations such as twist, bend, shear, taper, linear taper, and squash.
Contained are examples of how each Operation affects different geometry types: Polygon, Mesh, NURBs, NURBs Perfect, Bezier, and Bezier Perfect.
This example demonstrates the Unpack SOPs ability to evaluate style sheet information while unpacking. Nested packed primitives are used to demonstrate partial unpacking while still preserving styling information. This example also demonstrates the use of a Python SOP to extract information from the per-primitive style sheets.
Vellum Rest Blend
This example demonstrates animating Vellum constraint properties during simulation.
This example demonstrates using the pressurescale attribute to create an animated inflation effect with the VellumSolver’s pressure constraint.
This example demonstrates using the
layer point attribute to improve collisions when simulating multiple layers of Vellum cloth.
This example demonstrates using Pin to Target constraints to attract Vellum cloth to capture / deformed geometry.
This examples demonstrates using the
disableexternal attribute to disable Vellum collisions on a point-by-point basis.
This examples shows to use point attributes to directly control collisions with collisionignore and collisiongroup.
This example shows how to create Attach to Geometry constraints during a Vellum simulation based on proximity to a collision object.
This example demonstrates dynamically stitching or gluing Vellum geometry together during a simulation.
This example demonstrates gluing Vellum Grains together for sticky particle effects.
This example shows the most efficient and stable way to update the orientation for hair guides going into the Vellum Solver when used outside the standard Grooming tools.
This examples shows how to target a hi-res Vellum cloth simulation to a previous low-res simulation to maintain overall motion while still getting fine wrinkles.
This example demonstrates simple breaking welds for tearing cloth using the Vellum solver.
This example demonstrates creating softly releasing Pin constraints using the Stiffness Dropoff parameter.
This example demonstrates the Tetrahedral Fiber constraint for simulating contracting softbodies.
This example uses the Vertex Split SOP to add sufficient points for copying vertex texture coordinates to point positions.
This example shows how to use the Volume Analysis SOP to compute the curvature of a volume and colour the original points from the curvature values.
Volume from Attribute
This example shows how to detect the overlapping regions of many incoming volumes procedurally using Volume SOP and Volume Merge SOP.
This example shows how to use the Volume Surface SOP to surface an SDF using another volume to specify the triangle sizes.
This example shows how to use the Volume Surface SOP to surface a hierarchy of SDFs using explicit grading.
The Wire Blend SOP is used to blend curves from input geometry. In this case, three input morph targets are used by the Wire Blend SOP with the Differencing and option checked. The blend values of the input morphs are keyframed for specific effects. Play the animation to see the results.