Deborah R. Fowler
Houdini Tips and Tricks related
to modeling / procedural modeling / procedural animation:
Posted 2013
Updated on Feb 2 2025
Files created by Deborah R. Fowler unless
otherwise noted. Click on
Picture for sample hipnc file
See also modeling
overview section
TIP:
add node can be used for many purposes. A better roof example uses the add node as well (For other roofs see below)
add node for deleting all but points
add node for following geometry (we will use this extensively with animation).
alembic files - when exporting from Houdini - use an rop alembic node to export - when reading back into houdini use an import and be sure to grab the correct path. More information about alembics here
animation misc - curve movement
attribute paint and the bend node H18 - following Jeff Lait's Masterclass on Attribute Paint - quick sample file - more info here
bend with variation in a for-each pigFlower.hipnc (H18.5)
boolean booleanExampleH19.hipnc
box (Polygon) geometry: If your corners look soft - like this you can check off the consolidate corner points to get a more normal looking render like this. there of course are other ways to deal with this - the Houdini theme - there is more than one right way - it depends on what you are trying to do. You can turn off consolidate points or you can use an edgecusp. See hipnc for multiple solutions
bbox function - like the point function, the bounding box function can give you access to information you may need (see also intersection analysis)
callback scripts - very simple example in hscript and python of a callback script. A more advanced python version exists on my python page here (see Adding callback scripts). Another example DoorPlacementWithCallback.zip
callback to reset parameters in the GUI (also included: how to make a parameter disappear based on another)
-
cull geometry points by camera frustrum (several videos exist on youtube, but here is a sample file - see also Complex Scene Tips
-
table legs example using ch reference or add
CHOPS hints. The limit node can come in handy (thank Ian), however there usually is a mathematical way to achieve the same purpose (both included in the hipnc file) - the goal was to flatten the peak of a sine curve).
In addition, you can use chops and take the information to create a curve to build geometry (updated with pointwrangle and op: format)
Here is a simple wing animation using chops compared with expressions (updated using for each in place of copy stamp)
-
chops combine for pause effect on sine function
chramp color function additional file now in 19.5
chramp float function in both hscript and vex now in 19.5
clip node
color node with Attribute Create can also be used for similar control to the chramp example above
color variation using for-each (see also looping overview) exampleOptionsColorVariation.hipnc (H18.5)
color variation using for-each tint texture (see also looping overview) colorVariation.hipnc (H18.5)
- [Tips for] Complex Scenes (Includes brief Render Description)
copy node - simple examples (remember to use packed primitives or instancing - see instancing)
copy node overview for beginners (version 19.5) at Overview-CopyNodes.html
copy node variation without stamping
copy by for each with differing floor sizes - similar to the snowman/building pointwrangle example
copy by for each with differing width (similar to above but perhaps buildings)
copy increase/decrease - now with for-each forEachIncreaseDecrease19.5.hipnc
creep sop (hint - inside this file is a link to a forum post where they create a chain). More on creep here.
-
delete attributes (or Attribute rename)
delete or blast You can delete or blast including the second input for a bounding geometry object
edgecusp - see entry under Box above. Edgecusp, facet and vertex can all be used to "sharpens edges by uniquing their points and recomputing point normals". Also from sidefx documentation stairsFromSidefxDocumentation.hipnc
labs grab an edge - if you have SideFXLabs loaded use edge group to curve, you can create geometry from an edge labsGrabACurve.hiplc
font node - should you ever need to randomize alphabetical characters here are some expressions you may find useful
- for-each nodes page containing multiple example files see Overview-Looping.html
- also loopForEachVaryStacks.hipnc
- simple example of randLineLength.hiplc and with sweep/polyspline nodes randLineLength.hiplc
fuse node can be very useful to get rid of duplicate points - note H18 - fuse behavior has changed - See below
fuse node H18 turn off everything except Fuse Snapped Points
gears - example using polyextrude, boolean, groups
glass - dealing with glass? check out the troubleshooting page
groups can be very useful
- FOR HEIGHTFIELD example files see here
Hscript - including multi-line, comments and the for loop in a parameter expression. There is a very useful forum post here as well.
Hscript - example above extended to a modular version
Hscript - introducing some examples using C++ like hscript as well as introducing pointWrangle (lecture example)
Hscript versus python
intersection analysis
intersection analysis for procedural animation
intersection analysis for procedural animation
object merge is very useful to have tidy networks and reference geometry without bringing all the nodes into the current container
- Orient objects or profiles to a curve? copy to curves is not the only option
orient PolyFrame from above video
orient PointWrangle from above video
polyframe or pointwrangle works, below are polyframe and for pointwrangle click here
- also now we have copy to curves node polyframeVSpointwrangleNCopyToCurve.hipnc (H18 and up)
- if you need meta data, instead of copy to curves, use orientAlongCurve.hipnc
(H19 and up) and copy to points
polyframe is your friend (sometimes)
also orienting along a circle
tube geometry
copy onto curves configured in any "tube" shape
this works too - center of each face (facet node used)
in more detail using lines or expressions - (measure node used)
this works for angled tubes as well (facet node, tube node)
- you can also use the sweep node
- (for H18 see attribute paint above) paint node can be used for layout - it is a very powerful technique, especially when combined with the scatter node. See attributePaintLayout.hiplc.
point function is an extremely useful function that you should be aware of to get even more information
- polyextrude - more info here
- points from volume -
more
info here
polyfill (polycap) roundedFace.hiplc (H19)
polyspline
post placement Building - simple examples of placing posts on a platform both from an edge or from the center
python versus hscript expressions
- PYTHON IN HOUDINI
rand - (H19 file) seed can vary (point wrangle, create attribute, attribute randomize)
roof - fancy and also roofsFancyMore.hipnc with a reamp controled version of a roof
sample windows Building (see also building video) - windows using expressions and lines and **pointwrangles** see also Building Overview
sample side windows Building - side window (on depth) example - using expressions and lines - two solutions (in H13)
sample side door Building - side door using lines (in H18) Click here for more on the point wrangle version
sample door (based on copynum) or a fancier one using callbacks
DoorPlacementWithCallback.zip
- scatter node can be very useful for layout. Particularly when combined with the paint node (see above under paint) [scatter node has changed in H14 ... or the nearest neighbor information to control clumping/intersections (see scatterSolution.hipnc under instancing examples).] You can also scatter in a volume (using isooffset with scatter or pointsfromvolume)
- scatter (new in H15 behavior and ocean) - NewScatterAndOceanH15.hipnc uses attribute interpolate node to ensure points follow surface
- sample side justify sideJustify.hiplc
timeshift
-
stairs
- transformation order matters (and remember to model at the origin, not off in space). See transformOrderMatters.hipnc.
transform teapots (order matters) TeapotTransforms.hipnc (H18.5)
- trim versus cookie. Nurbs are your friend. Here is an example file using project, trim, bridge and skin. A simple example is given as well as one I made for a student to show the differences between cookies and trim. (Cookies are fine but can sometimes create poor topology.) Here is a simple example of using trim trimCurves.hipnc and a bit more complex one trimmedNurbVersusCookie.hipnc (as pictured)
- visualize an attribute see here
and here
- wire example using a lattice node (thanks to Nate and Zak) and my version springTest.hipnc using a wiredeform node