Updated on March 26 2017
Files created by Deborah R. Fowler unless
otherwise noted. Sections
below relate to:
- modeling/procedural modeling/procedural animation
- complex scenes/layout
- lighting and rendering
***New student/alumni contributions at the bottom of the page
***New modeling guidelines (see below)
Current odd behavior: Making your window a floating pane on the dual monitors can sometimes cause difficulties, ie. error of copying nodes, or network nodes forcing you to enter them in the scene view - simply close the floating pane and try it in the regular network view.
Click here for interface tips.
Click here for command line tips. Learn how to do command line rendering - follow the link for rendering and caching command line
Click here for hscript common symbols. (also useful * is wild card and ^ is not, so * ^P in an attribute delete node would delete all but P)
Related to modeling/procedural modeling/procedural animation: (See also general modeling guidelines for Houdini)
TIPS: MODEL AT THE ORIGIN, there is no delete history, transformation order matters, where you put your node in the network matters.
- add node can be used for many purposes - see "following" example addPoint.hipnc (building a better roof example using the add node is explained on the Math For VSFX page under Similar Triangles)
- add node for
deleting all but points deletingPointsFromTraceH15.hipnc
- 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 - like the above example using the bounding box function, the add node can also give you access to information you may need - see example under add node. Also curveMovementExample.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. Refer
- bbox function - like the point function, the bounding box function can give you access to information you may need - see example bboxExample15.hipnc.
- callback scripts - here is a 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 - callbackscriptsAdditional.hipnc
(also included: how to make a parameter disappear based on
- CHOPS hints. The limit node can come in handy (thank Ian), however there usually is a mathematical way to achieve the same purpose (both are included in a file called chopsSinFun.hipnc - 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 (chopsGeoFun.hipnc). (Thanks to Stu for this tip). Here is a simple wing animation using chops compared with expressions simpleWingsExpChops.hipnc
- chramp function. Here is an example of using the chramp function. See chrampQuestion.hipnc
- color node can also be used for similar control to the chramp example above (see colorNodeAndAttribCreate.hipnc)
- [Tips for] Complex Scenes (Includes brief Render Description).
- copy node - simple examples simpleCopyExamples.hipnc (even cooler - see instancing).
- copy increase/decrease - copyIncreaseDecrease15.hipnc
- creep sop - creepSopExample.hipnc (hint - inside this file is a link to a forum post where they create a chain).
- delete attributes or attribute rename, see deleteAttributes.hipnc
- delete or blast -
you can delete or blast including the second input for a
bounding geometry object, deleteOrBlast.hipnc
- 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". See understandingEdgeCusp.hipnc or straight from sidefx documentation stairsFromSidefxDocumentation.hipnc
- font node - should you ever need to randomize alphabetical characters here are some expressions you may fine useful. Refer to alphaFont.hipnc
- fuse node can be very useful to get rid of duplicate points. Refer to example file fuseNode.hipnc.
- Hscript including
multi-line, comments and the for loop in a parameter
expression - see snowmanOrShrinkingTower.hipnc.
There is a very useful forum post here
as well. Extended to a modular version - see shrinkingTowerModularly.hipnc
- Hscript - coolBlueBoxExercise.hipnc - introducing some example using C++ like hscript as well as introducing pointWrangle (lecture example)
- Hscript versus python
- object merge is very useful to have tidy networks and reference geometry without bringing all the nodes into the current container. Refer to objectmergeExample.hipnc
- Orient objects or profiles to a curve?
- Polyframe is your friend. See polyframeAndCurveOrient.hipnc
- Also orienting along a circle. See orientToCircle.hipnc
- H13 file - this works too - center of each face. See tubeWindowCopy.hipnc
- you can also use the sweep
- paint node can be used for layout - it is a very powerful technique, especially when combined with the scatter node. See controlLayoutByAttributePaint.hipnc.
- point function is an extremely useful function that you should be aware of to get even more information. See usingPointFunction.hipnc
- polyspline lavender.hipnc
- post placement - related to Building - simple examples of placing posts on a platform both from an edge or from the center - postPlace.hipnc
- python versus hscript
expressions - comparePythonExpressions15.5.565.hipnc
- sample windows - related to
Building - windows using expressions and lines - sampleWindows.hipnc
- sample side windows - related to Building - side window (on depth) example - using expressions and lines - two solutions (in H13) - sampleDepthWindows.hipnc
- sample door (based on copynum) DoorPlacement.hipnc or a fancier one above (see callback 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
- texture override - a
file containing simple textures to show how to vary textures
either in an instance node, or geo using copy stamping.
[Be aware in H14 that the expression editor may create a channel key frame if you use the larger window interface and hit apply - if this happens copy and paste expression into a new node. This is specific to H14 and will not occur in H13 or in H188.8.131.52.]
- transformation order matters (and remember to model at the origin, not off in space). See transformOrderMatters.hipnc.
- 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
- wire example using a lattice node (thanks to Nate and Zak) and my version springTest.hipnc using a wiredeform node
Related to complex scenes/layout:
TIP: in dynamics scale matters.
- Alembic files
- Flips and openVDB for
collision geometry objects (also works for RBD)
- for flip caching tips see Particle and Procedural effects page under Fluids - liquid
- Instancing NOTE: Packed
Primitives/Alembics are the preferred workflow from H13 up
however instances are still very useful (for example light
instances, as well as to help understand the concept of point
instancing which is not package specific - packed primitives
on the other hand are unique to houdini)
- Instancing light tip for
rendering - use active
radius to reduce render time
- Miscellaneous fun
- Floating lanterns in the sky? particlesFloatingLanternsH13.hipnc
- Floating lanterns in the water? lanternsWithRippleMoreComplexH13.hipnc with an example ripple sop and also the ripplesolver. (ocean may be a better choice - see below)
- Floating lanterns on the new ocean in 12.5 and up? lanternsFloatingTipH13.hipnc with the ocean and orienting the objects to the waves if desired (note that the rendering is not set up in this sample file - take a look at the shelf tool for reference)
- Floating lanterns on the ocean in 15 (scatter node has changed, need node interpolate position to keep points stable) NewScatterAndOceanH15.hipnc See documentation at http://www.sidefx.com/docs/houdini15.0/nodes/sop/scatter
- Packed primitives
- under the Rendering/Render tab parameter called Declare Materials can be used if your materials disappear
- Particles - Tips on rendering particles that look like water - Available but under construction!
- Rendering particles as points: refer to renderAsPoints.hipnc.
- Particles - grabbing information out of a particle node - attribute create example.
- see instancing examples for particles used for layout
- example comparing old pop networks (< 13) and new Particle Dynamics (>= 13) and using the pop wrangle node in wranglePop.hipnc example (vex otl here)
- pop curve pc follow (also see below in Student Examples)
- instanceLightsOnParticles.hipnc - example created for H15 - remember to look at the other instance examples above, this example uses the pop curve follow as above to create points, instanced lights are added with active radius/attenuation ramp and the instance object taken out of the shadow mask. The shadow color is set to red, teapots glow yellow and light is magenta so that each contribution is visible.
- particles and RBD collisions - required if you want bounce behavior see popInsideRBDStaticH15.hipnc
- RBD fun
- basic rbd on a table - exampleDops.hipnc
- objects on a plate - jellyPile.hipnc
- (for advanced users see also jellyPilecolored.hipnc and jellyPileMultiple.hipnc for adding color to DOP object or multiple types. Also if you want specific colors use groups - sample jellyPileColoredGroups.hipnc.)
- new jelly bean using
packed RBD point object jellyPileColoredGroups15.5.565Packed.hipnc
- If you are using H13 the
new packed "RBD point object" the above example with
dopobjectid checkbox is not needed (and won't work). Here's
a sample file with the new packed object to get variation of
- filling a pill bottle with pills - example file rbdFillPillBottle.hipnc
as show in class, pop collisions leave
velocity unchanged after collision, dops set it to zero - take
advantage of the pop and point wrangle nodes. Note: If instead we had an RBD collision in
addition to the ground plane, you may have to change the
comparison from hitnum to stopped as hitnum goes back to zero
in this case (see ParticleDynamicsRBDCollisionStaticOrNotH13.hipnc.
- Reminder: when experimenting with
simulations to REDUCE TO A SIMPLE CASE, TEST, BUILD FROM
THERE. Simple case files are faster to test - and view
the details view.
- Vex/Vops and a little python
- Vex/Vops -
- bind node has replaced attribute in vops in versions 14 and up
- currently in H15 pragma range does not update gui - work around is to rename, apply accept, edit and rename back
- In Monty, you might need
to add the following to your .bashrc to view code properly
- VOPS - customizing a simple shader.
Related to lighting and rendering:
TIP: PBR PBR PBR!
TIP: if you are rendering water, metal, anything reflective - make sure you have something to reflect - the env light is a very handy method of adding an environment (trouble shooting tip - black parts of water, dull looking metal)
TIP: DATA TREE*** new in H13 - now you can easily select the lights and objects in a light-linker type format even when using instance lights - it's in the data tree under light bank viewer (sample file here)
TIP: Every object container has masks for refractions/reflections etc. which can come in handy
TIP: When using packed primitives, you may need to use the option in the mantra node to one of the save materials options located under the Rendering/Render tab parameter called Declare Materials
- Ambient Occlusion (There are other methods - please ask). Note there is an example on the documentation for the mantra node - simply use an env light with ambient occlusion option.
- Fog http://forums.odforce.net/topic/10791-how-to-make-fog-effect/
also see example below
- GodRaysZZH13.hipnc is
an example file updated for H13 (original file from Zach Zhao
- Houdini User's Group talks). This example uses the atmosphere
node with the litfog shader (note that diffuse is set
to 0 and that fog is expensive to render generally speaking).
There is also an excellent example in the documentation for
the atmosphere node.
- Linear Workflow - as of H13 - linear settings are now default
- Motion Vectors - there is an example file in the documentation (search mantra node) when running Houdini that shows you how to generate a motion vector layer for using in compositing. (For motion blur in the render, it's easy, just check the box allow motion blur in the mantra node). To add motion_vector as an extra image plane you must modify the shader on your object to include this information using the vop node getblurP and turn off Allow Image Motion Blur (see documentation example for details)
- Rendering using Takes.
- Reflections - how to blur
- Renderman in Houdini, this is a work in progress, but if you are interested in using Renderman with Houdini this is a quick guide.
- Shadow color has been
added to lights as of H12.5 and higher.
- Rotating a Camera using a null node: If you need to rotate your camera, wire it to a null node and rotate the null node instead. Refer to nullForCameraRotate.hip
- Textures on Polygon Boxes or Grids: check out the LRS folder in the dropbox, but for quick reference see gridImage.hipnc for a brief introduction to simple uv-ing. (You will need Mandril.rat or some other file). You can also use groups, for example usingGroupForCubeFaces.hipnc. Grouping is an extremely versatile method.
- *******Tip: Use a single
material node with multiple groups.
- UVing SideFX tutorial found here. There is also a step by step tutorial in the dropbox labeled LSRTutorial.
- pop curve path
follow the easy way with point cloud velocity transfer -
thank you Ali Rizvi April 15 2016 Appendum - PopCurvePCFollow.hipnc
- I have added an additional file with source geometry and
sticky notes April 16 2016
- slow motion techniques by James Charles March 4 2014
- velocity from curve tool by Nate Usiak 2013
- Wetmap otl available on orbolt and description by Tyler Britton here for his project. March 14 2014
- Sub Frame Velocities: Tip for fast
moving flip collision object - James Charles (intern at SideFX
Toronto) August 2014 - explanation
- Packed Primitive Workflow by James Charles
August 2014 explanation
and example files (download