Houdini Foundations 19-5-01
Houdini Foundations 19-5-01
ROBERT MAGEE
HOUDINI FOUNDATIONS
Special thanks to Kim Davidson, Richard Hamel, Chris Hebert, Cristin Barghiel
and everyone at SideFX who brings Houdini to life.
ISBN: 978-1-7753338-2-1
© SideFX Software
© 2022 | All rights reserved. SideFX, Houdini, Houdini Engine and the Houdini logo are trademarks of SideFX Software Inc. registered in the USA
and other countries. Autodesk, Maya and 3DS Max are registered trademarks or trademarks of Autodesk, Inc., in the USA and other countries.
Unreal Engine and its logo are Epic Games’ trademarks or registered trademarks in the US and elsewhere. Unity is a registered trademark of
Unity Technologies. Other product and company names mentioned may be trademarks
of their respective companies.
DISCLAIMER: Every reasonable effort has been made to obtain permissions for all articles and data used in this book, and to make it as
complete as possible. This book should be considered “as is” and neither SideFX, nor its employees, officers or directors shall be responsible
or incidental for consequential damages resulting from the use of this material or liable for technical or editorial omissions made herein.
CONTENTS:
5 | DESTRUCTION FX 107
1. Model the Bomb 108
2. Model the Fuse 110
3. Animate the Fuse 112
4. Create an Animated Camera 114
5. Create a Soot Trail 116
6. Create Particle Sparks 118
7. Blow up the Bomb 120
8. Create the PyroFX Explosion 122
9. Export the Geometry to USD 124
10. Set up Shot in Solaris 127
11. Render the PyroFX 130
OVERVIEW
To create 3D animation and VFX for Film, TV, Video Games and VR, you need
a combination of technical and creative skills. Houdini is the perfect tool for
bringing these worlds together as you explore, create and refine your projects
from concept to final sign off.
While Houdini has a wide variety of tools designed for generating CG content,
its node-based procedural workflow is what sets it apart. This approach makes
it easier for you to create directable shots, explore multiple iterations and hit
deadlines. As you learn Houdini, understanding how to work with these nodes
and networks will be important to your success.
If you are new to 3D and Computer Graphics then Houdini is a great package to start with. The
Foundations material assumes some general knowledge, therefore you may want to read up on CG
concepts that you are unfamiliar with. In the end, Houdini will help you achieve a deeper understanding
of what goes on under the hood of not only Houdini but other 3D apps as well.
Once you have finished the foundation lessons, visit SideFX.com for more tutorials. From the main menu,
go to Learn > Learning Paths for a comprehensive list of lessons created by SideFX and members of the
Houdini community. There are lots of lessons for you to explore as you build up your Houdini skillset.
DOWNLOAD INDIE
HOUDINI FOR FREE ANIMATORS AND GAMERS
SideFX has a free learning edition for you to use If you want to go beyond the free learning edi-
as you work through the lessons. The Houdini tion, Houdini Indie removes the watermarks
Apprentice edition gives you FREE access to found in Apprentice and offers higher render
all of Houdini’s features with a few restrictions resolutions up to 4K x 4K and limited commer-
such as limited render size and user interface cial use [less than $100K USD] of Houdini.
and render watermarks. The Indie program makes Houdini a great tool
You can download Houdini Apprentice from for developing personal projects and indie
the SideFX website where you can also get the games. To learn more you can go to:
latest versions which are updated regularly: SideFX.com/indie
SideFX.com/download
GOING PROCEDURAL
In Houdini, every action you take is stored as a node. These
nodes are then “wired” into networks which define a “recipe”
that can be tweaked to define a repeatable outcome where
each iteration can generate unique results. The ability for nodes
to pass important information down the chain, in the form of
attributes, helps give Houdini its procedural nature.
mnfst.studio
While the nodes are what makes Houdini unique and give it its
power, there are lots of viewport and shelf tools that are used
HOUDINI FOUNDATIONS
Igor Zanic
2
DIRECTABLE RESULTS FULL ACCESS TO ALL YOUR DATA
The reason you are able to make edits deep into production is As objects move through a typical animation or visual effects
because changes made to parameters on Houdini nodes will pipeline, they accumulate information which is often stored as
cascade right through the network to update the results. This point or primitive attributes such as velocity, capture weights
directability is retained throughout the creative process and or UV texture coordinates. While other 3D applications hide
can be used to make last minute decisions that would be too this information and attempt to control it for you behind the
costly in a traditional CG pipeline. scenes, Houdini gives you tools for working with and managing
this data. This results in a much more powerful and flexible
approach that makes a huge difference down in production.
TOOL BUILDING
Another benefit of the node-based approach is that it is easy
to encapsulate node networks to create custom nodes that
are shared with colleagues without writing any code. Houdini’s
A NEW WAY OF THINKING
re-usable networks can be wrapped up quickly and easily into
special nodes called Houdini Digital Assets. As you become more proficient with Houdini, you will find
new ways to approach a shot or a game level that will make
you and your team more productive. Houdini gives you the
flexibility to build tools that will support you throughout a
project’s life cycle and instead of simply reacting to issues and
problems, you will be able to anticipate the pain points and use
a procedural solution to work much more efficiently.
Andriy Bilichenko
Now that you have chosen to learn Houdini, you will find
yourself exploring a versatile application that will redefine how
you approach future projects. The key is to embrace this new
way of working and be ready to explore CG at a level deeper
Marina Bade than you ever imagined.
interactively that would require writing code in other 3D applications. Houdini is very much an artist’s tool and while
it has a technical side that uses scripts and expressions, the out-of-box tools will let you accomplish amazing things.
And the nodes let you easily go back and make changes which mimics how the creative process works.
If you do want to work with code then Houdini supports a number of languages inside the Houdini interface. There
are Wrangle nodes for working with VEX and Python and PyQT is supported as well. You can also use Houdini’s
expression language hscript or you can mix all of them together to meet your specific needs.
3
The Houdini Workspace
Houdini offers a user interface experience that will be familiar for artists coming from other
CG applications with the biggest difference being the panes used to manage nodes and networks.
The workspace is highly configurable and can be set up to support different ways of working.
Houdini gives artists many different ways to view the bits and SHELF TOOLS
pieces that make up a 3D scene. From the Scene View where
At the top of the workspace, you will find multiple shelves
you look through a camera at your geometry to the Network
filled with tools for creating and manipulating objects,
view where you manage the procedural nodes and networks,
geometry, cameras, lights and effects.
you will find many different ways to make creative decisions
while making sure each shot works at a technical level.
RADIAL MENUS
One way to access tools in the Scene View is the radial menus
which you can access using the X, C and V hotkeys. Each of
These tools work in the scene view and often involve some
these brings up a radial menu with lots of options for you to
sort of scene view interaction. Once you have used one of
choose from. The main focus of each menu is as follows:
these tools, one or more nodes will be created which you can
Snapping X then refine in the Parameter and Network panes.
Main C The shelves provide a very important resource to new Houdini
Views V artists because the shelves reduce clicks and often put down
Once you learn how a radial menu works, you can access the networks of nodes that you can learn from.
tool with a quick sweep gesture without dwelling on the widget.
TAB MENU
Another way to access tools in either the Scene view or the
Network view is to press the tab key. This brings up a menu of
available tools and nodes you can use in your work.
You can change the custom menu at the top of the menu bar
which says Main by default. On OS X this is the Radial menu.
4
3D VIEW TOOLS FIRST PERSON CAMERA
Here are some of the hotkey combinations available while While in the View tool, you can turn on a first person fly
viewing. You can skip spacebar/alt if you are actually in the through mode similar to those used in videos games.
View tool:
Toggle First person On/Off M
Tumble Spacebar or Alt[Opt] - Left Mouse Button [LMB] Dolly In/Out W/S
Pan Spacebar or Alt[Opt] - Middle Mouse Button [MMB] Pan Right/Left A/D
Dolly Spacebar or Alt[Opt] - Right Mouse Button [RMB] Look Around LMB
You can find the View tool in the toolbar. When you use the
spacebar or alt keys, you temporarily evoke the view tool. This VIEWPORT DISPLAY MENUS
can be quite useful when you are selecting or manipulating in a Change how objects appear and views are organized using the
view and need to quickly change your point of view. menus in the top right of the Scene view or the V radial menu.
If you want to focus on viewing then you can press Escape to
go to the View tool. Here are some other hotkeys, you can use
to get your bearings:
Shading Menu
Home Construction Plane Spacebar + H Object Display Menu
Frame All Spacebar + A Views Menu
Home Selected Spacebar + G Shading Menu - Choose from options such as wireframe, flat
shaded, smooth shaded or smooth wire shaded.
2D PAN AND ZOOM
Object Display Menu - As you dive into networks, this menu
You can click on the 2D Pan and Zoom tool in the Operation sets whether you hide, view or see geometry ghosted.
Control bar to change your view in 2D without altering your 3D
Views Menu - This menu lets you split your scene view into
camera position. The widget at the top left lets you click to pan
various views such as perspective or orthographic views.
and zoom or to reset the view with Ctrl - LMB click. This is a
great tool for working with locked off cameras.
DISPLAY OPTIONS BAR
2D Pan and Zoom Widget 2D Pan and Zoom Button At the right side of the scene view, the display bar gives you
access to options for viewport display. Here are a few examples.
Reference Plane/Ortho Grid - Turn on and off a grid that
LMB-Drag to Pan can be used for reference and for grid snapping.
Ctrl-LMB to Reset
MMB-Scroll or Construction Plane - Turn on and off a construction plane
RMB-Drag to Zoom
which is used to define where you place objects or points.
Lock Camera- Lock the current camera to the view so that
view changes modify the camera transform values.
High Quality Lighting with Shadows- Set the best quality of
viewport rendering.
2D Pan and Zoom
Display Primitive Normals - Show the normals belonging to
all primitives in the scene to determine their direction.
Viewport Display Menus - These tabs let you create and
organize multiple panes at the same time. DISPLAY OPTIONS
Pane Tabs - These tabs let you create and organize multiple The Scene and Network views each have Display option panels
panes at the same time. that you can access by clicking on the icon at the bottom of the
Operation Controls - Use the Handle tool with this bar to
Display options bar or using the following hotkey:
access parameters from your selected node. Display Options D
THE HOUDINI wORkSPACE
Parameter Pane - This pane lets you set values, add expressions
and keyframe selected nodes.
Display Options Bar - These toggles let you control scene
display options such as normals, point numbers or lighting.
Scene View - Visualize your work and use handles to
manipulate objects interactively in your scene.
Network Pane - View and manage networks of nodes to work
with the underlying structure of your scene.
Playbar - Set the current time and edit keyframes on selected
nodes. You can also use the Playbar to copy and paste
keyframes.
5
Panes & Desktops
The Houdini workspace is broken up into Panes which offer unique ways of organizing your scene
data. You can work interactively in a 3D view or analyze attribute values in a spreadsheet. It is
important to learn how these different UI elements can be used to get your work done.
Solaris > Scene Graph- This pane shows you the USD scene graph when
working with Solaris [LOP] nodes.
Solaris > Render Gallery - This pane lets you save test renders then
revert back to the settings of each image after reviewing them all.
Solaris > Light Linker - Connect lights and objects.
PANE TYPES
RMB-click on the pane tab to change its type. There are many Render Scheduler - This panel shows you Renderings that are
pane types to choose from. Here are some of them which have completed and in progress. You can pause and kill renderings here.
hotkeys. Some of the other ones are listed here. Refer to the Material Palette [Alt-7] - This palette lets you see all the materials in
documentation to find learn more about all of the others. your scene and select and assign them to objects and geometry.
Network View [Alt-2] - This view lets you see the nodes and networks
and connect, rewire, and reorganize them to suit your needs.
Parameters [Alt-3] - Set values on parameters, add expressions and
control the properties of your nodes.
Tree View [Alt-4] - This is a hierarchical view of the nodes. This can be
a great way to understand how scene hierarchies work.
HOUDINI FOUNDATIONS
Animation > Channel List - Create channel groups and manage the
scoped channels as you animate in Houdini.
Animation > Autorigs- This pane gives you access to tools for building
your own rig out of modules for biped, quadruped and facial rigs.
Animation > Character Picker - You can use this pane to make it easier
to select parts of a character rig.
6
DESKTOPS
Inspectors > Geometry Spreadsheet [Alt-8]- A view of the attribute As you open up tabs, add dividers and organize your pane tabs,
values you have on your geometry. This could include UVs, normals, or
you start to set up your own workspace. To save any layout, go
custom values you have set yourself.
to the Desktop menu (Windows > Desktop on OSX) where you
Inspectors > Data Tree- This view gives you access to a light bank,
can access saved desktops, save your own and manage them
Material Stylesheet and Object appearance list.
as you work. When you save a desktop, it will save the Pane
layout, Radial menus and visible Shelf sets.
Mantra Rendering > Render View [Alt-9] - Start interactive Mantra
renderings, that will update when you change something in your
scene.
Mantra Rendering > Take List- This list lets you explore different
“takes” by making changes to specific parameters. You can then
manage the takes to focus on your preferred creative choices.
TOPS > Task Graph Table - The Task Graph Table shows the metadata of
all work items in the graph, or all work items in a particular node.
Misc > Orbolt Asset Browser - This browser lets you access assets
from Orbolt.com. To use this pane you need to log in with an orbolt.com
account.
Misc > Textport - You can use this pane to type commands.
Misc > Python Shell -You can type Python commands using this pane.
PANE MENU
At the top left of each pane is a button for maximizing and
minimizing the pane and an arrow which gives you access to
COLOR SETTINGS
the Pane menu. This menu lets you tear off the pane or a copy
of the pane, close, or split your pane. You also have options for You can customize the look of the Houdini UI by choosing a color
determining the UI of each pane. scheme for your workspace. Select Edit > Color Settings to bring up
the option window then you can choose from the default Houdini
Dark or Houdini Light. Click on the Download button to choose
from a list of color schemes created by the Houdini community.
PANES & DESkTOPS
7
Nodes & Networks
With Houdini’s node-based workflow at the heart of its procedural architecture, the ability to work
directly with these nodes and networks becomes very important to using it effectively. While the
idea of nodes might sound technical, they are actually quite artist friendly and easy to work with.
As you use tools in Houdini, nodes are created and wired with CONNECTING AND DISCONNECTING NODES
other nodes. The resulting networks offer a history of your
When you work in the Viewport, nodes are often placed and
actions while providing a simple way to make changes and
wired together automatically. When you want to reconfigure
refine your work. Learning how to work effectively with the
how a network is set up, you will need to connect and
node networks is an important part of working with Houdini.
disconnect nodes by hand.
NODE FLAGS Here are some ways to interact with nodes and connections in
Each of the nodes have various flags which determine if it is the Network pane:
displayed, locked or bypassed. You can evoke these by either Connect Node LMB-drag from output to input
clicking on the flag itself or using the radial node menu. Connect Nodes J drag across the nodes
Insert New Node RMB on an output or connector
Toggle Bypass Toggle Display
Insert Node LMB drag and drop onto connector wire
Disconnect from Wires LMB select then Jiggle node(s)
Cut Wire Y drag across connector wire
Info Box Move node LMB-drag
Copy selected nodes Alt + LMB-drag
Reference Copy Alt + Shift + Ctrl + LMB-drag
NETWORK VIEW
Network Path - The path leading to the
current network level. You can also use
this bar to navigate to other networks.
Pane menu - These menus and icons
are for organizing your network.
Network Background - Use the Pane
HOUDINI FOUNDATIONS
8
NETWORK TYPES NAVIGATING NETWORKS
Houdini includes different kinds of nodes which each work To jump between network types there are a number of
in their own context. The network type is labelled in the top different approaches you can take. Some of these happen
right corner of the network view. Nodes from each type can naturally as you work with objects in the scene view and
connect to other networks. While the different types of nodes others offer shortcuts which allow you to work more quickly.
are similar in how they are wired together, they each have
unique capabilities: Selection Modes - As you select in the scene view, the
network editor jumps to the location of the selection.
Scene Objects OBJ Different selection modes will in turn take you to different
Geometry Surface Operators SOP network types as you make a selection.
Solaris Lighting/Layout Operators LOP
Materials VEX Builder MAT Network path - You can LMB-click on a parent node to
Motion FX Channel Operators CHOP navigate back up the path or LMB-click on the container node
VEX VEX Builder VOP to access parallel nodes or dive into the contents of other
Outputs Render Operators ROP container nodes.
Tasks Task Operators TOP
Radial menu - Press n to get a radial menu that lets you
Dynamics Dynamic Operators DOP
navigate up, down and to different network types.
Compositing Compositing Operators COP/IMG
Hotkeys - These help you navigate up and down as you work
As you work with Houdini, you will begin to learn how to use
with a selected object.
this “secret” language to talk about the node types and how
Dive in I
they apply to working procedurally.
Jump up U
Toggle Objects/Geometry F8
NETWORK PATHS
Previous or Next Network Alt + f or Alt +
Nodes are organized hierarchically with some nodes nested
in other nodes known as network managers or subnetworks. Quick Marks- These let you quickly set and return to network
To help you manage these hierarchies, a browser-like path is locations. You can use them as-needed and then override them
available at the top of most panes. or forget about them. They are not saved with the scene file.
Set a Quickmark Ctrl + 1, 2, 3, 4 or 5
Back/Forward Button Return to a Quickmark 1, 2, 3, 4 or 5
Path Hierarchy Go Back to Previous View `
workflow.
Display Ring - This small circle shows which node
is displayed in the Scene view. This panel will close automatically but
Render Ring - This large circle indicates a render you can click on the Pin icon to keep
node even if another node is displayed. it visible as you work. You can add
Comments - Node comments can be displayed comments and display them in the
to help other artists understand your thinking. Network view using this panel.
Palettes - Buttons on the menu display Palettes
that let you set the color and shape of nodes.
9
Parameters, Channels & Attributes
All of the nodes in Houdini are driven by parameters, channels and attributes to help you achieve
the results that you want. The terminology used in Houdini may differ from other 3D applications
therefore it is a good idea to take a moment to understand them in a Houdini context.
SEARCHING PARAMETERS
A node might have a large number of parameters and sorting
through them all can take time. If you click on the magnifying
REFERENCE SCENE DATA
glass in the top right, you get a search bar that lets you filter You can also RMB-click on a parameter and choose Reference
the parameters based on name and content. You can find > Scene Data to bring up a window for choosing specifically
parameters using expressions, overrides and even a raw value. what you want to link to. Once you have made a choice from
any node in your scene, to create a channel reference. This
method lets you create references without worrying about the
exact syntax needed to write the proper expression.
PARAMETER PANE
Navigation Bar- This bar lets you see where the
node is located in the scene hierarchy.
Node Type and Name - Here you can see the
node type and set its name. Clicking on the icon
gives you a menu for working with the node.
Search Bar - Click on the magnifying glass icon to
search parameters by name or by content.
HOUDINI FOUNDATIONS
10
CUSTOM PARAMETERS ATTRIBUTE TRANSFER
If you click on the Gear icon in the top right of the Parameter Within a node chain, attributes are attached to geometry then
pane, you can choose Edit Parameter Interface. Here you can used by other nodes. You can also pass attributes to other
add custom parameters which can then be linked to other pieces of geometry using Attribute transfer. Here the sphere
parts of your node network. is passing color attributes to the boxes based on a defined
threshold value.
ATTRIBUTES
Attributes let you attach data to your geometry that can be
used by nodes down the chain to complete an operation. A
fuel attribute can drive a Pyro FX simulation or a UV attribute
sets up texturing. Some attributes are created by Houdini
nodes or you can create custom attributes.
ATTRIBUTE WRANGLE
Houdini has a wide variety of nodes that let you create and work
with attributes. You can also use the Attribute Wrangle node to
Class - Attributes can belong to Points, Primitives, Details and use a script-based approach to this work. For a lot of Technical
Vertices. This will affect how they get used down the chain. Directors this may be the most comfortable way to work.
Type - You can set up float, integer or string attribute types
amongst others.
ATTRIBUTE RANDOMIZE
Attribute Randomize lets you create an attribute and immediately
randomize its values. For instance here you can see the Color,
rotation and Scale of these boxes being randomized.
For artists, working with nodes will make it easier to deal with
this kind of information. A lot of Houdini’s power is found in the
proper use of Attributes and you will eventually need to learn
about them.
GEOMETRY SPREADSHEET
11
Selecting Geometry
Working in Houdini involves the selection and manipulation of many different elements. There are
a number of tools and options available to help you work efficiently with objects and geometry
components such as points, edges and primitives.
SELECT TOOL There are also some selection filters that let you focus on
visible geometry or select groups. You have a wide range of
The Select tool lets you focus on making selections therefore
selection options to help make this easier as you work.
it doesn’t have any manipulation handles.
Select Visible Geometry Only Shift + V
Select Tool Tap S
Select Fully Contained Geometry Only Shift + C
When working with tools such as Move or Rotate and Secure Select Groups or Connected Geometry 9
Selection is on, you need to invoke the Select tool to make a Select Whole Geometry Choose in Operation Control bar
selection. Toggle Secure Selection to Off to select freely. Select by Normals Choose in Operation Control bar
Evoke the Select tool while in other Tool Press and Hold S
Toggle Secure Selection ~ SELECTION MODES
Selection modes, give you access to objects and components.
SELECTION TYPES They also let you easily jump from object level to geometry
There are different shortkeys for adding, subtracting or level using a the buttons in the toolbar or the hotkey.
toggling your selection as well as for selecting all or none. Objects - The object network level is where you work with an
These techniques play an important part in this workflow. object’s transforms. In any tool other than the View tool, the
following hotkey will bring you back to the Object level:
Select LMB
Add to Selection Shift + LMB Objects 1
Remove from Selection Ctrl [Cmd] + LMB
Geometry - You can use any of the following hotkeys, when
Toggle Selection Ctrl [Cmd] + Shift + LMB
not in the View tool, to jump into the geometry level with the
Select All A [Object Level] / N [Geometry Level] chosen components available for selection.
Select None N [Object Level] / Shift + N [Geometry Level] Points 2
Edges 3
SELECTION TECHNIQUES Primitives [Faces] 4
In the viewport, you can choose from four different selection Vertices 5
types that offer different ways of accessing geometry.
Box Select F2 TWEAK MODE
Lasso Select F3 Only one geometry selection modes can be active at a time. If
Brush Select F4 you are working with an Edit node then Tweak Mode lets you
Laser Select F5 choose any combination of points, edges and primitives.
SELECTION OPTIONS
SELECT MODE MENUS Edit | Components You can choose which
Each of the selection modes comes with components you want to work with from this
options which let you alter how you collection of buttons. Here edge selection has
been chosen.
interact with your scene. You can access
these options by either LMB or RMB- Select Tool - The Select tool lets you make the
selection. To access it press the S hotkey.
clicking on each mode’s icon.
Secure Selection - This locks your selection
While working with components, this when using other tools. To invoke the Select
menu lets you choose to show Display or
HOUDINI FOUNDATIONS
12
HOW SELECTIONS ARE USED BY TOOLS SELECT ALL AND THE GROUP FIELD
When you make a selection in the viewport then use a tool, To select all of the primitives on incoming geometry, leave
a node is created and the selected points, primitives or edges the Group parameter blank. If the topology of the incoming
are listed in the node’s Group parameter. geometry changes, everything will be operated on by the node.
Using Select All [N] in the viewport will usually ensure that
this field remains blank when a tool is used. With some tools,
the Group field will show all the selected parts and you would
have to clear the field manually to make it blank.
For example here we see primitives 5, 6, 9 and 10 are being
used by a polyextrude node. You can see them listed in the
THE GROUP NODES
Group node and then used to extrude the faces. Group nodes let you refer to a defined selection of points,
vertices, polygons, or edges by name. You can define a
group interactively, by selecting components in the viewer,
or mathematically, using ranges or an expression. The group
name can then be assigned to the Group parameter instead of
using point or primitive numbers.
13
Transform & Edit
From basic transformation tools for objects, to the pose tool for animation rigs and the edit node for
reshaping geometry, there are a number of different tools that let you use interactive handles in the
viewport. In Houdini, these handles are tied closely to the node you are working with.
Camera Plane
[Three Axes] Motion Path
Handle
EDITING GEOMETRY
Edit | Components You can choose
the components you want to edit
using these buttons. The Points
option has been chosen here.
Move Tool - The Move tool lets
you translate the selection using
the Scene View handle.
Move Handle - This handle lets
HOUDINI FOUNDATIONS
14
EDIT NODE HANDLE TOOL
If you try to move geometry components then an Edit node After using a shelf tool, you often find yourself in the Handle
is placed down to accept your transformations. In addition tool. Or you can select a node in the network and press the
to transforming the geometry, you can slide on surface, work Enter key in the Scene view to go into the Handle tool. This
perpendicular to the normals or sculpt the surface. brings up a handle which focuses on the specific parameters
for the selected node such as the distance parameter on a
Edit T/R/E
polyextrude node.
Slide on Surface L
Peak H Show Current Operator - By default when you select a node
Sculpt B other than the display node, it becomes the current node and
you get a wireframe display of the geometry. You can then
SOFT FALLOFF use the handle to manipulate this intermediate node while
evaluating the results on the shaded surface.
When you are transforming points, you can use the Soft Edit
Radius to create a falloff. There is a visualizer that is evoked to
show you where the falloff is occurring on the surface.
Peak Handle
Soft Edit
Visualizer
EDIT OPTIONS
If you RMB-click while in the Edit node, you can access
options for transforming your selection. You can make a circle
or straighten the selection. These options work with points
and edges but not always with primitives.
Make Circle Shift-C
Evenly Space Selection Shift-E
You can change parameters in the parameter pane for the
Relax Selection Shift-R
current node but the handles will continue to work with the
Straighten Selection Shift-S
parameters on the display node.
Component Selection - You can also select the You can also keyframe param-
component type using this menu. This offers
eters on a handle and promote
you the same options you would find on the
main toolbar.
all parts of the handle to a Digital
Asset. By promoting the param-
Edit Options - You can use this menu to edit
eter the handle will be accessible
the components using operations such as Make
circles and Straighten the selection. at the asset level.
15
Modeling Tools
Houdini has a lot of tools for creating, shaping and deforming geometry to achieve a desired look.
Here are just a few of the many tools you will use on a regular basis when building models in the
geometry, or SOP, context of Houdini.
Rails - Copy one or more profile curves along two or more rail
curves, then Skin the results to get a surface.
16
BOOLEANS COPY TO POINTS + SCATTER & ALIGN
Subtract, Union or Intersect geometry using the Boolean tool. A typical Houdini workflow is to Scatter & Align points on a
This node can handle very complex topologies and can be surface then Copy to Points. Attributes for scaling and rotating the
used to break up a surface for destruction using rigid body objects can then be applied to create a more organic result. This is
dynamics. This often creates more realistic results compared to often used to create landscapes with trees and rocks.
the Voronoi-based Shatter node.
The Boolean tool can create output groups that you can use TOPOBUILD
to feed other nodes such as the Polybevel node. This way any Houdini has a Topobuild node that lets you draw polygons
updates you make to the boolean will update properly when it directly onto high-resolution geometry that you either scanned
feeds into the second node. or created in an application such as Pixologic’s Z-Brush. You
can create a cleaner topology for animation then bake the
DEFORM TOOLS details from the original model into a normal map.
While you can shape your geometry by editing points directly,
there are times that you need a more generalized approach.
The following nodes provide options for shaping your
geometry procedurally.
Bend - This node lets you set a capture range and direction then
bend, twist, taper and squish the encompassed geometry.
VOLUMES
Volumes allow you to store values for voxel, or three
dimensional pixels, in a space. These are often used to support
collisions when using dynamic tools or to create clouds. They
can also be used for modeling to combine multiple shapes into
a single volume which you then convert back to a surface.
Lattice - This builds a lattice around your geometry then lets you
edit points on the cage to reshape it. You can also use a custom cage.
Mountain - Apply a noise function to deform the surface to create
a random result. The points are actually being moved with this node.
Ripple - This node creates a ripple shape in your geometry.
Waves - This node adds noise functions to create a wave-like
pattern that animates over time. Perfect for creating realistic oceans.
GEOMETRY TYPES
MODELING TOOLS
17
UVs & Textures
To make 2D maps fit properly onto 3D objects, UV coordinates are needed to define a flattened
view of your geometry. When you first create geometry in Houdini it will not have any UVs. Even
primitive objects do not have any built-in UVs. This means that you will need to add them at the
geometry level using one or more SOP nodes.
UV PROJECT UV LAYOUT
This node let you assign UVs using one of several projection UV layout will let you create UV islands and pack them into
techniques. Once you choose your projection type you can UV space as efficiently as possible. This lets you maximize how
initialize the projection to match your object. This may invert much of a texture is being used on your geometry which is
the UVs and you will need to set a rotate x value of -90 instead important when optimizing for both rendering and gameplay.
of 90. Above you can see an Orthographic projection and
below you can see a Toroidal projection.
You can use the region handle to put a the UV layout into a
particular part of your UV space. Subsequent layouts can then
UV FLATTEN work around this layout using the Pack Islands in Cavities option.
UV Flatten unwraps your geometry based on predefined UDIMS
boundaries created using selected edges or edge groups. The
In addition to working with a Single UV tile, you can use
results can then be tweaked by pinning points in the UV view
UDIMs to spread your UVs over many tiles. This technique
and adjusting the islands to get the look you want.
lets you create more detailed texture maps because your UV
islands are not packed in too tight. Properly numbered texture
HOUDINI FOUNDATIONS
18
UV ATTRIBUTES UV VIEWPORT MENU
Earlier, you learned how attributes can be assigned to The UV viewport menu lets you display UVs based on the
geometry that carry important information down the line. UVs UV attribute. You can also use this menu to figure out the
are vertex attributes that let you wrap texture maps around background image which can either be the default UV grid or a
your model and are also carried down your network. texture map pulled from an assigned material.
These attributes are visualized in the UV viewport and
analyzed in the geometry spreadsheet. These attributes work
with various SOP nodes including the attribute wrangle node
which lets advanced TDs manage their UVs using scripting.
UV SETS
You can create more than one UV set on the same geometry.
When you use the UV nodes, you can set the UV attribute. By
default this is uv but you could create a uv2 to create a second
set. These different UV sets are used when you assign textures in This menu also has display options for displaying UV Overlap,
VOPs so that different texture maps use different UV attributes. UV Backfaces and UV Distortion. These can be helpful when
evaluating your UVs to decide if more tweaking is required.
ATTRIBUTE TRANSFER
One of the SOP nodes that can be used to manage attributes is
Attribute Transfer which lets you take the UV attributes from
one piece of geometry and transfer them based on proximity
to another.
This can be useful when the topology of a model has changed
but you want to preserve some of the work you did creating
UVs for the original model.
19
LookDev: Shaders & Materials
To render objects in your scene, you must assign materials, also known as shaders, to your geometry.
In Houdini, these materials and shaders are created in the mat/vex builder networks. The ability to
build up materials using nodes is a powerful tool when defining the look of a shot.
Houdini organizes different types of nodes into network types PRINCIPLED SHADER
and for materials you will use the /mat network type. This is
In the Material Palette, you will find the principled shader,
where you can set up VEX operators for Karma and Mantra
a material based on the Disney “principled” BRDF by Brent
or Material X for Karma. Material X is an open standard, that
Burley. This shader is “principled” rather than physical in order
originated at Lucasfilm,® which is used or the transfer of look-
to make it easier for artists to work with.
development content between applications and renderers.
The Principled Shader has been pre-built to include the ability
to assign textures directly to parameters such as base color,
bumps, normals, displacements and more. The texture maps
you assign will be displayed in the viewport and you can
achieve a wide variety of looks right out of the box.
You can extend this material by feeding it with other VOPs but
that isn’t necessary in all cases. Many of the materials found in
the gallery are variations on this shader.
20
LAYERING MATERIALS SHADER FX MENU
You can layer materials to create a unique look for your object. While working with material VOPs, you can add nodes in the
Using a Layer Mix node, you can combine two different Network view and wire them together or you can use the
materials into a single look. For instance, a shiny metal material Shader FX Menu by clicking on the icon at the far right of each
and a matte rust material can be layered using this technique. parameter. This menu lets you focus on the parameter that you
You can then texture an alpha channel and you can choose to want to work with and create the node in context.
mix the surface, the displacement or both.
MATERIAL BUILDER In the Parameter Pane, you can see what type of connection
If you want to turn your layered nodes into a new material each parameter has by looking at the icon on the far right:
then you can select them and choose Edit > Collapse Selected
No Connection
into Material. This puts the nodes inside a material builder
Parameter Node
where you can continue to tweak it. At this level, there are
Connected with other Nodes
output and collect nodes to make the network work efficiently.
Hidden Connection
VOP Nodes - In the material context, Layer Mix - The Layer output
you can start with material nodes on the materials can be fed
then wire in VOP nodes to customize into this mix node. You can
the texturing of the material. Once assign this to your geometry.
you are finished you can choose Material Flag- If you want
to collapse all of this back into a the layer mix to show up
material builder node. in the material palette then
Node Connectors - You can add check this flag.
nodes to this area using the Shader Alpha - Here the layer mix
FX menu which can be accessed by node’s alpha is being fed by
MMB-clicking on the dot. RMB- VOP nodes to create the
clicking on the dot gives you a full alpha mask for the two
node menu. layered materials.
21
Solaris: Layout
Solaris is the context in Houdini dedicated to Lookdev, Layout and Lighting that has USD at its core.
Objects and geometry brought into this context become USD and you can use specialized nodes for
positioning objects, instancing geometry and managing shot layout.
For some of the props, you will use variants to create differ-
ent variations that can be chosen during layout. There are LOP
nodes that let you set up this USD concept.
Once you have the props set up as USD, the files can then
be brought into a larger layout scene file using Sublayer or
LOP networks can then be rendered using either Karma or Reference LOPS then Edit LOPs can be used to position the
other Hydra-compatible renderers. Hydra is the technology props. If the assets are prepped properly then they will come in
that lets you render your USD to the viewport for interactive with geometry, materials and variants set up and ready.
exploration or to disk for final renderings.
SOLARIS DESKTOP
Stage Manager - This
Stage - The Stage view provides
node lets you load USD
a place for viewing your layout
files to be positioned on
and lighting and to interact with
the stage.
primitives, lights and cameras to
set them up properly. LOP Nodes - All your
actions in LOPS are
Viewport Render - On the stage,
HOUDINI FOUNDATIONS
accomplished using
you can render using Houdini GL
procedural nodes that
or Storm the USD GL solution.
make it easy to step
You can also render interactively
back and make changes.
to karma and Hydra compliant
3rd party renderers. Scene Graph Details -
As you select items in
Scene Graph - The USD
the Scene Graph you
structure offers a renderable
can check for details
scene graph that can be
that inform you of its
inspected using this panel.
status in the pipeline.
22
STAGE MANAGER INSTANCING
The Stage Manager is designed to be a one-stop node for There is an instancing solution in USD that can be utilized in LOPS.
referencing USD assets from disk, transforming them in 3d The Instance LOP lets you input one or more objects that will be
space, and adjusting your scene hierarchy. This does involve distributed to points set up inside the LOP. These points can be
a flattening of the inputting layers which will block up-stream created by importing geometry from your scene then scattering
changes from coming through. This lack of flexibility is points on surfaces extracted from the model.
balanced by the rapid setup possibilities of this node. Materials can be assigned to the instances using a variety of
methods including the Material Variation LOP which also offers
per-geometry render properties.
PHYSICALLY-BASED EDITS
Once you have all of the props loaded onto the Stage, you
can use the Edit LOP to begin moving them around. The edits You can also use the Layout Asset Browser and the Layout LOP to
become a separate non-destructive layer which keeps the use a brush workflow to place, edit and transform instance points
referenced assets intact in case you need to step back. that reference the assets you choose in the browser.
EXPORTING USD
At various points in your LOP graph, you can inspect the USD
code by RMB-clicking on the node and selecting LOP Actions
> Inspect Active Layer. You can also inspect the Flattened
Stage. When you export to USD, you can break out all the
layers or save it as a single flattened graph.
In the Edit LOP, there is a Use Physics option that lets you
leverage the rigid body capabilities of Houdini to detect
collisions and make it easier to position objects in a realistic
manner. This lets the artist achieve a natural organic look while
working interactively in the 3D view.
SCENE GRAPH
Stage - This is the top level Draw Mode - Here you
network context for creating can change the display
LOPS. You can also do all of this of any element in the path
work in LOP Networks. to either Full Geometry,
Scene Graph Path - These Bounding Box or Textured
represent the USD layers and Cards.
sublayers that define the look of Display Options- Here
the stage. These are most likely you can set the visibility
different USD files on disk being or activation of each layer.
Solaris: Layout
23
Solaris: Cameras and Lights
Before you render a shot, you need to look through a camera and light your scene. There are lights
and cameras in the Solaris/LOPS context which is especially designed for layout, lookdev, lighting and
rendering with Karma or at the object level for rendering with Mantra.
Sampling Tab
To adjust the camera, you can use the Camera handles either Shutter Open/Close - Determines how long the shutter is open
from another view or while looking through the camera. There which has an effect on motion blur.
is a lock camera to view button in the Display Options bar Focus Distance - Distance from the camera to the focal plane.
that lets you use the View tools to reposition the camera. Determines which objects are in focus when using Depth of Field.
F-Stop - Lens aperture. Default is 0, which turns off focusing.
Shift-click
on Surface
You can also use HoudiniGL but types and you can switch
this is not as effective as one of between them.
the main renderers. Light Parameters - There
Light Handles - You can step are a range of parameters
back and manipulate lights in for controlling light
the view in a similar manner to properties such as cone
cameras or you can use special angle and intensity.
controls to set lights right in the Light LOP Nodes - Every
camera view. light is added into the
network as a LOP node.
24
LIGHTS LIGHT LINKER
Lights can also be accessed from the shelf and have similar Linking lights to specific objects is a great way to control the
handles to help you position them. There are a number of lighting of the shot and this can be accomplished in Solaris
different light types in Houdini to choose from. using a Light Linker LOP. This node includes an interface for
Point Light - Emits light from a point in all directions and is similar making the object/light connections that you need.
to a light bulb.
Spot Light - Radiates a cone shaped beam of light from a point in a
certain direction.
Area Light- Automatically distributes a number of light sources over
a specified area. There are five area light shapes to choose from: Line,
Tube, Grid, Disk an Sphere.
Geometry Light- This object emits light into the scene using a
geometry object’s surface shader for the colors of the emitted light.
Distant Light- Emits parallel rays of light, which are similar to the
rays of the sun.
Environment Light- Casts light into the scene as if from a
surrounding hemisphere or sphere.
You can use collections of lights to apply the linking more
efficiently using rules that define the interactions between
LIGHTING WHILE IN THE CAMERA VIEW
primitives and lights.
When you have a Light or Light Mixer LOP selected and
displayed, you can set many of its properties while looking INSTANCING LIGHTS
through the camera. You can use the Specular [Shift-S],
Within the Solaris/LOP context, you can use Houdini’s
Diffuse [Shift-D] or Shadow [Shift-F] options that let you click
procedural geometry nodes to create points then Instance
on surfaces in the scene to set up the light.
Lights to those points. You can then add attributes to the
SHADOW MODE points to create effects such as a rotating intensity you might
[Shift- F] find in an old school marquee. This approach makes it easier
LMB-click to place Pivot to set up the lights and even easier to add effects and make
changes to meet the needs of the shot.
Shift -LMB-click
to place Target
You can then use Ctrl-drag to change the distance of the light
from your shot and Ctrl-Shift-drag to change the brightness.
Doing this in the viewport lets you stay focused on the shot
you are working on instead of pulling away to drag on handles.
LIGHT MIXER
Light List - This list shows all the
lights feeding into the mixer.
SOLARIS: CAMERAS AND LIGHTS
25
Rendering
When you render a shot, you are digitally photographing or filming your 3D objects using cameras
and lights to generate either an image or a sequence of images. Game artists may also use rendering
to render game cinematics or to bake textures from a high resolution to a low resolution object.
VIEWPORT | KARMA
Render Settings - To render to disk,
you can use the Karma LOP to define your
render settings. Here you can set a path
for rendering to disk, camera
settings and more.
HOUDINI FOUNDATIONS
26
RENDER SETTINGS OUTPUT NODES
When rendering the Stage, you use the viewport render To render out a shot, you will need to create a render output
settings. To create the final look of your rendering, the Karma node. You can do this by choosing Render > Create Render
LOP can be used to set a frame range, camera resolution, Node > Mantra - PBR.
denoiser and higher quality render settings.
You can also add a Karma ROP to the output network using
the tab key. This has a LOP network inside it that grabs all the
visible objects from the object level.
You can use ROP nodes to render to disk or to Mplay. These
nodes contain many of the parameters that you need to
RENDER GALLERY control the final image such as sampling, noise level and overall
render quality.
The Render Gallery lets you take Snapshots of your progress.
Each snapshot contains all the settings of the look and at It is possible to have a different ROP per object or group of
any time the scene can be reverted to match the snapshot. objects and you can use them to select Mattes and Phantom
Snapshots can then be labelled and filtered for easy access. objects. You can create ROP dependencies by wiring different
nodes together. If you press the render button on the last node
in the chain then all the other nodes will render first.
MANTRA
Mantra is the Houdini renderer developed before Solaris was The Background Plate LOP can be used to matte objects in
introduced. It is a physically-based rendering engine that is order to leave holes in the scene to make the background
deeply integrated with highly efficient rendering of geometry, visible. This geometry can take shadows and contribute to
instances and volumes but it does not work in Solaris/LOPS. reflections to create a more realistic fit for your objects.
MPLAY
Render Time - Since you are
MPlay lets you view images
sometimes rendering directly
rendered in Karma, Mantra or
to this view, render time info
other renderers.
will be displayed.
Main Menu - This menu lets
View Options - MMB-drag to
you load images or sequences
pan and RMB-drag to zoom in
of images to preview them.
and out of the image.
You can also save them out to
another format if needed. Channels - You can click on
these buttons to focus on red,
Render Layers - This menu lets
green, blue or alpha channels
you display different render
or to see them combined.
layers such as color, normal,
Rendering
27
Time & Motion
Animation involves changes happening over time. Whether it is an object’s position, shape or color,
once changes occur over time, you are animating. Houdini has a variety of tools for keyframe-based
workflows in addition to Motion FX & CHOPs for more advanced manipulation of time and motion.
SETTING KEYFRAMES The Playbar can also be used to edit keyframes. You can RMB-
click on the frame range in the Playbar to access options such
Keyframes let you set specific parameter values at a specific
as Cut, Copy and Paste of keys along with special pasting such
points in time. As these values change, the objects in your
as Replace, Cycle, Repeat and Stretch. All these options also
scene are animated. You can then use animation curves to
have their own hotkeys which you can find on the menu. You
determine the in-between quality of the motion. Here are a
can accomplish a lot working in the Playbar before moving to
few main hotkeys used to set keyframes on your objects while
the Animation Editor.
working in the scene view:
Set keyframe k CHANNELS
Toggle Autokey Alt + k When you set a keyframe or display animation curves in the
key Handle Ctrl + k Animation Editor, you are working with channels.
Key Translate Shift + T
If you select an object that has keyframed channels then they
Key Rotate Shift +R
become active and the keyframes are loaded into the Playbar
Key Scale Shift + E
or Animation Editor. If you deselect the object then the
You can also set keyframes in the parameter pane by channels will no longer be selected unless you pin them.
pressing the Alt key and clicking on either a parameter You can pin channels using the Channel List which is available
name or parameter field or by RMB-clicking on a parameter on the right side of the Playbar, the left side of the Animation
and selecting Keyframes > Set Keyframe. This lets you set Editor or in the Channel List pane. In this list, you can select
keyframes one parameter at a time one or more channels to refine which of them you are
keyframing and editing.
THE PLAYBAR
The Playbar is at the bottom of the main workspace and lets you CHANNEL LIST PANE
playback and scrub through your animations. Time is measured in The Channel List pane, lets you work with Channel Groups,
frames with a default rate of 24 frames per second. Animation Layers and Active Channels. You can use the list
At the left are the playback controls. Here are some hotkeys to create groups of channels so that they can be more easily
for quickly setting up playback and moving through time. accessed. You can also use the groups to pin channels so that
they are available even if you select different objects. This is a
Play Forward
useful pane if you are setting keyframes on characters.
Play Back
Next Frame FLIPBOOK
Previous Frame
As you animate your scene, you will want to preview the
First Frame Ctrl + results in motion. The Flipbook tool found on the toolbar on
Next keyframe Ctrl + the left side of the Scene view lets you capture frames from
Previous keyframe Ctrl + the viewport then playback the results as a movie in realtime.
PLAYBAR
The Playbar is where you scrub through time and create and edit keyframes. The Playbar can also be used to
make quick edits, while the Animation Editor is used for more comprehensive refinements.
HOUDINI FOUNDATIONS
Playback Controls Current Time Frame Range Edit Keys Set Key
These controls let you The current time is The overall range is defined As you set keys, they are The Set Key button will
quickly play, pause, and shown in the field and on by the Animation controls shown in the Playbar. Press set keyframes when you
move to next key. Below the black marker in the button at the far left. Then the shift key to select keys click here. Click on the
that are buttons for frame range. The marker the visible range can be with the LMB and then edit small arrow to bring up
Animation options and can be used to scrub reduced using the handles the keys by dragging with a menu of options such
Real Time playback. through the Playbar. at the bottom of the range. the MMB. as Auto key.
28
ONION SKINNING MOTION FX
Onion Skinning lets you display a ghosted version of your object While keyframes and animation curves are stored in the
on the frames before and after the current frame. Turn it on using parameters of your nodes, you can also use channel operators
the Misc tab on your object while the onion skinning options such (CHOPs) for a more procedural node-based approach to
as Frames Before, Frame After and Frame Increment can be found working with motion.
in the viewport’s Display panel [d] under the Scene tab. The easiest way to create a channel operator is to RMB-click
on a parameter and select from the Motion FX sub-menu. You
can also apply these effects to channel groups when working
in the Channel List.
ANIMATION EDITOR
Selected channels are loaded into the animation editor where
they are represented as keyframes and animation curves, or as
a spreadsheet or a dope sheet. The keyframes can be selected
and edited and the curves can be shaped using tangent handles.
The curves define the motion in-between the keyframes and
play a key role in defining the quality of the motion.
While working with channels, you can view the keyframes and
animation curves using these hotkeys:
View All/Home H
Pan MMB This non-linear approach to working with motion offers a
Zoom RMB unique way of working that can be very flexible.
29
Character Rigging & FX
Houdini includes a wide range of rigging tools for creating characters and creatures that can then be
wrapped into Houdini Digital Assets to be handed off to animators. Houdini also has Character FX
tools such as hair, fur, muscles, cloth and crowds to enhance the look of your characters.
CAPTURING GEOMETRY
The character’s geometry can then be captured to the bones
to create the deformations needed to convey realistic motion.
Changes made to any part of that character are saved into
Houdini bones include Capture Regions that you can set up
the asset and all shots will be updated. This creates a robust
to encompass your geometry while creating the right overlap
character pipeline that is easy to manage.
at the joints. This process results in weighted attributes being
assigned to the points that get fed into a Deform node that KINEFX
controls the geometry when the bones are moved and rotated.
KineFX is a character toolset designed to provide a procedural
foundation for retargeting, motion editing, and in future
releases, rigging and animation. Set in the geometry context,
these new workflows make rigging a fast, plug-and-play
experience with unlimited flexibility and caching capabilities.
Implemented in the geometry [SOP] context, KineFX treats
joints as regular point geometry with edge connections
defining the rig hierarchy. You can bring rigs in from the object
level of Houdini or import FBX characters.
At first, captured geometry might not get you exactly the look
HOUDINI FOUNDATIONS
you want, therefore you would use various tools to Edit and
Paint Capture Weights. This lets you smooth out the weighting
at the joints to create more realistic bending. You can also
smooth out the effect of point deformations using a Delta
Mush node that wires into the Deform node.
A new technique called Bone Capture Biharmonic allows you
to capture geometry without requiring extensive point weights
to get a desirable look at the joints. This method sets up
biharmonic functions on a tetrahedral mesh to create a much
more holistic solution.
30
CHANNEL GROUPS CHARACTER FX | MUSCLES & SKIN
When you animate in Houdini, channels that are scoped can Houdini lets you add muscles to an animated creature and
be keyframed and displayed in the Animation Editor. Generally then apply them as a skin deformer without requiring any
these channels are based on your current selection. You can simulation. Start by creating simple muscle forms using the
also put together Channel Groups that let you scope and pin Muscle nodes in the geometry context.
down channels to assist with keyframing. You then adjust the muscle’s shape and placement, attach it to
When you have a character set up as a Digital Asset, you can your character rig then enable automatic secondary animation
click on its icon at the top left of the parameter pane and or jiggle. Houdini’s muscle system has been designed to serve
choose Parameters and Channels > Create Nested Channel both FEM (dynamics simulations) and non-FEM (skin deformer)
Groups to create groups using the asset’s folder hierarchy as a workflows while using a unified set of Digital Assets.
guide. A well designed character asset makes this easy.
CROWD SIMULATIONS
CHARACTER FX | HAIR & FUR A crowd simulation begins with agents that are made up of a
Houdini has a hair and fur toolset that you can use to setup character skeleton, skin geometry, and animation clips. These
and groom your character starting with the Add Hair tool. are assigned to points, where simple rules can combine to
These tools also let you work with guide hairs and then create complex behaviors and the agents can interact with
animate them using wire sims to create added realism. other dynamic elements. For example, an agent might be
struck by a passing car and become a rag-doll or a crowd might
be triggered to react to an action on the field.
Andriy Bilichenko
31
Dynamic Simulations
Whether you are creating Bullet Rigid Body destruction, Pyro FX fire and smoke, Vellum
Soft Bodies or FLIP fluids, Houdini lets you work in an integrated dynamics environment.
Different solvers know how to talk to each other to allow for more directable results.
also be used for soft body and cloth-like simulations. Active dynamic objects are affected by forces and collisions
Wire Solver- You can use this solver for hair and fur or other wiry while Static objects are not. If you want to use animated or
objects such as the rigging of a ship or the branches of a tree. deforming geometry then you must define this on the dynamic
Finite Element Solver- Simulates the physics of continuous materials object using either the Initial Object Type menu or the Use
or solids as determined by tetrahedrons. This solver is used for muscles, Deforming Geometry checkbox.
soft body sims and destructions shots such as breaking wood.
Cloth Solver- Create cloth simulations that can collide with
deforming geometry such as a character.
SOP Solver- Use a SOP network to evolve an object’s shape over
time such as a wall being dented as it gets hit by objects.
32
COLLISIONS PLAYBAR FEEDBACK
Collision objects are also a big part of any simulation. You To start a simulation, you press Play in the Playbar. As the
can set up a Ground Plane to create a continuous surface for simulation progresses, the Playbar is highlighted to show how
collisions or use either static or deforming objects. much of the sim has been cached to memory. You can then
scrub through that area without re-simming.
On each Dynamic Object, there are also settings for displaying CACHING TO DISK
and optimizing the collision volume. While you often want Once you have completed a simulation, you can either lock
collisions to be as accurate as possible, you need to balance it down by saving out a sim file from within DOPs or more
that with the need for faster simulation times. commonly, write out the simulated geometry to a bgeo
sequence using the File Cache node. This will make it easier to
work with the results of a sim during the lighting and rendering
stages of production.
AUTODOPNETWORK
When you use a shelf tool to create
Dynamic Object - This node
a dynamic object, collision object
brings geometry into the
or force, the AutoDopNetwork is
DOPs environment and
created to combine all of the parts.
assigns basic properties.
Static Objects - These nodes set up
Rigid Body Solver - The solver
the properties of the ground plane
Dynamic Simulations
33
Cloud FX & Volumes
A big part of visual effects in Houdini is the use of volumetric data. In Houdini, volumes often
sit under the hood to help tools get the job done but it is a good idea to learn what they are
and, in time, learn how to work with them directly.
With volumes, you describe objects using voxels rather than The resulting network imports the cloud source then applies
points and polygons. A voxel is a 3D pixel, a cubic grid where these other nodes to create the cloud-like effect using Houdini
each voxel contains information that informs how the volume Volumes and VDBs. Houdini also comes with a Sky Rig tool
will be displayed which makes it ideal for wispy cloud-like that fills the sky with volumetric clouds.
shapes. The visual quality of a volume-based object is defined
by the resolution of that 3D grid. With more resolution,
the results are of a higher quality but performance may be
affected.
34
Terrain & Heightfields
Procedural terrain generation in Houdini is achieved using a collection of heightfield nodes that
let you layer shapes, add noise and run erosion simulations to define the look for your digital
landscapes. This a workflow that is similar to compositing, but you do all your work with 3D shapes.
MASKS
The heightfield tools also use a secondary type of 2D volume,
where each voxel contains a mask layer. Most terrain nodes
take a second input that can contain a mask layer to control
which parts of the terrain the node will modify.
You can use a variety of different methods to create masks and
then use them to assist you as you add detail and shape the
ARON KAMOLZ terrain. You can also draw or paint masks onto the heightfield.
PATTERNS
After laying down a Heightfield node to define your base
resolution, the Heightfield Pattern node gives you access to a
number of starter shapes. You can set up linear, concentric, or
radial ramps, linear steps, radially symmetrical shapes such as
stars and voronoi cells.
These shapes can then be blurred and distorted to get shapes
that you can use to begin your terrain. You can also combine
and layer elements to achieve even more sophisticated results.
EROSION
The Heightfield Erode node uses rainfall, the erodibility of the
soil, and entrainment rates as variables to simulate erosion and
deposit buildup. This node works iteratively during playback.
It will appear to have no effect on the first frame. You need to
press play in the Playbar to watch as it sims the erosion.
EXPORT OPTIONS
TERRAIN & HEIGHTFIELDS
35
SideFX Labs
SideFX Labs is a collection of high level tools aimed to speed up artist and gamedev related
workflows in Houdini. There are a growing number of tools being developed that range
from Mesh Processing, Realtime FX, UVing, to creating Motion Vectors from simulations.
While all of Houdini can be used to generate content for film, Make Loop - Takes a mesh, points or volume that is animated and
TV and games, the Labs toolset addresses artist-specific tasks loops them.
that may not be available in Houdini today. These tools are Volume to Texture - The Volume Texture tool lets you write out a
developed separately from the regular Houdini development texture that can be used with Ryan Brucks’ volume plugin in UE4.
cycle and become available the moment they are ready for Flowmap - This utility tool sets up a flowmap template on your
testing. They can be downloaded directly from within Houdini input geometry.
or accessed through the SideFX Labs github page. Flowmap Visualize - A high quality realtime preview of a flowmap
texture in the Houdini viewport.
DOWNLOADING THE TOOLS Flowmap Obstacle - The flowmap obstacle SOP allows for easy
The Labs tools can be installed with Houdini or accessed from modifications on the flowmap based on geometry.
the SideFX Labs shelf tab. It not visible on most desktops so Niagara ROP - All-in-one HDA to extract and write out impacts,
you will need to add it. Once it is visible, click on the Update split data and interpolation data from a bullet sim to be used with the
Toolset button. This will pop up a dialog prompting you to UE4 Niagara data interface.
install. Since many tools are in beta, you may want to turn Off Gamedev Procedural Smoke - The procedural smoke SOP will
the Production Builds Only option. generate an animated volume to represent smoke.
ROP Vector Field - Generate UE4 compatible vector fields from
volumes or point clouds.
MESH PROCESSING
There are a lot of steps to get quality meshes into your games -
The shelf will be populated with many of the tools but some
photogrammetry, topology cleanup, mesh reduction, uv layout,
are only available when you press tab in the Viewport or
baking maps. Lab tools let you simplify that process with
Network view. These nodes are prefaced with Labs to make
wrapped up workflows and integrations with popular software.
them easy to find.
AliceVision Photogrammetry - AliceVision is a Photogrammetric
Computer Vision Framework which provides a 3D Reconstruction and
FX TOOLS Camera Tracking algorithms.
Houdini is known for its strong FX tools and SideFX Labs has
tools to process the results for use in a realtime environment
for games or virtual production. Labs has a range of tools to
help optimize and export your sims to textures, fbx, csv, etc.
Vertex Animation Textures - The Vertex Animation Textures ROP
will export a mesh and textures to be used with a realtime material
that can playback complex animations for cloth, rigid body destruction,
fluids and particles.
ZBrush Bridge - GoZ is Zbrush’s fast file transfer feature that lets
you send meshes between Houdini and Zbrush seamlessly without
having to deal with file paths or extensions.
HOUDINI FOUNDATIONS
36
WORLD BUILDING UV MAPPING
Digital worlds are becoming bigger and more complex and Texture UVs are a big part of creating game art and these tools
it is important to have an efficient world building workflow. augment Houdini’s existing UV toolset to make you faster and
Whether you want to recreate New York City, grow a dense more efficient.
forest or add interior details to your sci-fi adventure there are Auto UV - Automatically generates the seams for an object and
Lab tools for you. immediately runs a UV Flatten after the fact.
Physics Painter - Physics Painter is a SOP that allows users to paint Inside Face UVs - Create UV’s for inside faces of fractured geometry.
physics objects onto any other object.
UV Transfer - Transfer uv’s between a source and target geometry.
Building Generator - Convert low-resolution blockout geometry
UV Visualize - Helper script to visualize UVs. Including features
into detailed buildings using a library of user defined modules.
such as: Visualize Seams, Warp between UV space and Model Space,
Modify the tiling of the grid texture and Visualize Islands.
Texel Density - This tool calculates the current texel density of an
asset per primitive based on the asset and project resolution.
INTEGRATIONS
These tools make it easier to import and export data into
Houdini and out to game engines.
Substance COP - The Substance Plugin for Houdini lets you load
Substance Archive files into Houdini in COPs.
OSM Import - Open Street Map is a great database for city street
data. This node efficiently loads the OSM files into Houdini as well as
all of the different tagged attributes on the buildings and streets.
OSM Buildings - Generate Buildings from OSM Data.
Tree Tools - The Tree Tools in Labs consist out of several tools that
can be used together to create intricate branching structures such as
trees, bushes, plants and much more.
Cable Generator - Given a curve that represents the high ‘pin’
points and low ‘sag’ points of a cable, this sop will generate sagging
cables, with user definable cable count, shape, color.
Rizom UV- The RizomUV Bridge is a set of 4 different SOPs that
Curve Branches- Scatters curves over curves, with many intuitive
facilitate the communication between Houdini and RizomUV.
controls to go from clean geometric branches to organic vines.
Duplicates of this sop can be chained together for recursive growth, Quad Remesher - The QuadRemesher node is a wrapper around
approximating the look of L-Systems but much more controllable. Exoside’s QuadRemesher command line interface.
Dirt Skirt - Create a geometry ‘skirt’ where an object and ground Instant Meshes - Reads in DDS (DirectDraw Surface) Files.
plane intersect, to be used as a soft blend in a game engine. Sketchfab - Uploads geometry to Sketchfab.
Lot Subdivision - Divide polygons into panels. Useful for city blocks 3D Facebook Image - Quickly render a 3D scene to a 2.5D image
or greeble. that can be uploaded to Facebook.
MapBox - Generate color, height and Open Street Map (OSM) Marmoset ROP- The Marmoset ROP allows you to quickly generate
curves using data provided by mapbox.com. an mview inside Houdini.
SciFi Panels - Example HDA to generate Sci Fi Paneling. Gaea Tor Processor - The Gaea Tor Processor allows you to load up
Snow Buildup - Adds geometry to an input mesh to mimic the build build .TOR files made in Gaea.
up of snow.
Terrain Texture Output - The Terrain Texture Rop SOP renders UX
image data from a heightfield. Some Labs tools are specifically designed to enhance the user
MODELING experience for artists working with Houdini.
Crash Recovery - Found under the File> menu, this functionality
The Labs Tools includes a variety of modeling tools designed to
allows for quick recovery from an unfortunate crashed file.
make it easier to create game-ready geometry.
Network Paint - Allows for colorful annotations of the network by
Decal Projector - Project a decal (localized piece of geometry and a simply drawing in the network editor.
texture) onto geometry.
Sticker Placer - Helpful for annotating networks by placing
Calculate Slope - Calculate the slope of a surface by comparing to a numbers, icons and user-created graphics.
direction, and optionally blur and remap the result.
External Script Editor - Sets up a live connection with an external
SIDEFX LABS
Curve Sweep - Sweep a profile along input curves, with simple IDE when working with VEX, Python, OpenCL and expressions.
controls for profile type, width, and twist behavior.
Extract Silhouette - Create an outline of an object projected from AND MUCH MORE...
one of the axes, xyz.
More Tools are being added on a regular basis. Go to SideFX.com/labs
37
File Management
Understanding how to manage all of the files you create while working with Houdini is very
important to your success as an artist. A typical scene file can have outside dependencies on disk
and managing these is important especially if you are moving your files to a different computer.
PROJECT DIRECTORIES To create and load assets you can use the Asset menu. You
can also manage assets loaded into your scene using the
While Houdini can work with files scattered all over your hard
Asset Manager found on that menu. If you have two HDA
drive, this will make it harder to share your work and manage
files loaded into your scene that have the same name, Houdini
file dependencies. It is better to set up project directories
will choose one of them based on rules set up in the manager.
using File > New Project or use File > Set Project to choose an
Changes made to an asset definition in an HDA file will be
existing project directory as the home base for your work. This
automatically pulled into scenes that reference that file. Note
will make it easier to set up local dependencies with respect to
that older Digital Asset files may have a .otl extension which
all of the required project files.
will work exactly the same as .hda files.
UI for the asset. These files can be easily shared with other
artists and provide a robust referencing architecture as your
assets evolve through the life cycle of a project.
38
FILE SOP INTEROPERABILITY
When you import geometry into Houdini using File > Import To import and export from Houdini, there are a wide variety of
> Geometry it puts down a File node at the geometry (SOP) file formats that you can use. Here is a list of some of the main
level. This file maintains a connection to the file on disk and formats you will work with in a typical Houdini pipeline.
changes made to that file will also update in your Houdini
scene. If you want to break this connection then you would
need to lock the File node. Houdini Files - Here are some file formats, other than .hip and
.hda that work exclusively in Houdini.
.bgeo - This format saves geometry along with related attributes such
as UVs, velocity and normals. Animations and simulations can be saved
out as numbered bgeo files to save out motion. A bgeo.gz file is a
compressed version of this format.
.sim - These files let you save out simulation data to cache the sim to
disk. Some people use these files while others use .bgeos to cache sims.
.ifd - This is a scene description format that is created when rendering
FILE DEPENDENCIES [$HIP/$JOB] to Mantra. Typically these are created while rendering in Houdini but
When you work with nodes that reference files on disk such sometimes they are saved to disk to be rendered by Mantra directly.
as geometry or texture files, the path you use will determine .pic - This is an image file format that was used by Houdini in the past.
what happens if you move the project directory to another It was replaced as the default format by the open source EXR.
computer or to the cloud. A direct path will break if you move .rat - This image format is ideal for texture maps being rendered in
the files therefore you should either use $HIP which uses the Mantra. All textures get converted to this format anyway so it speeds
scene file as the “home base” for the path or $JOB which uses up rendering to convert to this format using Mplay.
the project directory. You can use Render > Preflight Scene to
check to make sure that your scene file is set up properly.
Image Formats - These industry-standard formats are used to
render out shots and for texture maps.
.exr - OpenEXR is a high dynamic-range (HDR) image file format
developed by Industrial Light & Magic that is now the default format
for saving out renderings from Houdini.
.jpg/.png - These formats are used to publish images to the web
.tga/.tif - These formats are often used to texture map video games.
PREFLIGHT PANEL
From the Render menu, select Preflight Scene
to evaluate your scene setup.
Referenced Files - The preflight panel can
either reference $HIP or $JOB when verifying
file references for your scene file.
Greenlit Reference - If the reference is
relative to either $HIP or $JOB then it will be
displayed in green to indicate it is working.
File Management
39
Expressions & Scripting
Houdini is a production-level solution which means that scripting will play an important role in your
work. Artists can usually get by with simply writing expressions while technical directors will spend
more time using these techniques. Houdini includes support for Hscript, Python and VEX.
HSCRIPT EXPRESSIONS Python, the hou package is the top of a hierarchy of modules,
functions, and classes that define the HOM. The hou module
HScript is designed to be a fast and concise way to retrieve and
is automatically imported when you are writing expressions in
manipulate information that can be used to write expressions.
the parameter editor and in the hython command-line shell.
An expression is typically any value that is not either a simple
string or number. This can be something as simple as a variable, You can also use it to write expressions in Houdini. To do
a math equation or an expression function. this, change the expression language option at the top of the
parameter pane for the node.
You can enter expressions directly into a parameter by simply There is also a Python Shell Panel which you can use to enter
typing into a field. When you press Enter the field highlights in Python commands. You can also import the hou module into
green. You can click on the parameter name to toggle back and a regular Python shell to integrate Houdini into your existing
forth between the expression and the result of the expression. Python-based scripts.
If you are creating channel references then you can RMB-click
on a parameter and choose Copy Parameter then go to the
TOOL SHELVES
parameter you want to link it to and choose Paste Relative The shelf tools are also set up using Python. You can see this
References. code by RMB-clicking on any shelf tool and choosing Edit Tool.
You can also achieve this by RMB clicking on the second
parameter then choosing Reference > Scene Data. This opens
up a panel where you can choose data from other objects and
nodes and an expression will be built for you. This method can
even set expressions on multiple parameters.
EXPRESSION EDITOR
Depending on the complexity of your function, or the type of
parameter, you may instead choose to use the Expression PYSIDE/PYQT
Editor. The expression editor can be opened by RMB-clicking The Python Panel Editor pane lets you create, edit and delete
on a parameter and selecting Expression > Edit Expression, or PySide2 or PyQt5 interfaces. The editor also lets you manage
by placing the mouse over the parameter and pressing Alt - E. the entries in the Python Panel interfaces menu as well as the
entries in the Houdini pane tab menu. The panel comes with
some sample code that you can try out for yourself.
HOUDINI FOUNDATIONS
PYTHON
Python is a popular scripting language that is well known in the PYTHON STATES
CG industry that supports integration and standardization. This You can also write viewer states in Python that let you
makes it perfect for tool development. customize user interaction in the viewport for your node. You
Python in Houdini is built on the Houdini Object Model can use these to build more artist friendly interfaces for tools
(HOM) which is an API that lets you get information from and you can refer to the documentation for more detailed info.
and control Houdini using the Python scripting language. In
40
VEX WRANGLE NODES
VEX is a high-performance expression language used in many You can also use a wrangle node such as the Attribute Wrangle
places in Houdini, such as writing shaders. VEX evaluation is which provides a low-level node that lets coders who are
typically very efficient, giving performance close to compiled familiar with VEX tweak attributes. There are also wrangle
C/C++ code. nodes for working with channels, volumes and deformations.
VEX is not an alternative to scripting, but rather a smaller,
more efficient general purpose language for writing shaders
and custom nodes. VEX is loosely based on the C language,
but takes ideas from C++ as well as the RenderMan shading
language.
VEX is used in several places in Houdini:
Modeling – The VEX SOP allows you to write a custom surface node
that manipulates point attributes. This can move points around, adjust
velocities, change colors. As well, you can group points or do many
other useful tasks.
Rendering – Karma and Mantra use VEX for shading computation. This
includes light, surface, displacement and fog shaders.
Compositing – The VEX Generator and VEX Filter COPs allows you
to write complex custom COPs in VEX. The expressions evaluate very
close to C/C++ speeds and run 1000’s of times faster than the Pixel
If you are interested in learning how to work with wrangle
Expression COP. nodes, you should take a look at Entagma.com where you will
find lots of great tutorials that generally take a more technical
CHOPs – The VEX CHOP lets you create custom CHOPs. The CHOP
functions can manipulate arbitrary numbers of input channels and approach to creating content but with an artist’s mindset.
process channel data in arbitrary ways. In some cases, the VEX code
can run faster than compiled C++ code. COMPILE BLOCKS
Fur – Procedural fur behavior is implemented with VEX. In geometry networks [SOPs], you can put a part of the
network inside a compiled block that makes it function as
VOPS efficiently as if you had written code. This imposes a number of
If you want to use VEX but don’t want to write the code then restrictions on how the network can work, but can potentially
you can use the VOP context to use a node-based interface. deliver big benefits in the right circumstances.
You can do this in the SOP context using an Attribute VOP
node that lets you dive in and use VOPs to create VEX code.
You can take input geometry and manipulate it.
you can execute the VEX code without diving back down to
customize different areas in the Houdini interface. Here are
the VOP level.
some examples of what you can do with the development kit:
Add custom expression functions
Add custom commands (hscript or HOM)
Add custom operators (SOPs, COPs, DOPs, VOPs, ROPs, CHOPs,
The VOPs context is designed to give artists an interactive way
and even Objects)
of creating VEX code. For people with a scripting background,
Add output nodes to support a non-standard Renderer
it might make more sense to write the code directly into a
Add custom lighting or atmospheric effects to the renderer
Wrangle node.
To learn more about working with the HDK, go to the SideFX
website and choose Support > Documentation > HDK.
41
Tasks
With the Task Operators or TOPs, you can organize and schedule tasks then distribute them
intelligently to your compute farm. This allows for parallel processing of data while maintaining a
dependency graph that shows how each task relates to proceeding tasks.
TOP NODES Use the Task Bar to monitor your progress. On the TOP nodes,
Task or TOP nodes let you manage pipeline tasks with the you can RMB-click on a task dot and choose to Cook or Dirty
ultimate goal of parallelizing the processing and distribution the task. When you dirty a task, it means that if you recook the
of each task. As a TOP node generates a task, the task is network those tasks will be recomputed. Clean tasks will not
displayed as a dot. Once the task is cooked then new tasks can be recooked which is one of the benefits of TOPs because you
be executed on this node and on children TOP nodes. don’t have to redo work that is already completed.
DEPENDENCIES
When you click on a task dot in the graph, you will see a thin
line that connects to upstream tasks it is dependent on and
downstream tasks that depend on it.
If there are changes upstream then tasks may be automatically
dirtied and this will in turn dirty tasks downstream where there
are dependencies. This process is an important part of how
SCHEDULERS PDG graphs work as an effective pipeline tool.
TOP NODE
Input - The node takes the information feeding
into the Input and breaks it into one task for
every piece of data.
Progress Wheel - The progress wheel shows
you how many tasks are completed, how many RMB on Node....
are in progress and how many are in the queue.
TOP Node - This is the node that is currently
HOUDINI FOUNDATIONS
42
TASK GRAPH TABLE OUTPUT IMAGE MOSAICS AND MOVIES
If you RMB-click on a node, you can choose to Open Task In TOPS, you can interface with ImageMagik to create a
Graph Table. This gives you an itemized list of tasks along contact sheet that can be used to evaluate design iterations to
with information such as index, state, cook time and priority. make the best choice or to generate prop variations to richly
Clicking on items in this window will highlight the task dot on populate your scene. You can use an overlay to pull info from
the node in the Network view. the network to help you make the best decision.
IMPORT/EXPORT DATA
To get data into the TOP graph, there are a number of different
options giving you access to geometry, images, scripts and INTEGRATIONS WITH OTHER APPS
other kinds of data. Houdini Digital Assets can be used to apply
TOPs includes nodes for working with other applications such
procedural networks or you can connect with other parts of
as Shotgun or Autodesk Maya. This allows your network to
Houdini to import and export data.
extend beyond Houdini to help with all parts of the pipeline.
WEDGE NODE
A key workflow in PDG is wedging that lets you quickly create
multiple iterations of a design. You can then process all of the
different options through the TOP graph then collect them at
the end for final output.
TOP NETWORK
Network Path- This shows you
This network type lets you the path to the TOP network
manage and view the network where the graph is set up.
being processed.
TOP Menu- This menu
Task Bar- The task bar lets you includes a range of options for
start and stop a network and organizing and processing a
monitor its progress. TOP network.
Scheduler- The scheduler node Progress Bar - This bar lets you
determines where your data is see the progress of the overall
being processed and how many network tasks.
nodes are participating.
TOP nodes - These nodes are
Completed Tasks - When a node where specific commands are
is finished processing all its tasks, turned into tasks and sent by
a check mark appears. the scheduler to be completed.
In Progress Tasks - While in Dependency Line - You can
progress, you can see which click on a task to see how it
tasks still need to be completed.
Tasks
43
HOUDINI DIGITAL ASSETS
Procedural Tool Building
Networks of nodes give Houdini its procedural nature and define a recipe that can be applied over
and over. Houdini Digital Assets let you wrap up these networks to create custom tools and smart
assets. These artist-built tools can be used repeatedly to increase productivity across your studio.
One of the things that Houdini’s node-based workflow is great PIPELINE FRIENDLY
at is allowing artists to avoid repetitive steps and to generate
When a Houdini Digital Asset is loaded into a scene file, it
multiple iterations by making changes to an existing network
references the .hda file on disk. This means that changes made
of nodes. This lets you achieve results that are unique without
to the asset will be picked up automatically by everyone who
starting the whole process from scratch.
is referencing that file.
Houdini Digital Assets take this one step further by letting you
This makes it very easy to deploy updates throughout your
encapsulate a network or collection of networks into a single
pipeline. Now artists can point to a single asset on disk
node with parameters that have been promoted to the top
knowing that once it gets updated with the most current
level. This node is then saved to disk which creates a shareable
iteration, they will immediately have access.
file that other artists can load into their scenes.
Houdini Digital Asset files can also hold more than just the asset
ARTIST BUILT TOOLS definition. You can store images, geometry files and scripts that
are used by the asset. This ensures that all the relevant parts are
The process of creating a Houdini Digital Asset works with the
available when other people work with the asset.
interactive tools in Houdini. You build a high level interface by
dragging parameters from nodes to an asset properties panel
CONTENT LIBRARY & ORBOLT
which allows you to create custom tools without writing any
code. This means that technical artists can build custom tools The Content Library is an online asset repository which hosts
then deploy them quickly to colleagues. 2D and 3D assets, from complete scene files, to fully-rigged
props, to render-ready visual effects, animatable characters,
A Houdini Digital Asset might be a procedural prop such as
game assets and more. Go to Get > Content Library on the
a staircase or a piece of furniture, a visual effect such as an
SideFX website to access it.
explosion, or a more generalized tool such as a populate tool
for scattering objects over a surface. Whether you are creating Orbolt an online asset marketplace that offers a wide variety
content specifically for your current project or building a larger of digital assets. There is a panel in Houdini where Orbolt
toolset for all your projects, your artists can build a collection assets you download or purchase can be stored and made
of Houdini Digital Assets to meet your production needs. available as you work.
3
Houdini
Build an interface for your asset by Digital the changes.
Asset
promoting parameters and handles
to the top level of the asset.
.hda file
44
HOUDINI ENGINE
Sharing with other Apps
Houdini Engine brings a procedural node-based approach to your favorite app. This technology lets
you share Houdini Digital Assets with colleagues who can load them directly into 3D apps such as
Autodesk® Maya® or 3DS MAX® or into game editors such as Unity® or Unreal..®
HOUDINI ENGINE PLUG-INS Plug-ins that work with FREE Houdini Engine for Unity/Unreal
There are a number of Houdini Engine plug-ins that artists can or FREE Houdini Engine Indie licenses:
access either through the Houdini installer or online. These Unreal
have been production tested and can be used confidently by Unity
artists and studios.
Plug-ins that work with Houdini Engine licenses or FREE
Each of the plug-ins are designed to create a bridge between
Houdini Engine Indie licenses:
the features in a typical Houdini asset and the nature of the
host application. For instance a cloud asset that use volumes Autodesk Maya
would work fine in Maya but would not make sense in Unity or Autodesk 3DS Max
Unreal where volumes are not supported. Proprietary Plug-ins
Animate
HOUDINI FOUNDATIONS
VFX
Distribute
Render
Save as
HDA
GAMEDEV & VR PIPELINE
Terrain Populate
Generation Environment Game Compile/
Engine Bake Assets
Realtime FX
Play Game
to disk and render out with a word mark. Our Support Specialists can be contacted directly via
[email protected] . Be sure to include the following
Note: Scene files and Assets created in Indie, Apprentice or
information in your email:
Education cannot be used in commercial Houdini. The file formats
are different and the EULA [End User License Agreement] prevents Your Operating system [Windows XP, etc.]
you from sharing files between different license types. Version and Build Number of Houdini
Summary of the installation issue and a diagnostic file if you are
having a licensing issue.
To learn about support programs visit SideFX.com/support.
48
Comparison Chart
COMMERCIAL INDIE LEARNING
Alembic IMPORT
.bgeo
FORMATS
IMAGES
.pic .piclc .picnc
.exr watermarked
.tif watermarked
.png/,jpg watermarked
* Commercial Workstation Licenses come with 5 Karma Tokens and Local and Global Access Licenses come with 10 Karma tokens
49
50
HOUDINI FOUNDATIONS
LESSON GOAL
Model, Render, Animate and Simulate a soccer ball using Houdini’s procedural node-based workflow
LESSON
COMPATIBILITY
Written for the features in Houdini 19.5+
Houdini Core ✔
Houdini FX ✔
Houdini Indie ✔
Houdini Apprentice ✔
Houdini Education ✔
03 You can now explore the View tool in Houdini. Press the
following hotkeys:
Tumble Spacebar or Alt[Opt] - LMB click-drag
Pan Spacebar or Alt[Opt] - MMB click-drag
Dolly Spacebar or Alt[Opt] - RMB click-drag
In some cases, you will want to home in to get your bearings.
There are some hotkeys for that as well:
Home Grid Spacebar -H
Home All Spacebar - A
Home Selected Spacebar - G
HOUDINI FOUNDATIONS
RADIAL MENUS
One way to access tools in Houdini is radial menus which you can
access using the X, C and V hotkeys. Each of these brings up a radial
menu with lots of options for you to choose from. The main focus
of each menu is as follows:
Snapping X
Main (or Custom) C
View V
52
SELECTION HOTKEYS
RMB-click to access menu
If you are using the Select, Move, Rotate, Scale or Handles tools,
the following hotkeys will determine your selection mode as well as
which level you will be working at.
Objects Object Level 1
Points Geometry Level 2
Edges Geometry Level 3
Primitives/Faces Geometry Level 4
Vertices Geometry Level 5
06 Press n to select all of the new faces and press Tab and
begin typing sub… then select Subdivide from the list.
The Tab key is another way to access tools in Houdini. Typing the
tool name lets you focus the list making it easier to find what you
want without navigating the submenus.
In the Parameter pane, set Depth to 2. This subdivides the
geometry to create more polygons. Houdini also has a subdivision
display option at the Object level which you can use to see
subdivisions without actually adding any geometry, but in this case
you do want to create more polygons.
53
PART TWO
Create a Soccerball
You are now going to replace the box with a soccerball shaped platonic shape. Using Houdini’s procedural approach, you
can replace the box node with a platonic solid node. From there you will adjust the other nodes to make it look like a soccerball.
This ability to swap out input nodes lets you prototype networks with simple geometry for added flexibility.
SHADING OPTIONS
Disable Lighting
There are a number of Shading Options available from either the
Headlight Only
View radial menu or the Shading menu in the top right of the Viewport.
Normal Lighting
For the shading of your objects, the lighting is determined by the
Display Options on the right edge of the Viewport. You can choose High Quality Lighting
from a headlight, normal lighting or high quality lighting with shadows. High Quality with Shadows
To quickly toggle from your shaded view to wireframe press the W key.
54
04 In the Network view, press Y and drag across the line
connecting the subdivide node and the polyextrude node
to break the connection. You are now going to move the subdivide
in between the other two nodes so that you get a rounder
soccerball.
06 Use the tab key in the network editor to add a Ray node
and wire it in after the subdivide. Now add a sphere node
to the network and set its Radius to 1, 1, 1 and the Primitive Type
to Primitive. Now wire the sphere into the second input on the ray
node. This will project the subdivided ball onto a perfect sphere.
This is a very powerful node in Houdini that lets you project points
from one piece of geometry onto another. It is the perfect solution
to our problem of a subdivided soccer ball that wasn’t truly round.
The ray node is a tool that projects points out to another piece of geometry. This
is similar to the pinboard toy you played with as a kid. In fact, this is the node you
would use to set up a pinboard in Houdini.
GETTING HELP | To learn more about each node, you can click on the help button
in the top right of the Parameter pane to open up the node’s online documentation.
You can also hover over the tool in the shelf and press F1. In many cases, there are
sample files that you can open in Houdini to learn what the node can do.
55
PART THREE
The For-Each Node
Now you get to see the magic, as the attributes you just created in the last part are fed into a for-each loop where the original
patches are extruded even though each contains many polygons. This will provide a more leathery look for the soccerball once
you subdivide it once more time after the poly extrudes.
56
04 Now make sure the Visualizer display button is on
and you will see the patch values on the soccerball in
the viewport. You can see that the prim number from the original
platonic solid have been transferred to the subdivided faces.
Change the display flag to different nodes to see the relationship.
This information will be used to polyextrude the patches properly
using a for-each loop.
Turn OFF the Visualizer display and save your work. These steps
have been a bit abstract and probably feel a bit too technical, but
don’t worry the payoff is coming.
attributecreate node ray node
57
PART FOUR
Setting up UVs
In order to set up materials and textures, it is important to make sure that there are proper UVs set up on your object.
Geometry in Houdini does not come with UVs, therefore you must create them yourself. This means adding extra nodes
to the network, which in this case means adding UV Quickshade and UV Flatten nodes.
02 In the Scene view, press n to select all then press tab >
UV Flatten. In the Group field, enter the expression
@patches>19. This will flatten the dark patches on the soccerball
geometry using the patch boundaries to lay out the UVs.
Using this tool brings up UV view. Click on the UV (vertex) menu
in the top right and choose Background > soccerball_color.rat. Now
you can see this texture in the background of the UV panel. This
texture has a team insignia at the center of the image and a darker
area at the top for the dark patches.
Drag Down node and before the Fuse node. In the Group field, enter
the expression @patches<20. This will flatten the light patches.
RMB-click on the Handle tool and turn on the Min: handle. Use the
arrow handle at the top and pull it down until all the patches are
inside the light area at the bottom of the texture map.
When you finish you can RMB-click on the Handle tool and turn off
the Min: handle.
RMB-click in the Scene view and from the menu, select Texture
Visualization > Off. This will remove the grid.
58
05 Select the uvflatten node and click on the Handle tool.
Mouse over the geometry you can see the patches
highlight. Click on the Pin Vertices button in the Operation
Controls bar at the top of the viewport.
Mouse over the patch shown in this image and in the 3D view,
Shift-click on the center vertex of the desired patch to select it. This
adds a pin in the UV view and a handle to work with.
Shift-Click
UV FLATTEN
The UV Flatten node works in two steps. It takes individual texture pieces, defined by
seams, and flattens them into 2D texture space, trying to equalize polygon size.
SETTING UP UVS
This node lets you add constraints for the flattening algorithm. Constraints force the
layout algorithm to satisfy certain conditions, giving you extra control over the final
UV layout. You can use this node interactively, using the tools in the node’s state to
specify constraints, or you can turn off Manual layout and use the node procedurally.
59
PART FIVE
Layout: Cameras and Lights
To create a scene for rendering, you are going to bring the geometry into the Solaris or LOPS context of Houdini. This is an
environment dedicated to lookdev, layout and lighting and is built on the foundation of USD (Universal Scene Description).
This will allow you to render to the Karma renderer which works right in the Scene View as part of the Solaris workflow.
01 In the Network View, press tab > Match Size then add
the node between the subdivide and GEOMETRY_OUT
null. Set the Display flag on the GEOMETRY_OUT node.
Select the matchsize node and set Justify Y to Min to raise the
ball up to sit on the ground. This will put it in the right position for
rendering.
03 In the Network view, press tab and type out Grid. Click
to place down the node and rename it backdrop. Double-
click on the backdrop node to dive down to the geometry level.
Select the grid node and set the size to 80, 80 and the Center to
0, 0, -20. RMB-click on the grid node’s output and type Bend. Click
to place the node then set its Display Flag and set: Bend to 75.
In the Capture section, set Capture Origin to 0, 0, -30, Capture
Direction to 0, 0, -1, and Capture Length to 5.
RMB-click on the grid node’s output and type Subdivide. Set its
Display Flag then set Depth to 2.
60
05 In the top right of the Scene View, click on the No cam
menu and choose camera1. Now you are looking through
the camera and can adjust how it looks.
This is probably not the view you are looking for therefore some
view changes are needed. On the right side of the Scene View,
click on the Lock camera to view button. Now use the View
tools [Spacebar-LMB/MMB/RMB] to reposition the camera.
IMPORTANT: When you finish, toggle off the Lock Camera button.
61
PART SIX
Lookdev: Materials
Materials and shaders can also be created within the LOPS/Solaris context. This involves adding the materials to the Scene
Graph then assigning them to the geometry. The Materials are created inside a Material Library node then assigned at the
LOPS/Solaris level. To add textures to the backdrop, UVs will have to be created to position the maps properly.
62
MATERIALS IN HOUDINI
Materials in Houdini live in the VEX Builder context which in this
case is nested inside the Material Library node. A material is made up
of VOP nodes or Material X nodes that define the material qualities.
The Principled Shader is an uber material that can be used on its own
to assign texture maps and achieve a large variety of looks. You can
also build your own shaders and materials for more advanced looks.
Render ROP node. Wire them into the end of the chain. Select the
karmarendersettings node and on the Image Output > Filters tab set
Denoiser to nvidia Optix Denoiser to turn the denoiser back on.
Select the usdrender_rop node. Click on the Render to Mplay
button. This opens Mplay which shows the rendering as it
progresses. Choose File > Save Frame As to save the image to disk.
63
PART SEVEN
Rig the Soccerball
In order to create an animation of the ball bouncing, you will start by building a simple rig that will make it easier to keyframe.
This will involve setting up null objects so that you can work interactively in the viewport and adding nodes to the soccerball
geometry network to accommodate the ball rotation along with squash and stretch.
64
05 In the Viewport, create another Null object at the origin.
Call it squash_ctrl. Go to the Misc tab and set Control
Type to Box and the Display Uniform Scale to 0.2.
Move the null up just above the ball. Translate Y should be about
2.5. In the Parameter pane, choose the Modify Pre-Transforms
menu and select Clean Translates. This sets the Translate Y value
of the null to 0 even though it is above the ground. In order for this
null to drive the squash and stretch, it needs a default value of 0.
65
PART EIGHT
Animate a Bouncing Ball
You can now take the soccer ball rig and use it to animate the ball bouncing. You will learn how to set keyframes, adjust anima-
tion curves and work with time-space handles in the viewport. The bouncing ball is a classic animation exercise that offers a
great opportunity to learning the basics of animating in Houdini.
Select
HOUDINI FOUNDATIONS
66
04 Go back to the Scene view and preview the results.
You now have a sharper hit each time the ball hits the
ground. Make sure you have the Pose tool active and the
soccerball_ctrl node selected. In the top bar, turn On the Motion
Path handle. This shows a path outlined where the ball is bouncing.
Click on each keyframe marker to tweak the bounce. RMB-click on
the handle to Show tangents for more control over the curve.
Go to the soccerball_anim object’s Misc tab, set Onion Skinning to
Full Deformation. Press spacebar-d and from the Scene tab adjust
Frame increment and the Frames Before and After color.
05 To adjust the timing, you can also use the timeline. Press
Shift and drag a bounding box from frame 1 to the last
key in the timeline to select all the keys. Next, MMB drag on the
end of the box underneath the handle to scale the timing of the
bounces to speed them up. You can also select each key using MMB
and then drag with MMB to time each keyframe the way you want.
This is where you will determine the timing of the bounces. Keep
exploring until you get the look that you want. Note that there may
be some awkwardness in the bouncing because of the translate X
MMB Drag Here
values. You will fix that in the next step.
06 Click on the Animation Editor pane tab and you will see
two curves. From the Scoped Parameters list, click on
Translate X for soccerball_ctrl. Now select all the keys except for
the first and the last. Press Delete. Now use the curve handles to
go from a high slope to a low slope. This will have the ball moving
faster at the beginning and slower at the end.
Note that if you go back to tweak the points in X on the motion
path handle, you will get strange results because there are no
longer intermediate keys in that direction - only use it to tweak in Y
from this point on.
67
09 Select the soccerball_ctrl null object. RMB-click on the
Translate Y and choose Motion FX > Noise. A panel pops
up with parameters that you can use to control the noise. A new
subnetwork was created with the CHOP nodes that send their
information back to the soccerball_ctrl’s Translate Y channel.
Set the Amplitude to 5 and press Play to see how this looks. This
adds dramatic up and down motion which make it feel like there is
some serious turbulence. Set the Amplitude to 1. This offers a more
subtle bump to the motion of the ball.
MOTION FX
While keyframes and animation curves are stored in the parameters of your
nodes, you can also use channel operators (CHOPs) for a more procedural
node-based approach to working with motion.
Motion FX can be applied to keyframed motion which is extracted and stored
in a Channel CHOP. You can then apply effects such as cycle, noise, smooth,
limit or lag to the existing motion. On the Constraints shelf, you have tools
which let you have one parameter either look at, lag or jiggle behind another.
68
PART NINE
Lights, Camera, Action!
To render out the animated soccer ball, you will need to go back to the Solaris environment and set up a second shot. You will
begin by branching off new LOP nodes from backdrop geometry then adjust the lights and cameras to suit the bouncing soccer-
ball animation. You will also set up motion blur for the deforming geometry.
69
05 In the Network view, Select the assignmaterial node
from the SHOT 1 network then Alt-drag to create a
copy of this node. Wire the transform node into the assignmaterial
node then set its Display Flag. This will assign the material to the
backdrop but since the soccerball primitive has changed it needs to
be reassigned.
In the field next to Primitives for the soccerball_mat , change the
primitive name to /soccerball_anim to reassign the material to the
new geometry.
KARMA RENDERER
Karma is a physically-based HYDRA renderer built to work with USD files
in the Solaris/LOPS context. This allows it to be used in the Viewport for
interactive updates or to be rendered to disk using a Karma node.
Note: Houdini 19 includes a preview for an upcoming Karma XPU render
engine. This hybrid GPU/CPU renderer is Alpha with many features still
under development and is for testing purposes only. You can choose XPU
in the Scene view’s Display Options or in the Karma node.
Viewport Menu Display Options
70
PART TEN
Set up a Rigid Body Simulation
While traditional animation is great for animating a single soccer ball, dynamics would be a better option if you want to animate
a bunch of soccer balls. Dynamics requires a simulation so that the solver can go frame by frame determining how each of the
participating objects interact with each other. You will use packed geometry to get an efficient result for this simulation.
02 In the Network view, press tab > Box then place it to the
right of the matchsize node.
Set the following on the box node:
Center to 0, 8, 0
Rotate to 45, 45, 45
Primitive Type to Polygon Mesh
Uniform Scale to 6
Axis Divisions to 3, 3, 3
This puts it in the right position for the simulation.
71
DOPS hidden inside SOPS
In Houdini, simulations are processed using the Dynamic Operators or DOPs.
With the RBD Bullet Solver node in the Geometry/SOP context, you are
working with a node that has a Dynamics network buried inside it.
This makes it easy to set up at the geometry level with all the DOP nodes are
wired up and ready to go but hidden from view. For simpler setups, working at
the geometry level will give you a proper simulation. If you need more control
over the different solvers then you would need to work directly in DOPs.
05 At the end of the chain, add a USD Export node, set its
Display flag and rename it to soccerball_sim.
Set Valid Frame Range to Render Frame Range and set the Output
File to $HIP/geo/soccerball_sim.usd.
Click on the Save to Disk button and this will save the USD file into
your geo directory. You will reference this cached asset into the
Solaris setup as a third shot.
72
09 Add a Light Mixer node after the camera. On the
lightmixer node you will need to move over the lights. This
will let you use the same light handles you learned about earlier to
make lighting decisions for this shot and use the Karma display in
the viewport to verify your setup. You can also use the lightmixer
node to play with intensity and exposure for this shot.
These edits are being held in the lightmixer node and changes are
not being made to the original lights. The lightmixer lets you tweak
existing lights when working in a multi-shot setup.
CONCLUSION
You have now built a scene from scratch, touching on many different
aspects of Houdini. You have modeled, set up textures, animated, ren-
dered and simulated. Along the way you have learned about the different
Houdini contexts and how to navigate back and forth between them.
While this lesson doesn’t result in blockbuster VFX,
it introduces you to fundamental skills which
you will carry with you as you dive deeper
SET UP A RIGID BODY SIMULATION
into Houdini and begin exploring its
comprehensive toolset.
There is a wealth of learning material
available on the SideFX website to
help you take your next steps.
Best of luck on
your journey!
73
HOUDINI FUNDAMENTALS
LESSON GOAL
To create a custom tool that turns any given 3D shape into toy bricks.
LESSON
COMPATIBILITY
Written for the features in Houdini 19.5+
Houdini Core ✔
Houdini FX ✔
Houdini Indie ✔
Houdini Apprentice ✔
Houdini Education ✔
04
HOUDINI FUNDAMENTALS
Next, press the T key to call up the Move tool. This adds
an edit SOP node into the network. In the viewport
RMB-click in empty space to bring up a menu and select Make
Circle to round out the selected polygons.
This menu is associated with the edit node. Every node has its own
interface that you can access as long as a relevant tool is active. In
this case, the Move tool gives you access to the handle. In other
cases the Handle tool would be used to access the interactive
handles for a node.
76
05 Press c to bring up a radial menu and choose Model >
Polygons > PolyExtrude. In the Scene View pane, use the
handle to drag up the polygons and set Distance to 0.05.
Tumble around and press s to go into select mode then select the
bottom four polygons of the box. Press q to repeat the PolyExtrude
tool. In the Parameter pane, use the slider to set Inset to 0.025.
Press q to repeat that tool and set a Distance of -0.175. When you
finish, tumble back to see the top of the brick.
SUBDIVISION DISPLAY
Create a Single Brick
You can use Shift + and Shift - to turn subdivision display on and
off on selected polygonal objects. This creates a viewport subdi-
vide that lets you see what the shape would look like subdivided.
These hotkeys set the Display As parameter which can be found
at the object level on the object’s Render tab.
Your object will not render with subdivisions unless you turn on
Render Polygons As Subdivision Surfaces on the same tab.
77
PART TWO
Copy Bricks to a Point Cloud
You are now going to create a cloud of points that match the shape of a particular piece of
geometry. You are then going to instance the bricks to the 3D grid to create a brickified version. The
instancing is generated by packing the brick geometry then instancing them to the points.
01 In the Scene View, press tab and start typing Test... then
choose Test Geometry: Rubber Toy. Press Enter to place
it at the origin.
Press i to dive into the test geometry object. Set the following:
Uniform Scale to 3
Now add a Match Size node and set Justify Y to Min. This raises the
toy so that it sits on the ground.
78
05 RMB-click on the output of the polybevel nod, start
typing copy... and select Copy to Points node. Click to
place the node below the two chains and set its Display Flag.
Turn on the Pack and Instance option. This is important because it
will display the copied bricks much faster than if this option is off.
At this point there is an error on the node because we haven’t
connected the second input.
PACKED INSTANCES
If you leave Pack and Instance setting OFF on the copy to points
node then you will end up with a large model with over a million
points and primitives. This would make it very slow to manipu- PACK AND INSTANCE | OFF
late in the Viewport because instancing is not being used.
If you turn it ON then the 338 points on the brick model are
packed up and instanced which leaves a much more efficient
point count for the copy to points node. PACK AND INSTANCE | ON
79
PART THREE
Add Color and Switch to a Teapot
You are now going to add color to the points which will then be picked up by the instanced bricks.
At first this transfer of color only applies in the viewport but setting up a proper material lets you
set up the point colors for rendering the bricks. You will then set up a switch between the rubber
toy and a teapot to make sure that your network works with different shapes.
material. Click on the Surface tab then set the Base Color
to 0.5, 0.5, 0.5 and turn ON the Use Packed Color option.
Click on the Render Region tool and drag a bounding box over the
rubber toy. The rendered bricks should now be red.
If not then click Render in the top bar of the Scene view to make
sure the changes have been applied.
Save your work so far. Click the x button in the top right of the
render region to close it.
80
05 Go back to the geometry network using the back button
in the Network view. Press s to go to the select tool. In
the Network view, press tab and type the word Switch then from
the Sourcing folder drag it into the Network view.
Next, drag it over the line connecting the rubbertoy node to the
matchsize node. This inserts it into the network between the two
nodes.
This node will make it easier to switch between different incoming
shapes.
SWITCH NODE
The Switch node is a great tool for providing options within a node
network. This node lets you quickly explore multiple options without the
need to wire and unwire different chains.
This node is also very useful when you wrap up your network into a
Digital Asset because you can promote the switch to the asset as either a
menu or a slider for quick access to different options.
81
PART FOUR
Color the Points using a Texture
Earlier you added a color attribute to the points which affects the coloring of the bricks instances.
Instead of using a single color, you are now going to use a texture map to create a more interesting
look for the bricks. This will involve some special nodes to turn the texture into point colors.
04
HOUDINI FUNDAMENTALS
82
Gear
05 Select the texture node. Click on the Gear icon on
the far right of the Texture Map parameter and from the
menu, select Promote Parameter. This will add this parameter to
the upper level of this node.
Click on the little knob that appears next to map. In the parameter
pane, change the Label to Texture Map.
ATTRIBUTE TRANSFER
ld
When you want to get attributes from one piece of geometry to another, es
ho
hr
you can use Attribute Transfer which uses a Distance Threshold along nc
eT
sta
with other parameters to get the attributes copied over. Di
In the case of the rubber toy, you are transferring the Cd attribute from
the points on the geometry to the point cloud that is used to copy the
bricks. You could also copy attributes such as UVs or Capture Weights.
83
PART FIVE
Create a Brickify Digital Asset
Now that the brickify recipe is working and the nodes are wired together properly, you are going to wrap up some of the nodes
to create a single Houdini Digital Asset [HDA] node. Now you can share the network with parameters from inside the asset
promoted to the top level to create an interface that can generate unique results each time the asset is used.
84
RMB-Click
04 RMB-click on brickify_asset in the Network View’s path
bar and choose Parameter and Channels > Parameters.
Now you have a floating Parameter window with the two brickify
asset parameters. These are the parameters that will be available to
anyone who uses this asset. Let’s add some more.
The brickify node has a new parameter. Change its value from 0
to 1 and back to see how it affects your scene. The problem is the
name isn’t very appropriate and a menu would work much better
than a slider in this case, so you are going to refine the UI using the
Type Properties.
06 Select the second switch node that sits just under the
color and attributetransfer nodes and promote the Select
Input parameter to the parameter list. Change its Name to look and
its Label to Look.
Now click on the Menu tab and turn on Use Menu. Now under
menu items, type 0 under Token and Color under Label then press
enter. Next type 1 under Token and Texture Map under Label. Press
Apply.
85
09 To make it clear which parameters are associated with
which shape, you can disable and enable them based on
the menu choice. Click on the Color parameter and in the Disable
When field, enter { look != 0 }.
This tells this parameter to disable whenever Color has not been
chosen in the Look menu. Next, click on Texture Map and in the
Disable When field enter { look != 1 }.
Press Apply and test the results using the Shape menu. You can see
the parameters disabling when they are not needed. You could also
hide them with the Hide When option but disabling is fine for now.
86
PART SIX
Test the Digital Asset
A Digital Asset can be instantiated more than once in a single scene file. You are going to use this asset on a different piece of
geometry to test how it works. It is always good to have a test version available so that changes set to the first asset can be
quickly verified. The asset can also be used in other scene files once you have it working properly.
01 Use the tab key to get the Squab Test Geometry. Press
Enter to place it at the origin then use the handle to
move it to the side away from the rubber toy.
Double-click on the new object node to dive down to the geometry
level. Select the node and set Scale to 3 and Translate Y to 1.5. This
will make the Squab a bit bigger than the rubber toy.
Properties window, click on the Extra Files tab and select squab_
diffuse.jpg. Click the Save as File button and save it into the tex
folder. The texture was stored in the digital asset so that it could be
shared along with the asset.
Now use this texture on disk to add color to the bricks using the
brickify node’s Texture Map parameter.
When you are finished, go to the object level and name this object
squab and the other one rubbertoy. Save your work.
87
PART SEVEN
Animating the Bricks
It is possible to continue adding features to the asset and you will create an automating build-up animation for the bricks. This
will involve adding more nodes to our network to make sure the asset has this new functionality. Once the results are saved
into the .hda file, the features will be available for use by anyone using this asset in their work.
01 Hide the Squab object and dive into the rubbertoy object.
Select brickify_asset and choose Assets > Unlock Asset
> Brickify. Double-click on brickify_asset node then RMB-click on
the output of texture_switch and select Group by Range. Place the
node and set its Display flag then set the following parameters:
Group Name to hide_points
Group Type to Points
Range Type to Start and Length
Length to ($F-1)*20
Under Range Filter, leave Select to 1 and Of to 1
03 Right now the bricks are coming in from one side instead
of from the ground. This is because the points are
appearing based on their point numbers. To control this, you need
to reorder the points to create the look you want.
RMB-click on the output of the texture_switch node and type Sort...
then select the Sort tool. Place this node down and change Point
Sort to Along Vector. With this set to 0, 1, 0, the points start at the
bottom and go up.
Playback to see this result. Test out different vectors to see how it
affects the animation.
88
05 From the Assets menu, select Edit Asset Properties >
Brickify. Go to the Parameters tab and drag a separator
from the Create Parameters section to the bottom of the list.
Next, drag the animation_switch node’s Select Input from the
Parameter pane to just under the new separator. Set its Name
to animate_bricks and its Label to Animate Bricks. Next, change its
Type to Toggle which limits to you an on[0]/off[1] setting.
In the Parameter Description section, click on the Channels tab
and set the default value to 0 [off].
Click Apply to save changes.
CONCLUSION
Animating the Bricks
You have now created a shareable tool which was built without writing scripts
using a node-based workflow which is easily accessible to artists. By saving the HDA to
disk, it becomes an asset on disk that can be referencing into multiple shots.
Houdini Digital Assets offer a powerful way for artists to share these kinds of tools in
support of a studio-level production. These procedural assets make it easy to
automate repetitive tasks and to stay focused on the creative needs of your project.
89
PART EIGHT
Loading HDAs into other Applications
Once you have a Houdini Digital Asset [HDA] saved on disk, it is possible to load that asset into a host application using the
Houdini Engine plug-ins. These let you share assets with colleagues who can load them directly into 3D apps such as Autodesk
Maya or 3DS Max or into game editors such as Unity or Unreal Engine.
02 Once you have the plug-in installed, you can load the
asset using the Houdini Engine menu. This will bring the
brickify asset into the viewport while the asset parameters become
available for manipulation.
You can also turn on animation for Maya or 3ds Max and play it the
sequence using the timeline.
90
HOUDINI FOUNDATIONS
LESSON GOAL
To simulate a bullet smashing through a wine glass causing the glass
to break and the liquid to splash.
LESSON
COMPATIBILITY
Written for the features in Houdini 19.5+
Houdini Core ✘
Houdini FX ✔
Houdini Indie ✔
Houdini Apprentice ✔
Houdini Education ✔
Grid Snap
You can then click on the Edit Mode button in the Operation
second point Controls bar to move any points that missed their mark.
92
05 Press 4 to switch to primitive selection then press n to
select all. Now press tab > Subdivide. Set Depth to 2.
This will subdivide the model with the creased edges set up to be
sharper than the other areas of the model. A higher Crease weight
could make these edges completely sharp but for now a softer look
works better.
In the Network editor, add a null node to the end of the chain and
set its display flag. Rename this node to GLASS_OUT.
Go back up to the object level and rename the object to wine_glass.
93
PART TWO
Model the Bullet
To create the bullet geometry, you will start with a primitive sphere and slice it in half. Next you will polyextrude the open end
then use polyfill to close the shape using quad topology. You will then subdivide to define the final shape. This object will be
moving very quickly therefore lots of detail isn’t required.
2. Press A then
03 Tumble around and press s to get the select tool and 4 to
get face/primitive selection. Select one of the triangles at
the tip of the bullet then press and hold the a key and then middle
Polyfill to Close
MMB-click Press Delete
click two triangles over to select all the triangular faces. Press the
Delete key to remove them. This adds a blast node to the network.
In the Network View, press tab > polyfill and place the node after
the blast. Set Fill mode to Quadrilateral Grid and Corner Offset to
1 then turn on its display flag. This will close both ends of the bullet
1. LMB-click with good quad topology.
94
PART THREE
Fracture the Wine Glass
To define the cracks in the wine glass, you will create natural looking lines using the draw curve tool then extrude them into
sheets of geometry. You will then agitate the surfaces using the mountain tool. This chaotic looking shape can then be merged
into the wine glass object where you will set up a boolean operation that uses the sheets to shatter the glass.
04
Fracture the Wine Glass
95
BOOLEAN SHATTER
The Boolean node is often used to create traditional booleans such as
Union, Intersect and Subtract. While these work well with closed shapes,
you can use the Shatter option to slice up the geometry with sheets.
Houdini has a Voronoi Shatter tool that can also be used but it will not give
you the jagged look you need for broken glass. There is also an RBD Material
RBD Material
Fracture node that can create glass-like fractures. These work best with flat Fracture
Voronoi
surfaces which is why it wasn’t used in this lesson for the wine glass.
Boolean Shatter
05 Select all the geometry and then press tab > Mountain to
add some noise to the points on the different sheets. Set
Amplitude to 0.75. This will create more interesting cracks in the
glass.
In the Network view, add a Null node to the end of the chain and
rename it FRACTURE_OUT. Set the display flag on this node.
Go to the object level and name this node to fracture_geo then turn
OFF its display flag to hide it.
96
PART FOUR
Set up the RBD Simulation
You are now going to create a rigid body simulation using shelf tools. This will add a DOP (Dynamic Operator) network that
brings together geometry, forces and a solver node. In the wine glass geometry network, nodes will be added to prepare the
geometry for simulation. You will use convex proxies so the Bullet RBD solver can handle the odd-shaped pieces of glass.
CONVEX DECOMPOSITION
For RBD simulations, Houdini uses the Bullet solver which prefers
convex shapes in order to maintain fast simulation speeds. Convex 2
Decomposition lets you take shapes that are concave and break 1
4
them down into convex shapes that are connected together. These 3
97
04 Go up to object level and dive into the wine_glass object.
A number of nodes have been added to create the proxy
geometry and this chain ends with the dopimport node which is
currently displayed.
On the convexdecomposition node, you can change Max Concavity
to 0.05 to adjust your collision geometry.
Press Play to watch it simulate.
06 Before you simulate, you want to make sure that the base
of the glass stays on the ground. Navigate into the wine_
glass object and in the display bar, turn on primitive numbers. You
can see that in this case the base packed primitive is 171 - yours
will probably be different.
Add an Attribute Create node between the create_packed_primitive
and proxy_geo nodes. Set the following:
Group to !171 (or whatever number your base is)
Name to active
Value to 1, 0, 0, 0
98
PART FIVE
Add Fluids to the Simulation
Now that the bullet is smashing the glass, it is time to convert the wine object into a fluid that will become part of the inte-
grated simulation. This means that the RBD and Fluid simulations take place in the same DOP network and will work as one
system. At first, the fluid will be represented by particles that can then be surfaced to visualize the fluid.
99
PART SIX
Cache and Retime the Simulations
For this shot, you only need to compute 10 frames of the simulation. You will save this to disk then use a retime node to create
a longer shot where the fluid slows down then reverses in time. The retimed fluid particles will then be surfaced and output as
a 50 frame sequence which will define the final shot for rendering. The wine glass and bullet will then be retimed to match.
100
RETIME
The most interesting part of the smashing wine glass is the first 10 seconds. To
emphasize this part of the simulation, you are going to save out the fluid particles
for the 10 frames then uses the retime node to stretch out the sequence in a sort
of “bullet-time” effect that snaps back to the original wine glass by reversing time.
Once you have this set up for the fluid, you can surface the points and save out a
longer sequence. The same retime node can then be copied and pasted to be used
on the smashing glass and the bullet.
07 Select the retime node and press Ctrl-c to copy it. You will
paste this in another network to retime the shattering
wine glass. This will ensure that the keyframes match in both of the
networks.
Save your work.
101
USD and SOLARIS
To support the look dev stage of this project, you are caching out the fluid, the
wine glass and the bullet to USD. By doing this, you can focus on rendering
without worrying about simulations being recalculated. Here you will display the
caches in the same scene file as the simulations but another option would be to
start a new scene file and import the caches into that file. This would let you focus
on lighting and rendering your shot but would make it harder to go back and tweak
the sim.
11 Add a USD Export node to the end of the chain. Set the
following
Valid Frame Range to Render Frame Range
Output File to $HIP/usd/wineglass.usd
Hit Save to Disk.
102
PART SEVEN
Set up and Render the Shot
To render the shot, you will reference the USD files into the Solaris Stage then add a backdrop. Solaris is the context of Houdini
that uses LOP nodes to set up the USD Scene Graph. Next, you will add and position a camera and then an environment light.
The Karma renderer will then be invoked in the viewport to create a preview render of the shot.
03 In the Network view, press tab and type out Grid. Click
to place down the node, rename it backdrop and wire it
into the merge node. Set Import Path Prefix to /geo/$OS. Double-
click on the backdrop node to dive down to the geometry level.
Select the Grid node and set the Size to 200, 200 and Rows and
Columns to 20. RMB-click on the grid node’s output and type
Bend. Click to place a bend node and set its Display Flag then set:
Bend to 75, Capture Origin to -40, 0, 0, Capture Direction to -1, 0,
0, and Capture Length to 20. RMB-click on the grid node’s output
and type Subdivide. Set its Display Flag then set Depth to 2.
SET UP AND RENDER THE SHOT
103
VIEWPORT RENDERING
You are now going to render the sequence using Houdini’s renderer
Karma. At first this will render using settings you can find in the Display
options. Press d in the Scene View to bring it up. You can turn on the
denoiser here, set Pixel Samples and the Image Resolution.
Later when you set up a Karma LOP, there will be render settings on
that node which will be used to create the final output.
Turn ON
Denoiser
104
PART EIGHT
Assign Materials and Render a Sequence
Now you can add materials to the wineglass, wine and bullet. These materials will become part of the USD Scene Graph and
will get assigned to the geometry using a LOP node. You can then use a Karma LOP to prepare your render settings including
the use of the Nvidia Optix Denoiser. After you render, you can load the sequence into Mplay to review the results.
SCENE GRAPH
Just like the geometry and lights, the materials you add using LOP
nodes are added to the Scene Graph. When you used the Material
Library LOP, the default setting for the Material Path Prefix was
/materials/ and that is where they are placed in the graph. You
could choose to organize them differently but this is the default.
This material path is the one you used in the Assign Materials LOP
to place the materials onto the geometry.
105
04 In the Network View, press tab > Karma to add a Karma
Render Settings and USD Render ROP node. Wire them
into the end of the chain. Select the karmarendersettings node and
on the Image Output > Filters tab set Denoiser to nvidia Optix
Denoiser to turn the denoiser back on.
Select the usdrender_rop node. Set Valid Frame Range to Render
Frame Range and set the Output Picture to $HIP/render/
wineglass_$F4.exr. The $F in the name is needed to add frame
numbers to the renderings and the 4 is the padding of the frame
number.
05 The denoiser from the viewport will not affect the output
from this node therefore you much choose it explicitly.
Select the karmarendersettings node and on the Image Output
> Filters tab set Denoiser to nvidia Optix Denoiser to turn the
denoiser back on.
The nVidia Optix Denoiser will match the one used in the viewport.
There is also an Intel OIDN denoiser which is only available when
rendering to disk.
Save your work. Select the usdrender_rop node and click on Render
to Disk.
06 When you finish, choose Render > Mplay > Load Disk
Files and open up the rendered images to review the
final sequence.
Later you can branch off another Karma node to up the resolution
and render settings for your final rendering. You can go back to
Convergence Mode set to Variance, up the sample count and turn
off the denoiser. It is always good to complete test renderings at a
lower resolution first to make sure that everything is working the
way you expect it to.
CONCLUSION
You have now created a complete VFX shot using the Bullet RBD and FLIP
Fluid solvers to smash a wine glass. You used the retime node to slow
down then reverse time so that the wine glass finished in the same posi-
tion as it started then you cached out the results to USD files.
These were then used to set up and light your shot using the Solaris/LOPS
context. Materials were created and assigned to the primitives get the
right look for your shot.
This project shows how you can use Houdini’s dynamic nodes and net-
works to integrate different kinds of effects while using geometry nodes to
set up and output the simulations.
HOUDINI FOUNDATIONS
Now that you have an understanding of the nodes and networks used to
create VFX shots. This will assist you as you dig deeper into Houdini to
achieve your own effects.
Enjoy!
106
HOUDINI FOUNDATIONS
DESTRUCTION FX
One of the things that makes visual effects fun is that you get to blow things up without causing any real
damage. In this lesson, you will light a fuse using particle sparks then explode a cartoon bomb using rigid
body dynamics for the shell of the bomb and Pyro FX for the fire and smoke. This lesson will teach you how
to set up dynamic simulations using a variety of shelf tools and network nodes.
To give you a complete understanding of the shot being developed, you will build all the elements from
scratch, then simulate the effects. This will help you understand how the simulation nodes work within the
wider context of a Houdini scene. In the end, you will render out the shot using the Karma renderer.
LESSON GOAL
Model then blow up a bomb using particle sparks, rigid body dynamics and Pyro FX.
LESSON
COMPATIBILITY
Written for the features in Houdini 19.5+
Houdini Core ✘
Houdini FX ✔
Houdini Indie ✔
Houdini Apprentice ✔
Houdini Education ✔
108
SURFACE NORMALS
Every primitive has a normal direction where one side is the inside and
one is the outside. When you polyextrude the bomb geometry it will be
inside out at first. This is indicated with the blue color on the faces. You
can then use a Reverse node to redirect the normals.
You can see the normals on the surface using the Display Primitive
Normals button found in the Display Options bar on the right side
of the Scene view pane.
the display flag on the null node to display it. Double click on its
name and change it to BOMB_OUT.
Go to the Object level and rename the object to bomb_geo since it
holds the bomb’s geometry.
109
PART TWO
Model the Fuse
To create the Fuse, start with a Bezier curve that emerges from the top of the bomb. You can then snake the
curve on the ground to create a longer fuse. Reverse the curve direction to get ready for animating the fuse
then add a Polywire node to give the fuse thickness.
2
01 Press spacebar-b to see the bomb from all angles. Move
over the Right view and press spacebar-b to expand it.
Press c to bring up the radial menu and choose Create > Geometry
1 > Curve. Click drag up to create the first point and tangent handle
for the curve. Next add a point and drag down to quickly draw the
curve pointing down.
03
the view.
Press spacebar-b to go back to 4 views then mouse over
the perspective view and press spacebar-b again expand
TOOL HINTS
The curve tool comes with tool hints that display in the Scene view as
you work. These provide different shortkey options for this tool and
help you get familiar with how it works.
You can collapse it using Shift + F1 and only the tool name will display.
There are a growing number of tools that use tool hints and you will see
more of them in future versions of Houdini.
110
04 In the Operation Control bar, change the curve Mode to
Select/Edit. Now you can click on the edit points on the
curve and make changes to refine the shape of the curve.
Select and edit the points on the ground to get the desired look for
the curve. Tumble around to make sure that your curve stays above
the ground plane.
111
PART THREE
Animate the Fuse
Animate the fuse using a Carve node that lets you control the length of the curve over time. Add a round cap to the fuse that
will be used to emit soot and sparks. You need to set up tangents on the curve to ensure that the cap follows along properly.
Next add some NULL objects to make it easier to export the cap for use in emitting particles.
112
05 Tumble around and press s to get the select tool and 4 to
get face/primitive selection. Select one of the triangles at
the tip of the sphere then press and hold the a key and then middle
click two triangles over to select all the triangular faces. Press the
Delete key to remove them. This adds a blast node to the network.
Press 3 to go bring up edge selection then double click on the edge
of the area you just blasted. Press tab > polyfill which places the
node after the blast. Set Fill mode to Quadrilateral Grid then turn
on its Display flag. Set Smooth to 100 and Tangent Strength to 0.
This will create quad topology at the tip of the sphere.
08 Add a Color node after the polyfill node and set the Color
to yellow. Add another Color node after the fuse’s blast
node and set its Color to Dark Gray. These colors will be helpful for
visualizing the fuse as you work and can also be used to affect the
materials being assigned later.
will reference to emit particles. Set its Display Flag to see only
the half sphere. You can scrub the Playbar to see it move with the
carve.
When you are finished, set the Display Flag back to the FUSE_OUT
null.
113
PART FOUR
Create an Animated Camera
As you develop this shot further, it would be helpful to have a camera set up to frame the final shot. This camera rig will be
built by constraining a null object to a curve then using an aim constraint to point the camera to the null object. This will give
you a camera that follows the end of the fuse to make it easier to evaluate the particles as they are being emitted.
2
01 Dolly out to see the whole scene from above. Make
sure the construction plane is on. Press c to bring up the
radial menu and choose Create > Geometry > Curve. Click-drag
a point near the start of the fuse and drag forward to extend the
tangent.
Next, click-drag a second point behind the bomb and drag to pull
out the tangent to create an s shaped curve. MMB-click to finish
and use Select/Edit mode if you want to tweak the shape.
114
05 In the Network view, press tab > Camera and press Enter
then click to place it at the origin. Now use the Move tool
to move it in front of the fuse and a bit to the right. Next move it up
1 Move Along Z along the Y axis to raise it from the ground by about 0.75 units.
2 Move Along X
3 Move Up
CONSTRAINTS
To get the null object to follow the path and then to get the camera to look at the path,
you used animation constraints found on the Constraints shelf. The are accomplished
using a special node type called Channel Operators or CHOPS. You can find these
nodes inside the null and camera nodes. You can use these to control how the con-
straints work.
Another way to work with CHOP nodes is to use the Motion FX menu that you find
when you RMB-click on any parameter.
115
PART FIVE
Create a Soot Trail
To create a soot trail, use the end cap to emit a trail of particles. Learn how to emit these points properly and how to add forces
such as gravity to control the motion of the particles. Learn how to set up collisions where the particles either stick to the
ground or slide off the bomb surface.
01 Dive back into the fuse_geo object node. With the display
flag on CAP_OUT, go to the Modify shelf and use the
Extract tool. Press n to select all the faces then press Enter to
create a new object with the Cap being imported using an Object
Merge node. Go up to the object level and name this object soot_
trail.
Go back to the fuse_geo object and set the display flag to FUSE_
OUT. Now you will see the combined fuse geometry when you
render and the new object will be used to generate particles.
116
05 Dive back into the popnet and add a Gravity Force node
under the popsolver. Now if you play the simulation the
particles fall below the ground.
PARTICLE FX
CREATE A SOOT TRAIL
The soot trail is created using particle dynamics. Particles are points that you can
affect using forces such as wind or gravity. Starting with the end of the fuse, you
give birth to points that are then simulated using a number of different techniques.
Particles are simulated using the Dynamics or DOPS section of Houdini then
brought back into SOPS where you can work with them as geometry. In the next
section, you will use particles to create sparks at the end of the fuse.
117
PART SIX
Create Particle Sparks
To create sparks, start by copying the soot particle object and make changes to the new object to generate sparks. These par-
ticles will have shorter lifespan and will be more active. The Spark Trail node will give you the look you need to add sparks to
the shot. You can adjust parameters on this node to get the look you need.
02 Dive into the sparks object. You will make a few changes
to get the network set up to create sparks.
Delete the atttributecreate and color nodes. These are not needed
for this particle network. Rename the null node to SPARKS_OUT.
On the attributeadjustvector node change Amplitude to 1.75.
Add a new Attribute Adjust Vector node above this one. Turn on
Enable Pre-Process and set Constant Value to 0, 1, 0. Now the
particles will rise up before dropping down. Press Play.
118
04 Dive into the popnet and delete the two collisiondetect
nodes. You will not need to worry about collisions at this
point. You will add other nodes back later when needed.
Press Play to see the particles being emitted.
119
PART SEVEN
Blow up the Bomb
For the bomb geometry, a rigid body dynamics simulation will be needed. Start by fracturing the geometry then adding
attributes that will create an explosion. You can then control the speed of the moving parts to art direct the look. Once the
simulation is ready, you will cache out the geometry to work more efficiently as you move on to the PyroFX stage.
120
05 Press Play. Now you have the bomb exploding. Setting
velocity attributes on the geometry feeds into the
simulation which uses the initial velocity of the pieces to propel
them forward.
The manipulation of attributes plays a bit role in many visual effects
setups in Houdini.
09
OUT.
Add a Null node and wire the first output of the fracture_
io node into it. Rename this node EXPLODING_BOMB_
Blow up the Bomb
121
PART EIGHT
Create the PyroFX Explosion
As the bomb explodes there needs to be an accompanying fireball. You will start with a Simple Fireball that works on the GPU
then make changes to create a look that works for the shot. You can also incorporate the parts of the exploding bomb to push
and influence the PyroFX volume in interesting ways.
122
05 Go to frame 200. Select the fireball node. From the
Quick Settings menu in the top right, choose Setup SDF
Collision. This adds a vdbfrompolygons node. This node gets it’s
Voxel Size from the Pyro Solver node.
Add an RBD Unpack node between the file and vdbfrompolygons
nodes.
Add an Unpack node between the rbdunpack and vdbfrompolygons
nodes. On the unpack node, set Transfer Velocity to v. Set the
Display Flag on vdbfrompolygons then press Play to see the collision
geometry.
123
PART NINE
Export the Geometry to USD
To set up the shot for rendering, you need to export the geometry to USD files that can be referenced into the Solaris context.
While you could import the geometry directly, having it cached out as USD will allow you to lock down your sequences then
focus on lighting and rendering in Solaris. For some of these objects, you will add UVs before exporting to prep for texturing.
Inner Loop
02 Go to the Select tool then press 3 to select Edges. Press
w to go into wireframe mode and then press Shift and
double click to select part of the loop at the bottom. Press Shift and
double click to select all four parts. Repeat for the inner loop.
Now go to the loop on the top of the inner sphere and press Shift
Longitudinal
and double click to select. Now pick the latitudinal line that aligns
Loop with the X axis and press Shift and double click to select.
In the Scene View, press tab > Group. Change the Group Name to
Inner Loop uv_edges.
Bottom Loop
124
05 Go back to the Object level then double-click on the
bomb_geo_fracture network. Select the fracture_io node
and press Save to Disk to cache out the geometry with the new
UVs. You won't see them yet because the geometry is packed.
After the fracture_io node and before the EXPLODING_BOMB_OUT
node, add an Unpack node then an Attribute Delete node. On the
attributedelete node, enter name next to Primitive Attributes. Turn
off the Point Attributes section.
This ensures that the sequence comes into Solaris as a single mesh.
The name attribute would break the sequence into individual parts.
125
09 Go back to the Object level then double-click on the
fuse network. Add a USD Export node to the end of the
chain. Rename it fuse. Set the following
Valid Frame Range to Render Frame Range
Output File to $HIP/usd/fuse.usd
Hit Save to Disk.
Scene Import
Another way to get your geometry and simulations into Solaris is using
the Scene Import LOP. This creates a direct connection between the
geometry and objects you are working with and the LOP network. This
approach would require cache LOPs to support motion blur which is an
extra step not needed if you are referencing in USD files.
This tool is going to be used to bring the animated camera from the
object level into the Solaris context.
126
PART TEN
Set up the Shot in Solaris
Learn how to reference all of the USD files into Solaris then import the camera from the object level. Apply materials
to all the elements and start rendering with Karma to evaluate the results. Learn how to add a key light and prepare render
settings to explore the final look of the shot.
127
05 After the effects merge node, add a Prune LOP. Set its
Display Flag. Set the Prune parameter to $F >199. Now
the soot and sparks disappear at this point.
128
10 Select the bomb_mat shader. Under Surface, set the
following:
Base Color to Black [0, 0, 0]
Roughness to 0.7
Under Displacement, turn on Enable Noise Displacement and set
the following:
Noise Type to Alligator Noise
Frequency to 30, 30, 30
Amplitude to 0.01
Roughness to 0.8
RENDER SETTINGS
The Karma Render Settings node adds render settings that become part
of the Scene Graph and will be used to render to the viewport and to disk.
Before you added these settings the viewport settings were being used
when you rendered in the viewport. If you have Karma rendering set up in
the Scene view then Press D to see these settings. If you have render set-
tings in your Scene Graph then they will override the viewport settings.
129
PART ELEVEN
Render the PyroFX
To complete the shot, add the fireball USD file then assign the proper material. Next, you will set up another camera to create
a wide angle shot of the explosion and then render out the two sequences to achieve the final sequence. You can then preview
the results using the Mplay image viewer.
130
05 On the assignmaterial node, add another material
listing and from the Scene Graph drag /fx/fireball to
the Primitives section then click on the Material Path arrow and
choose Pyro_Shader.
Set the Persp view menu back to Karma.
Cameras shelf.
Set its Primitive Path to /cam/$OS and its name to cam2.
131
10 Lock the Camera to View and tweak the viewpoint to get
the shot you are looking for. Check it at various points
between frame 210 and 240. Turn the Lock the Camera to View
option off when you are ready.
CONCLUSION
You have now built a destruction shot using
particles, rigid body dynamics and Pyro FX. You
built the complete project from scratch and have
experienced many of the tools and techniques
that Houdini artists use on a daily basis.
You have also had a chance to bring your
work into Solaris where you used USD to set
up the scene graph for rendering to Karma.
Now you can take these skills and begin
exploring your own Destruction FX shots.
HOUDINI FOUNDATIONS
132
HOUDINI FOUNDATIONS
TERRAIN
GENERATION
Houdini includes a dedicated toolset for generating and shaping terrains. These tools represent terrain
using 2D volumes, called heightfields, where each voxel contains the height of the terrain at a particular
grid point. The Houdini viewport lets you visualize 2D heightfields as 3D surfaces. You can also set up mask
fields that can be used to focus your edits to specific parts of the terrain. In this lesson, you will build up
terrains using patterns, noise and erosion then export the results for use in a game engine.
LESSON GOAL
Create a landscape using the Heightfield tools in Houdini and bring it into Unreal Engine or Unity.
LESSON
COMPATIBILITY
Written for the features in Houdini 19.5+
Houdini Core ✔
Houdini FX ✔
Houdini Indie ✔
Houdini Apprentice ✔
Houdini Education ✔
04 Use the radial menu to choose Deform > Distort. Set the
HOUDINI FOUNDATIONS
following:
Amplitude to 40
Element Size to 220
This node moves the existing values around by advecting them
through a noise field. You can use the parameter values proposed
here or explore on your own to get a look that you like better.
Houdini’s procedural approach would even allow you to come back
later and change the parameter values to see how different settings
affect the outcome.
134
05 Use the radial menu to choose Deform > Noise. Set the
following:
Amplitude to 10
Element Size to 20.
Select the last four nodes in the Network view then click on the
Network box icon to add a Network box. Adjust its edges to shape
the box then click in the top bar and name it Shape the Terrain.
Network boxes make it easier to read the network especially if you
share your file with other artists.
07 From the radial menu, choose the Erode > Slump. Set
Spread Iterations to 75.
The heightfield_slump node creates a type of erosion that moves
unstable piles of rubble into a more stable configuration. It affects
the Mask layer and also outputs to the Flow and Flow Direction
layers.
If you MMB-click on the node, you can see which layers are being
created. You can MMB-click on an earlier node in the chain for
comparison.
HEIGHT LAYERS
The data passing through a geometry network can contain multiple height fields.
In the terminology of Houdini’s terrain tools, these are called height layers. For
example, a tool might use one height layer to represent bedrock and another to
represent loose soil on top. The default height layer is named height.
Each voxel contains a “selected-ness” value, called a mask layer. Most terrain
nodes take a second input that can contain a mask layer to control which parts
of the terrain the node will modify. The default mask layer is named mask and is
displayed as a red tint on the 3D surface.
135
PART TWO
Add and Visualize Mask Layers
You can set up layers on your terrain by first populating the mask then copying that information
to a particular layer. You can do this more than once to add more layers. These layers can be
used later to visualize key aspects of the terrain.
02 From the radial menu, choose Layer > Copy Layer. Leave
the Source set to Mask and set the Destination to slope.
By copying the mask to a new layer, it leaves you free to clear the
mask and use it for other tasks.
From the radial menu, choose Mask > Clear Mask. This again clears
the mask layer so that you can use it to create more layers in your
setup. Add a network box to organize your nodes and call the box
Create Slope Mask.
04 From the radial menu, choose Layer > Copy Layer. Leave
HOUDINI FOUNDATIONS
136
VISUALIZING HEIGHTFIELDS
To visualize your heightfields, you start with a ramp that is assigned to
the overall height of the terrain. You start by Computing the Range that
the ramp will apply to then you can adjust the colors in the ramp itself
to visualize your landscape.
You can then add colors to the various layers that will sit on top of the
ramp. This lets you create a richer look for your scene.
137
PART THREE
Remap and Erode the Terrain
Right now some of the heightmap is below 0 and some is above. You are going to use a Remap
node to change the range and then use the ramp on that node to add a ridge around the moun-
tain. You will then erode the landscape to add new layers to the terrain.
138
PART FOUR
Scatter points on the Terrain
To add trees and rocks, you will mask out the new plateau area then set up a special terrain
scatter that will use this mask. These scattered points will then be used to copy instanced cones
designed to represent trees. These will be replaced later in Unreal.
139
PART FIVE
Open the Terrain in Unreal
To bring the landscape into game engines such as Unreal Engine or Unity, start by creating a Houdini Digital Asset. Once
you have the Houdini Engine plug-in set up properly, then this asset can be loaded into the game editor with the copied
tree stand-ins importing as instanced objects. When you import the terrain into Unreal Engine, the heightfields will be
recognized as a landscape. You can also import the asset into Unity using the Houdini Engine plug-in.
02 Open Unreal Engine and from the main panel click on the
New Project tab and choose the Third Person template.
Click Create Project. When it opens, delete the default geometry
so that it doesn’t get in the way of your terrain.
From the Content Browser, click Import to Game and find the
terrain.hda asset file. Drag the asset from the Content Browser to
the 3D workspace. Set the ThirdPersonCharacter up to a Translate
Z of around 10,000 then press Play and walk around the terrain.
CONCLUSION
HOUDINI FOUNDATIONS
You can also use the terrain layers to create texture maps that you can work
with to define the look of your landscape. You can do this using the Heightfield
Output node. You can then use these channels to build a material in the Unreal
Engine that references the features of the landscape.
This quick look at the terrain features in Houdini will open up a wealth of possi-
bilities for artists creating landscapes for their games then populating them with
details such as rocks and trees.
140
CHARACTER FOUNDATIONS
LESSON GOAL
To rig, animate and add fur to the fur dude creature.
LESSON
COMPATIBILITY
Written for the features in Houdini 19.5+
Houdini Core ✔
Houdini FX ✔
Houdini Indie ✔
Houdini Apprentice ✔
Houdini Education ✔
04
CHARACTER FOUNDATIONS
In the Network view, press tab > Skeleton and place the
new node next to the File node. Set it’s Display Flag. Set
the file node’s template flag so that as you are working with the
skeleton node the geometry is visible as a grey wireframe.
Make sure the Handle tool is selected. In the top bar, set Joint
Placement to Freehand. This will draw on the construction plane
without taking the geometry into account. Click to place your first
joint just above the leg and then place six more joints as shown in
this picture.
Start Here MMB-click to stop drawing joints.
142
head
05 In the top bar, set Mode to Modify. Now you can edit the
joints instead of drawing them. Click on the first joint and
in the top bar set its Name it COG.
neck2 In the Parameter pane, click on the + sign in the tab area. From this
neck1 choose New Pane Tab Type > Animation > Rig Tree. This brings up
spine3 a pane that shows your skeleton joints. You can double click on the
spine2 second joint and name it spine1. Now either use the Scene View or
spine1 the Rig Tree to name the rest of the joints as shown.
COG
COG
pelvis 06 In the top bar, set Mode back to Create. By default
it will try to draw from the end of any selected joint.
MMB-click to stop this drawing action. Now click on the COG
l_hip
joint in the Right view then draw a pelvis joint just below it.
In the Scene View, press spacebar-b to go back to a four view In
the Front view, draw a hip joint on the left side of the character.
pelvis
07 Now go back to the Right view and draw the final four
joints for the leg as shown here.
l_hip Go back to Modify mode then rename the joints using either the
Rig Tree or by selecting and naming the joints in the top bar. After
the pelvis, all the other joints will have a “l_” prefix since these joints
l_knee
will be used for the left leg.
l_ankle
l_toe l_ball
Level
The KineFX tools in Houdini offer a joint-based workflow that takes place at
the geometry [SOP] level. Houdini’s other character workflow is bone-based 4 Joints 3 Bones
and in this case you work primarily at the object [OBJ] level.
In the KineFX workflow, joints are basically just points on a curve and this
opens up lots of opportunities to use sop-level tools to manipulate rigs. Here
you are going to learn about tools designed specifically for rigging characters
and creatures.
143
PART TWO
Capture the Geometry
Rigging a character involves capturing geometry to the skeleton joints in such a way that rotating the joints deforms and bends
the geometry. Houdini uses a biharmonic capture method that gives great results with your first capture so that you can start
testing out your rig right away. Later you will paint capture weight s to refine the results to work with your character.
02 In the Network view, press tab > Bone Deform. Wire the
three outputs of jointcapturebiharmonic into the three
inputs. Set the Display flag on bonedeform.
In this lesson, you are capturing teeth, claws and the eye which
you probably don’t want to deform. You will split these out later to
capture them using a different method.
03 Next press tab > Rig Pose and place down the
node. Move it over the third line connecting
jointcapturebiharmonic and the third input on bonedeform to add
it into the chain. This is where animation goes on the rig and the
rigpose will be used to rotate joints and can also be used to set
keyframes.
04
CHARACTER FOUNDATIONS
Select the rigpose node and make sure the Handle tool is
active in the Scene View. Select and rotate various joints
to test out the deformation. You can reset this later so feel free to
explore.
144
PART THREE
Add More Bones
It would be nice to have more bones in the mouth area. The procedural networks in Houdini let you to go back and add the
joints and all the other nodes including the biharmonic capture will update to reflect the changes. This gives you flexibility
when first setting up your creature’s rig.
neck1
lower_mouth
04 Set the Display flag on the bonedeform node and turn off
the Template flag on the file node. The geometry will be
reconfigured then captured using the new bones. Select the rigpose
node and select the Handle tool.
Add More Bones
Click on the new jaw joint and rotate it down. This works but it
manipulates both the lower lip and upper lip. It would be better if
it only affected the lower lip. To fix this you will paint the capture
weights in a later section of the tutorial.
145
05 Set the Display flag back to the skeleton node and the
Template flag on the original File node.
Select the skeleton node and turn on the Handle tool. Set Mode
to Modify. Click on the head joint and using Tweak Mode, lower it
until it aligns with the eyeball.
Set Mode to Create. Click on the head joint and then click a new
joint right in the center of the eyeball. Switch to Modify mode and
Name this joint eyeball.
Switch to Modify mode and Name these joints upper_lid and lower_
lid. You will use these joints to rotate the eyelids during animation
but they need to also be at the center of the eye.
JOINT ORIENTATION
With a joint based system where each joint is a point, the joint orientation is
critical because it defines how the joint will rotate during forward kinematics.
KineFX has tools that allow you to point along the chain to the next joint or
you can rotate each joint by hand using the child compensate option to make
sure that re-orienting the joints doesn’t affect the other joints in the chain.
146
PART FOUR
Joint Orientations
When you animate the character, the orientation of the joints plays a significant role in how you manipulate the rig. At this
point, you will orient some of the joints by hand and then use a Re-orient joints node to point all the other joints down the -z
axis. Sometimes when you evaluate your rig at a later stage, you may need to come back and tweak the orientations.
The results don’t look any different than before you oriented the
joints but it will affect how you pose and manipulate the character
when you are animating.
147
PART FIVE
Attach Capture Geometry
Right now you are using the skeleton joints to capture geometry and assign capture weights to each point
on your character. To manage this with more control, you can attach curves to the joints that will extend the
influence of that joint. This provides a method for achieving your goals as quickly as possible.
01 In the Network View, press tab > Split and place the node
between the File node and the jointcapturebiharmonic
node. The first output of the split node should be wired into the
first input of the jointcapturebiharmonic node.
Click on the pull down menu in the Group field and choose the
fur_dude_body and fur_dude_tongue groups. These are now feeding
the first output of the split node and all the remaining pieces such
as the eyeball, teeth and claws are going out the second output.
You will use a different method to bind those to the skeleton after
painting weights on this geometry.
02 In the Network View, press tab > Visibility and place the
node between the jointcapturebiharmonic node and the
bonedeform node. Click on the pull down menu in the Group field
and choose the fur_dude_tongue group.
This node hides the selected geometry but does not remove it.
This ensures that point numbers and primitive numbers don’t get
changed which is important when working with the paint capture
weight tool. You don’t want to change this information every time
you hide some geometry during this process.
04
CHARACTER FOUNDATIONS
Press tab > Curve from Edges and the selected edge
will be extracted from the geometry. Rename this node
lower_lip.
The curvefromedges node gets placed in between the file
and jointcapturebiharmonic nodes. Move it to the side and
then reconnect the file node output to the first input of the
jointcapturebiharmonic node. This branches the curvefromedges
node off to the side.
148
05 Press S to get the Select tool and 3 to go to Edge
selection. Select an edge on the upper lip on the left then
press Shift-A and select an edge on the other side.
Press tab > Curve from Edges and the selected edge will be
extracted from the geometry. Rename this node upper_lip.
Branch this node off the same as you did with the other one.
06 Press tab > Merge Packed and place this node down
underneath the two extracted curve nodes then feed the
output of those nodes into the mergepacked node.
Press tab > Attach Capture Geo. Add this node to the network
then feed the skeletonmirror node into the first input and the
mergepacked into the third input.
149
PART SIX
Paint Capture Weights
The biharmonic capture added weights to the character’s geometry that are associated with the different skeleton bones. You
can now use a new node to adjust the capture weights using a brush workflow. For this creature, the goal will be to get the top
of the mouth to not be influenced by the lower mouth joint and to tweak how the feet area is weighted.
01 In the Network View, press tab > Joint Capture Paint and
place the node just above the bonedeform node with all
three connectors getting connected. Set its Display Flag then click
on the pull down menu next to Target Joint and choose the neck2
joint.
In the Scene view, you will also see a big round paint icon on your
cursor which you can use to paint weights. Paint on the head area
and this part of the geometry will be captured to the neck2 joint.
02 You want to capture the head and the upper lip area to
the neck2 joint. The geometry will appear red when it is
at its strongest.
Use big strokes for the top of the head then use the Scroll wheel on
your mouse to reduce the brush radius or go to the Brush tab in the
Parameter pane to change the radius.
04
CHARACTER FOUNDATIONS
150
05 Select the jointcapturepaint node. Click on the pull down
menu in the Capture Region field and choose the jaw
joint. Press F and choose Subtract to take away influence of this
joint on the top of the head and eye area.
You can also use this method to remove the influence of the jaw
and the lower_mouth joints on the belly. That way when the mouth
moves the belly isn’t affected too much.
06 From time to time, go back to the and test out the jaw.
Once you have it no longer influencing the head area
then you are good to go. You can also go back to smoothing to
clean things up once you are finished.
You can now paint weights for other joints in the skeleton. The
Biharmonic should have done a good job on the legs and feet but
you can test the rig using rigpose then paint weights to refine the
results.
07 Select the toe joints and make sure that the ends of the
feet are captured to those joints. Later you will use a
reverse setup and having the geometry attached to the toes .
151
PART SEVEN
Capturing the Rigid Geometry
Earlier you split out the eyes, teeth and claw geometry. Now you are going to pack this geometry then assign each part to a
joint using the capture packed geometry node. This is the equivalent of parenting each object to the skeleton since parenting
isn’t an option at the geometry level when using KineFX.
01 In the Network View, press tab > Name from Groups and
place the node between the File node and the split node.
Change the Group Mask to *. This will turn all of the groups into
name attributes.
To see this, click on the Geometry Spreadsheet Tab and click on the
Primitives button at the top left. Scroll down to see that there is a
name attribute and the group names are used as the values for all
of the geometry.
02 In the Network View, press tab > Pack and place the
node down to the right of the split node. Wire the second
output of the split node into the pack node and set its Display Flag.
You can see the body parts in the Scene View.
Turn the Path Attribute checkbox to Off then the Name Attribute
checkbox to On and set Transfer Attributes to name.
Using the arrow in the top right of the Network view, choose Split
In the Geometry Spreadsheet, you can see the 8 packed primitives.
These can now be captured to the skeleton as rigid geometry.
04
CHARACTER FOUNDATIONS
152
05 Click the plus sign and then the arrow next to Capture
Geo and in the Scene view, shift select the fur_dude_
upteeth and fur_dude_gums . Press Enter to accept. Now click on
the arrow next to Joint. Select the neck2 joint and press Enter.
Repeat these steps two more times to associate the following:
fur_dude_rclaws to r_toe
fur_dude_lclaws to l_toe
fur_dude_eye to eyeball
fur_dude_uplid to upper_lid
fur_dude_lowlid to lower_lid
08 In the Network View, press tab > Unpack and place the
node down between the capturepackedgeo and the merge
nodes. Set Iterations to 2 and Transfer Attributes to * ^Cd. The *
grabs all the capture attributes and the ^Cd make sure that you do
not remove the original color attribute. Now both sides are using
point colors and the rig looks correct.
Now you can select the rigpose node and then select and rotate
joints in the Scene view. You can see that all the captured geometry
is now working together. Capturing the Rigid Geometry
Save your work.
153
PART EIGHT
Create Capture Rig Digital Asset
The captured geometry and the skeleton can now be wrapped up into a digital asset that can be used as the foundation for the
animation rig. To start, you will export the geometry with its capture weights and the skeleton then embed these into the digital
asset file. This will help make the capture rig more efficient when animating the character.
04
CHARACTER FOUNDATIONS
Select the two File nodes then from the Assets menu
select New Digital Asset from Selection. Set the
following:
Operator Name to fur_dude_capture_rig
Operator Label to Fur Dude Capture Rig
Save to Library to: $HIP/hda/fur_dude.hda
Click Accept to create the HDA file. An Edit Operator Type
Properties window pops up. Set Maximum Outputs to 3 and click
Accept. Rename the subnet to fur_dude_capture_rig.
154
05 Double click on this node to dive into the subnet. Press
tab > Output and place an output node beneath the fur_
dude_geo_capt File node. Wire the File node into the output node.
Rename it CaptureGeo.
Alt-drag twice to create two new Output nodes. Name the second
one RestSkeleton and set its Output Index to 1. Name the third one
AnimSkeleton and set its Output Index to 2. Wire the fur_dude_skel.
bgeo File node into both the second and third output nodes.
Set the Display Flag on the CaptureGeo output node.
08 Go up one level where you will see the capture rig with
three outputs. Press tab > Bone Deform and place this
node underneath. Wire the three outputs of the fur_dude_capt_rig
into the three inputs of the bonedeform node. Now add a rigpose
node in the middle of the third chain. Set the Display Flag on the
bonedeform node.
Select the rigpose node and make sure the Handle tool is active.
You can again see all the skeleton joints. Pose the skeleton to test
that the deformations are working in the same way as before. CREATE CAPTURE RIG DIGITAL ASSET
HDA
This network of nodes was saved as a Houdini Digital Asset or HDA. This is a
file on disk that is easy to share. The capture rig is an asset that is referenced
off disk and in the next section, you will build the animation rig with the cap-
ture rig nested inside it. Both of them along with the bgeo files will be stored
in a single HDA file.
Changes made to the HDA file on disk will update instances of the asset being
worked on by animators in their scene files.
155
PART NINE
Create the Animation Rig Asset
You are now going to create a second digital asset that has the capture rig nested inside it. This new asset will be the one that
can be animated to create the final motion of the character. This new asset will contain all of the rigging tools such as inverse
kinematics and aim constraints that assist with animation. In order to test these controls as you add them, you will set up a test
version of the rig that is locked and visible in a second Scene view pane.
01 Select the three nodes then from the Assets menu select
New Digital Asset from Selection. Set the following:
Operator Name to fur_dude_anim_rig
Operator Label to Fur Dude Anim Rig
For Save to Library, click on the browse button then click on $HIP
the double click into the HDA directory. Select the fur_dude.hda
file then click Accept. It is now set to: $HIP/hda/fur_dude.hda
Click Accept then Accept again in the Type Properties panel. This
adds the new asset definition to the same HDA file. Rename the
subnet to fur_dude_anim_rig.
04
CHARACTER FOUNDATIONS
156
PART TEN
Add More Control Joints
To provide more flexibility with the control rig, you can add joints such as a root joint for the whole skeleton, heel joints for a
reverse foot setup or a look-at point for you to target with your eyeball. These joints will have the same names as the ones in
the original rest skeleton and that will ensure that they are used to drive the motion on the character.
l_heel
157
04 Add a Parent Joints node. Click the plus sign twice. Click
on the arrow next to Joint1 and in the scene view click
on the COG joint. Press Enter (with your cursor over the Scene
View) to accept. Now use the arrow next to Parent1 and select the
furdude_main joint.
For the second entry, click on the arrow next to Joint2 and in the
scene view click on the eye_target joint. Press Enter (with your
cursor over the Scene View) to accept. Now use the arrow next to
Parent2 and select the COG joint.
07 From the Assets menu, select Save Asset > Fur Dude
Anim Rig. This saves the changes into the asset definition
which will update on the test_rig. You still can’t do anything with the
test_rig because there are no parameters promoted to the top level.
You are now going to setup the main controls and promote
parameters to start bringing the test_rig to life.
CHARACTER FOUNDATIONS
158
PART ELEVEN
The Main Controls
To add kinematics, you need to break the current hierarchy where the feet are under the COG. You can break off a few joints
and reparent them to build the hierarchy you need. This reparenting happens off to the side then you will blend the results back
into the original skeleton hierarchy which is important to make sure the bone deform functions properly.
159
CONTROL GEOMETRY
When you add a joint to a rigpose, it can be promoted to the top level of the
asset to select and animate. The Attach Control Geometry node lets you as-
sign geometry you build to different parts of the rig to make it easier to select
joints for manipulation. You can create any shape you want for these controls.
A good example where this will help is the eyeball and the two lid joints which
overlap. Control Geometry will make it easier to select these when you set up
that part of the rig. For now you will use it for the main controls.
05 From the Assets menu, select Save Asset > Fur Dude
Anim Rig. This saves the current setup. In the Network
view, Press 1 to navigate back to the test_rig where you can see
that only the five joints listed in the rigpose are visible.
You cannot select and move them because the parameters haven’t
been promoted yet.
08
CHARACTER FOUNDATIONS
Select the rigpose node then select the four joints using
the control geometry. To make this work on the test rig
you need to promote parameters.
From the Assets menu, select Edit Asset Properties > Fur Dude
Anim Rig. Click on the Parameters tab.
On the rigpose node go to furdude_main, RMB-click on Scale and
choose Lock Parameter. Now drag the on Translate and move it
over to the Parameter list under root. Set it’s Label to Main Translate.
Repeat for the Rotate parameters and name them Main Rotate.
Click Accept to finish and save the results to the asset.
160
09 In the Network view, press 1 to navigate back to the
test_rig. The test rig now updates to show the new
controls - as long as you have the Handle tool active. Select the
furdude_main joint using its control geometry and now a transform
handle appears that you can use to move the rig around.
Undo when you finish to put it back at the starting point..
Lining up nodes and adding network boxes are extra steps that are worth the
added effort. The more organized your network is, the easier it is for you to
work with later or for others to read what your intentions are.
You can also add comments to each node and display them in the network or
you can use sticky notes to explain larger blocks of nodes. Communication is
always beneficial when creating networks in a team setting.
161
PART TWELVE
Inverse Kinematics for the Legs
To animate a character, Inverse Kinematics allow you to set up the legs so that moving either the feet or the hips causes the
knee to bend appropriately. You are again going to pull out some joints from the main skeleton and set them up using KineFX.
You will again blend the results back into the original hierarchy.
04
CHARACTER FOUNDATIONS
Add a Rig Pose node in-between the parent node and the
ikchains node. Click on the ankle joints and move them
around to see the Inverse Kinematics at work. Because you used
Match by Name the ankle joints are acting as the end effectors for
the IK chain.
You will see some flipping as you move the ankles. This is because
the knee joints are being used as the twist effectors and they are
not positioned very well - you need to move them in front of the
legs.
162
05 Add another Rig Pose node in-between the first rigpose
node and the ikchains node. Press the Shift key and select
both the knee joints and move them in front of the character. Now
any flipping you had in your IK will have flipped back.
Name the first rigpose node to rigpose_ankles and the second one
to knee_offset.
06 You can now go back to the rig_ankles node and test out
the ankle joints. They don’t flip now that you have the
knees offset. You can also go to the knee_offset node and move the
knees to act as a twist effector for the IK chain.
08
surface.
You can now go back to the rigpose_ankles node and test
out the ankle joints to see how it affects the captured
At this point, you are not going to save the digital asset to push
these changes to the test rig. The rigpose_ankles node will not be
how you control the ankles in the final rig. You are now going to
build a reverse foot setup that will allow you to drive the whole foot
setup and then the whole leg setup will be saved to the asset.
Inverse Kinematics for the Legs
FK/IK BLENDING
There are a couple of ways to blend IK and FK but you wont’ be using
them in this lesson because you will only be using IK for the legs. To get
blending to work, you would need to promote parameters for the leg
joints to the asset using a rigpose then you could either use the Blend
attribute on the IK Chains node or use a Skeleton Blend between the
IK solution and the rotating joints in the rigpose. If Fur Dude had arms
then it would make more sense to set this up.
163
PART THIRTEEN
Reverse Foot Setup
To control the feet, you will create a classic reverse foot setup where the heel becomes the root then the toe, ball and ankle are
parented to that. This can be easily accomplished in KineFX and the results blended back into the original skeleton. In this case
you will completely rebuild the right foot but since the joint names align everything works properly.
02 Add a Parent Joints node and set its Display flag. Click
the + sign to add a Joint and set Joint1 to *. Leave
Parent1 left blank.
Branch a second Parent Joints node and set its Display flag. In
the Scene View click on the l_heel joint then the l_toe joint then
the l_ball joint then the l_ankle joint. MMB-click to finish. In the
Parameter pane they will be displayed in the following order:
Joint1 to @name=l_toe | Parent1 to @name=l_heel
Joint2 to @name=l_ball | Parent2 to @name=l_toe
Joint3 to @name=l_ankle | Parent3 to @name=l_ball
04
CHARACTER FOUNDATIONS
164
05 Set the Display flag on the ikchains node. Now go to
the rigpose_foot node and select the l_heel joint. Now
when you move it you are moving the whole foot and the leg chain.
Select the l_toe joint and rotate it. Again the reverse foot works and
the IK chain is activated.
When you finish press Clear to remove all the joints. You will add
some of them back later. For the heel joints, you want to use the
heel joints you set up earlier as part of the main controls.
There is a Reverse Foot SOP that you could use to control the
feet and drive the leg kinematics. The Reverse Foot SOP has
sliders for controlling the roll of the foot an individual controls
for all the parts. But you are not using it in this lesson.
Instead you will create a hand-built reverse foot solution to learn
how joints can be manipulated to give you the control you need.
165
09 Now add a Skeleton Blend between the ikchains and
skeletonblend_ik node you were just using. Rename the
node to skeletonblend_toes and set the World Space checkbox to
On and weight1 to 1. Now feed the output of the rigpose_foot node
into the second input. Click on the arrow next to Group and select
the toe and ball joints. Press Enter.
Now the toe will point in the right direction if you roll the ball joint.
10 Select the rigpose_feet node. Make sure only the left and
right ball and toe joints are listed on this node. For all of
them, RMB-click > Lock Parameter on the Translate, Rotate and
Scale parameters. Then go to the Rotate Y for each of them and
RMB-click > Unlock Parameter.
Now if you select any of these four joints you will only get a Rotate
Y handle.
166
PART FOURTEEN
Promote the Leg and Spine Controls
To make all of the leg and spine controls available to the animator, the parameters need to be promoted to the top level of the
asset. This is an important step that is always needed to give the animator the control they need. This also means that you can
keep certain parameters hidden that you don’t want animators to work with.
01 From the Assets menu, select Edit Asset Properties > Fur
Dude Anim Rig. Click on the Parameters tab.
Create four folders. Name them Head, Body, Legs and Main. Drag
the COG parameters onto the Body folder and the Main parameters
onto the Main folder.
Put two folders inside the Legs folder and name the Left and Right.
Add the Left Heel parameters into the Left folder and the Right Heel
parameters into the Right Folder.
167
05 Branch off a Delete joints node from the skeletonblend_ik
node and set its Display flag. Rename the node
deletejoints_spine.
Click on the arrow beside Group and in the scene view select the
spine1, spine2, spine3, neck1, neck2 and jaw joints. Press Enter then
set Operation to Delete Non-Selected.
07 Set its Display Flag then in the Scene view press and hold
the S key then select all the joints. This will add them to
the rigpose list.
Lock the Translate and Scale parameters for all of these joints. You
will only be rotating them.
08 From the Assets menu, select Edit Asset Properties > Fur
Dude Anim Rig. Click on the Parameters tab.
Drag the neck1, neck2 and jaw onto the Head folder and name
them Neck 1 Rotate, Neck 2 Rotate and Jaw Rotate. spine1, spine2
and spine3 onto the Body folder and name them Spine 1, Spine 2
and Spine 3. Add a separator between the COG parameters and the
spine parameters.
Click Accept. This will save the new controls to the rig. You can now
explore them using the test_rig.
CHARACTER FOUNDATIONS
SPINE CONTROLS
For this rig, you set up the spine using joint rotations. This is known as
Forward Kinematics and just like other parts of the rig, you pulled these
joints out from the main skeleton then set them up in a Rig Pose to be
promoted to the top level.
You did not use control geometry for these parts because the joints are
easy to select in the Scene view. You don’t need to have control geo for all
the joints.
168
PART FIFTEEN
Eye Controls
The next step is to set up the eyelids with control geometry to make it easier to select these overlapping joints. You will also
set up the eye target joint as a look at for the eyeball using a different section of Houdini called VOPS. When these parts are
rigged, you will again promote the appropriate parameters to the character’s asset.
169
05 From the Assets menu, select Edit Asset Properties > Fur
Dude Anim Rig. Click on the Parameters tab.
Lock the Translate, Rotate and Scale parameters for all of these
joints. Unlock the Rotate X parameters. From the rigpose_eyelids
node, drag the Rotate X from the upper_lid to the Head folder. Set
the Range from -10 to 30. Next, drag the Rotate X from the lower_
lid to the Head folder. Set the Range from -20 to 20.
Add a Separator to divide the eye controls from the head controls.
Click Accept. This will save the new controls to the rig. You can now
explore them using the test_rig.
09
CHARACTER FOUNDATIONS
170
10 Now press tab > Look At (KineFX) and place the node
in the middle. Wire the xform output on the eyeball
getpointtransform node into the from input on the lookat node. Wire
the xform output on the eye_target getpointtransform node into
the to input on the lookat node. Wire the outxform output on the
lookat node into the xform input on the eyeball_set node.
The eyeball geometry flips. Select the lookat node and set the Look
At Axis to Z to match the orientation you set on the rig when it was
first set up.
RIGGING IN VOPS
The Rig Attribute VOP offers a range of different solutions beyond what you have seen in
this lesson. IK chains can be built using this approach and the IK chain SOP you used earlier
has one of these inside it.
EYE CONTROLS
You can also use VOPS to set up a curve solver, realistic shoulder, reverse foot and more.
The ability to drag joints from the Scene view to the VOP network is a unique workflow that
helps speed up workflow.
171
PART SIXTEEN
Animate the Rig
It is time to keyframe a walk cycle for the fur dude character. This will involve new tools such as the Channel List to pin down
channels for blocking out the motion. The results will be a quick and dirty walk cycle designed to see fur dude in action. The
goal is to map out a basic keyframe workflow to learn a bit about how to animate KineFX rigs.
172
04 Set the Timeline to start at 10 and end at 50. Go to
frame 10. With all the channels pinned, press k to set
another keyframe. You want to keyframe first then pose. Any
posing will update the value for that keyed frame.
You want to create a pose where the left heel moves forward
and rotates up. The COG will go down a bit and the right ball rolls
forward.
173
09 Continue this pattern up until frame 50. You can repeat
the same poses to keep the walk cycle moving forward.
At this point you can go back and tweak any pose to refine the
motion. You can also explore creating some overlapping action
using extra keyframes. You can animate some eye movement and
maybe the eyelids blinking. You can also go beyond 50 frames if
you would like a longer animation.
174
PART SEVENTEEN
Add & Groom the Fur
Fur dude gets his name for a reason and you are going to work with a variety of grooming tools to add and shape the hair. Using
a desktop designed for grooming, you will add frizz, clumping and hair dynamics which will simulate as fur dude walks. The end
result will be ready to be exported for rendering.
02 Now move the time slide forward a bit. One object has a
static version of fur dude and the other is animated. Click
the Add Fur button . Select the fd_rest object and press Enter.
Now select the fd_anim object and press Enter. Turn off the Display
Flag on fd_rest_anim, fd_rest_deform and fd_rest_hairgen.
Turn on the Display flag for fd_rest and fd_rest_groom.
175
05 From the Hair Tools shelf, click on Clump Guides. Set
Clump Size to 0.02 to Tightness to 0.5.
Next change the Clump Profile so that it stays high for a bit longer
then tapers off near the end.
Now go to the Object level and turn off the display on the fd_rest
and the fd_rest_groom and turn on the display on the fd_anim and
fd_rest_sim and fd_rest_hairgen.
Select the fd_rest_groom node and set Density to 20000.
06 Select the fd_rest deform node and from the Hair Tools
shelf, click on Simulate Guides. On the fd_rest_sim node,
go to the Vellum Constraints tab and under Bend set Stiffness to 5.
Alt-drag on the fd_anim node to make a copy and rename it
fd_collision. Dive into this node and on the blast node set Delete
Non Selected to Off. Add the tongue, upper teeth and gums to the
Group selection then add a Null node and name it COLLISION_OUT.
At the object level, select fd_rest_sim then under Vellum Collisions,
set External Collisons to On then set Collider SOP to ../fd_collision/
COLLISION_OUT.
07 Click on the Caching tab and set Set Valid Frame Range
to Save Frame Range. RMB-click on the Start/End/Inc
parameter and choose Delete Channels. Set the Start to 1 and the
End to 50. Click Save to Disk to run the simulation.
Now set the Load from Disk checkbox to On. The cache will now
be used to define the fur instead of the hair calculating for each
frame.
HAIR BRUSHES
The grooming desktop also has hair brush tools that let you work interactively
on the character’s surface. You can lengthen, smooth, cut and extend hair.
These tools were not needed to set up fur dude’s grooming but later you may
want to explore them to further style the final look.
176
PART EIGHTEEN
Set up an Render the Shot
To render the shot, you will reference the USD files into the Solaris Stage then add a backdrop. Solaris is a Houdini context that
uses LOP nodes to set up a USD Scene Graph. Next, you will import the fur then add and position a camera and a light. The
Karma renderer will then be invoked to create a preview render of the shot then render out the animated sequence.
177
USD SCENE GRAPH
When working in Solaris, the geometry and materials you add using
LOP nodes are added into the Scene Graph and converted to USD.
When you add a light and a camera, they will also become part of the
USD Scene Graph.
It is not necessary to completely understand USD to light and render
in Houdini as an artist but once you start thinking about the pipeline of
your project, USD will become a useful tool in managing your shots.
05 In the Network view, press tab and type out SOP Import.
Click to place the node. Rename it hair. Set Import Path
Prefix to /char/$OS. Click on the node icon net to SOP Path and
navigate to the fd_rest_hairgen node.
Add a Merge node in-between the furdude and materiallibrary
nodes. Wire the hair node into it.
07 In the Network view, press tab and type out Grid. Click
to place the node. Rename it backdrop and wire it into
merge. Set Import Path Prefix to /geo/$OS. Double-click on the
backdrop node to dive down to the geometry level.
Select the Grid node and set the Size to 50, 50 and Rows and
Columns to 10. RMB-click on the grid node’s output and type
Bend. Place the bend node and set its Display Flag then set: Bend
to 75, Capture Origin to 0, 0, -10, Capture Direction to 0, 0, -1, and
Capture Length to 10. RMB-click on the bend node’s output and
type Subdivide. Set its Display Flag then set Depth to 2.
08
CHARACTER FOUNDATIONS
178
09 Use your view tools to look at furdude from the front.
From the LOP Lights and Camera shelf, Ctrl-click on the
Camera tool. This adds a camera node into the network and you are
now looking through the camera in the Scene View.
Press the Lock Camera/Light to View button so that view changes
can be used to reposition the camera. Now Tumble, Pan and Dolly
in the Scene View to reposition the camera so furdude starts on the
left and the moves to the right. Scrub the timeline to make sure the
camera works for the whole sequence.
KARMA RENDERER
You are now going to render the sequence using Houdini’s renderer Karma. Karma is
designed to render USD and is known as a Render Delegate. At first you will render in the
Scene View. Press d in the Scene View to bring up display options to control your rendering.
You can turn on a denoiser, set Pixel Samples and define the Image Resolution.
Later when you set up a Karma LOP, there will be render settings on that node that you will
use to create the final output being saved to disk.
179
13
sequence.
When you finish, choose Render > Mplay > Load Disk
Files and open up the rendered images to review the final
Later you can branch off another Karma node to up the resolution
and render settings for your final rendering. It is always good to
complete test renderings at a lower resolution first to make sure
that everything is working the way you expect it to.
14 If you want to tweak the hair and fur settings, you can pin
the Scene View to the LOP network then go back to the
object level and from the Simulate Guides node, set the Load from
Disk checkbox to Off. This will allow any changes to flow through
to the final rendering.
Here you can see that the hair was shortened and made much
frizzier. You can do anything you want. When you are finished be
sure to re-cache and then turn Load from Disk back to On.
CONCLUSION
You have now rigged, animated and rendered the Fur Dude char-
acter using the KineFX tools in Houdini. Along the way you have
touched on various important steps including the creation of a
capture rig then the layering of a animation control rig on top
of that. You have packed up the character into a Houdini Digital
Asset and then keyframed a traditional walk cycle.
You then added fur with various grooming tools then rendered
using Karma. This gives you a complete workflow for creating
a shot using this character. You can then go back and refine any
CHARACTER FOUNDATIONS
180
HOUDINI FOUNDATIONS
PROCEDURAL ASSETS
FOR UNREAL
To create game assets using Houdini’s node-based workflow, it is important to start learning how to think
and work procedurally. In this lesson, you will learn how to create game assets using procedural nodes and
networks then deploy them directly into Unreal using the Houdini Engine.
Along the way, you will get to use different aspects of Houdini’s user interface. You will learn how the
different UI elements work together to support you as you build your game assets.
This lesson was completed using Unreal Engine 5. Note that while the lesson focuses on Unreal, you can
import the same assets into Unity using the Houdini Engine.
LESSON GOAL
To create assets that can be imported into Unreal as game art.
LESSON
COMPATIBILITY
Written for the features in Houdini 19.5+
Houdini Core ✔
Houdini FX ✔
Houdini Indie ✔
Houdini Apprentice ✘
Houdini Education ✔
the side. Wire the grid node into the polyextrude node
and set its Display flag. Set Distance to 0.1 and under Output
Geometry and Groups turn on Output Back. Set the Template Flag
on the copytopoints node.
Add a Match Size node to the network and wire polyextrude into
the first input and copytopoints into the second. Set Justify Y to
Max to Same, Offset by 0.1. Now the extruded shape will sit on top
of the columns.
Add a Merge node and wire copytopoints and matchsize into it.
182
05 In the Network view, press tab > group. Wire it between
polyextrude and matchsize. Change Group Name to edges.
Alt drag to create a another group node and set its Display flag.
Keep Group Name set to edges and then set Initial Merge to
Subtract from Existing. Turn off Enable under Base Group and turn
on Enable under Keep by Normals. Set Direction to 0, 1, 0 and
Spread Angle to 0. Alt drag on this node to make a copy and wire it
into the chain. Change Direction to 0, -1, 0. Now only the sides of
the box are in the edges group.
Add a PolyExtrude node. Set Group to edges and Direction to 0.15.
06 Set the merge node’s Display Flag to see the first floor of
the building complete. Turn off the Template Flag on the
copytopoints node.
In the Scene view, press n to select all and then press tab > Copy
and Transform. Select the column node and RMB-click on Center Y
and choose Copy Parameter. Go to the copy node and RMB-click
on Translate Y and choose Paste Relative References. Add a + 0.1
to the expression.
Now increase Total Number to 4 to add three more floors.
called Houdini Digital Assets which let you share your techniques Houdini
Digital
with colleagues. These assets are saved to disk inside files known as Asset
.hda files.
Asset files created in older versions of Houdini may have a different
extension .otl which means Operator Type Library - both these file
types work the same way.
183
PART TWO
Import the Asset into Unreal
Now that you have a digital asset file on disk, you can import it into the Unreal Engine. This is possible because of the
Houdini Engine plug-in which connects the two applications. Houdini Digital Assets that are loaded into Unreal are
cooked using Houdini under the surface. The Houdini Engine for Unreal plug-in must be installed to complete this les-
son (See Sidefx.com/unreal for instructions). Please note that Houdini Apprentice does not work with Engine.
03
the scene.
IN UNREAL – In the Generate section of the building
asset’s Details panel, press Rebuild. Press Play to explore
The normals are working properly and now you will collide with the
columns if you try to run through them.
184
05 IN UNREAL – Press Rebuild in the building asset’s
Details panel. Scroll down to see that there are now
parameters for Floor Height and Number of Floors.
Set Floor Height to 1.5 and Number of Floors to 2.
You can Play the level to walk around the asset and review the
changes.
07 Set the Display Flag on the matchsize node. You will see
the new hole with an overhang.
Press 4 to get primitive selection. Get the Select tool then select
the end face of the opening. It may not appear selected but it
is. Press tab > PolyExtrude. Under Extrusion, turn on Transform
Extruded Front. Start pulling the face out and down.
185
UVS Show UV Texture
Houdini has a number of nodes at the geometry level for setting up and manag-
ing UVs. In this lesson, you will use UV Unwrap and UV Transform to add UVs to
the building. These work well with the simple shapes used to model the building.
For more complex shapes you will use tools such as UV Flatten and UV Layout.
You can see a UV Grid on your geometry once UVs are in place. To hide the grid,
you can click on the Show UV Texture button on the Display Options bar to
toggle it on and off.
textured building.
This asset could be used more than once on a level to create
different buildings with different floor heights and building heights.
You could also promote more parameters to the asset to add more
control. All the assets on your level that come from this digital asset
can all be updated at once when a change is made to the asset’s
network or its parameter interface.
186
PART THREE
Copy to Points
In this part of the lesson, you are going to copy some boxes to points of another grid. You will
then randomize those points to achieve a more organic look and add random attributes to
rotate and scale the boxes to create more variety in the distribution of the shapes. This creates
another procedural system that you will wrap up into a Houdini Digital Asset.
SOURCE GROUP
When you model in the Scene view, your selected geometry will get
placed into the Source Group field as either numbered points or primi-
Copy to Points
tives depending on the tool. If the field is empty then the tool will work
on ALL of the points or primitives.
When you use tools at the geometry level this field will be left empty
when you choose Select All [n] before using the tools. Because you set
up copytopoints at the object level, it filled in the points as 0-99.
187
04 In the Network view press tab and start typing Match
Size then select Match Size . Place this node between the
box node and the copytopoints node. In the Parameter pane, under
Matching, set Justify Y to Min. .
On the box node, set Size Y to 0.3 to test the expression. You can
see that all of the boxes are sitting on the ground.
07 Select the grid node and increase the Rows and Columns
to 30 – this creates more points on the grid which
creates a wider variety of values on the scatter points.
Save your work.
HOUDINI FOUNDATIONS
188
PART FOUR
Create another Houdini Digital Asset
In this part of the lesson, you are going to create a digital asset and test the system in Unreal. Just like the build-
ing this means wrapping up the network and saving the results to disk as an HDA file. You will promote some
parameters to allow you to control the grid size, number of points and the relaxation. The parameters will then be
available to you in Unreal.
189
VERTEX NORMALS
By default, Houdini objects like the box have point normals but
don’t have vertex normals. To make sure that you have proper vertex
normals, you can add the Normal node which uses a cusp value to
decide which edges should appear hard and which ones appear soft.
Game editors such as Unreal need vertex normals to display properly
which can be set up easily in the existing network.
With Normals Without Normals
190
PART FIVE
Set up Instancing
When you set up instancing in Houdini properly, you can replace the default shape you have
copied to the points with other Unreal props. You can add more than one prop that will be ran-
domly distributed in place of your default shape. You are now going to make sure that instanc-
ing is in fact set up properly and then you will use this to add some other props into the system.
191
INSTANCES IN UNREAL
When the Houdini Engine plug-in detects packed primitives, a
Houdini Output Instancer is created in the Details tab that contains
the input geometry and some parameters for Rotating and Scaling
the instance. You can replace this with geometry from your Unreal
content window and size it accordingly. The Plus sign lets you add
more instanced inputs to create more variations in the same system.
05 Now click the Plus [+] sign next to the instance object.
This adds a second one. Drag the SM_Rock prop over to
the new Houdini Instanced Input. Set the Scale Offset to 0.1 in all
three axes..
In the Details panel, scroll to the Houdini Engine section and click
the Bake button. In the Outliner, scroll to the HoudiniAssetActor.
Click the eye icon to hide it so you can focus on the digital asset.
Press Play and walk around the scene to see the instances in
action.
06 Now click the Plus sign next to the bush object. This adds
a third one. Navigate to the Content > LevelPrototyping
> Meshes folder. Drag the SM_ChamferCube over to the new
Houdini Instanced Input. Set the Scale Offset to 0.4 0.4 0.2.
You can continue to add more instanced objects to create more
variety and maybe change the size. You can use the Relax Iterations
parameter if you need to separate the instances from each other a
bit more.
192
PART SIX
Use Geometry to Drive Asset
So far this asset supplies the input geometry for the populate asset. Another option is to use existing geometry
in the Unreal scene to instance the geometry. You will now add an input node to your asset which will accept this
Unreal geometry. The ability to work with objects on our level creates better integration between your procedural
assets and existing game art.
193
USING THE INPUT NODE IN UNREAL
When you set up an input node in your asset, there are a number of
options for accessing input geometry. You can use Geometry from
the content browser.
You can set up Curve Input where you draw a curve in Unreal. You
can also grab content from the World outliner or input Unreal land-
scapes at heightfields for use with Houdini’s new terrain toolset.
06 Insert a Blast node after the group node and set the
Group to upfacing and turn Delete Non Selected to On.
Now only those primitives facing up will be kept - the others will be
deleted. Choose Assets > Save Asset > Populate.
The key here is that because you used a group to identify the top
faces, it doesn’t matter what geometry is input into the asset the
solution will work. This is how a procedural asset works because
it provides a generalized solution instead of a specific one-off
solution.
194
PART SEVEN
Import RBD Simulation into Unreal
In this part of the lesson, you are going to create a wall then smash it using rigid body dynam-
ics. Export this system to FBX then import into Unreal for use in your game. This is a simple
example of bringing visual effects from Houdini to Unreal.
03
Plane.
Add an RBD Bullet Solver node to the end of the chain.
On the Ground tab, set Add Ground Plane to Ground
Press Play to run the simulation. Not much happens because the
pieces of the wall are just falling down.
195
05 Add a Transform node after the rbdbulletsolver node then
set Uniform Scale to 100. This scales the simulation to
the size needed in Unreal.
Add an FBX Output node. Set Valid Frame Range to Render Frame
Range then set Output File to $HIP/wall_destruction.fbx.
Turn on Build Hierarchy from Path Attribute.
Click Save to Disk to save to disk.
CONCLUSION
You have now created a variety of game assets for use in
Unreal. From Houdini Digital Assets to FBX files containing
rigid body simulations, you now have a good foundation to
build from. These Digital Assets let you integrate Houdini’s
node based workflow inside host applications such as Un-
real. The same workflow works with other applications such
as Unity, Autodesk Maya and Autodesk 3DS Max.
Go to SideFX.com/unreal for more information. This will point
you to a starter kit of assets you can use in Unreal right away
along with a link to more tutorials.
HOUDINI FOUNDATIONS
196
HOUDINI FOUNDATIONS
LESSON GOAL
To create a TOP (Task Operator) Network to build up a procedural city and then render it out.
LESSON
COMPATIBILITY
Written for the features in Houdini 19.5+
Houdini Core ✔
Houdini FX ✔
Houdini Indie ✔
Houdini Apprentice ✔
Houdini Education ✔
Document Version 2.0 | Oct 2022
© SideFX Software
197
PART ONE PROJECT FILES
Create a City Grid Go to the Foundations tutorial page on
SideFX.com, where you got this tutorial,
To build a procedural city, you will start with a city grid. You are going to and download the tops_lesson directory.
create the geometry by tracing an image file that includes a black and white Put it into the Houdini Projects directory
image of a city map. This will be the input geometry for the network you will which you can find in either the home
be building in TOPs. directory or the documents directory.
198
PART TWO
Generate and Display Work Items
Now that you have a city grid, you can break out the different city blocks into separate work items.
That will allow you to use each block to generate buildings. You will set up a TOP network to save
out each of the blocks. At the same time, you will create an object for visualizing selected work
items to verify that you are getting the results you want.
WORK ITEMS
TOP nodes create work items for each task that you ask it to perform. These are
represented on the TOP node as dots and you can use them to visualize their sta-
tus and can select them individually to evaluate how that work item is progressing.
When all the work items are fully cooked, the node gets a checkmark and the com-
pleted work items are colored green.
199
WHAT IS THE SCHEDULER NODE?
When you first create a TOP network, a local scheduler node is created to orga-
nize tasks as they are cooked. The local scheduler points to your local computer
and will use a percentage of available cores to cook. You can set Total Slots to
Equal to CPU Count Less One option to match available cores.
You can also set up scheduler nodes for HQueue, Deadline, Tractor and Python
to send tasks to a larger compute farm. This will allow more work items to be
processed in parallel to make your graph more efficient.
200
PART THREE
Add Attributes
To create buildings, you want to set a fixed base height and a random height variation so that your
buildings are not all the same size. You could set up these attributes at the geometry level of the city
map but you can also assign them here in TOPs. This will make it easier to make changes at the TOP
level if needed down the line.
201
PART FOUR
Create Buildings for the City Grid
You are now going to use a ROP Geometry node to create a simple building. To see what you are
doing in the viewport, you need to generate the work items and select one of them. You can then
use that work item to design the building at the geometry level.
202
05 Add a new Poly Extrude node into the chain and rename
it window_frames. Set the following:
Group to building_side
Inset to 0.05
Divide Into to Individual Elements
In the Extrusion tab, turn ON the Front Group and
name it window_out.
Add another new Poly Extrude node and rename it windows. Set
Group to window_out and Distance to -0.05.
203
PART FIVE
Combine the Buildings
Once the buildings have been completed, you will want to bring them back together to create the
city. This involves a partition node called Wait for All and a Geometry Import. You will also add in a
city core where the buildings will be taller than elsewhere in the city.
02 Add a Wait for All TOP node. This will just take all the
work items that the ROP Geometry node generates
and combine them into a single work item. It will also prevent any
descendent tops from cooking until all the work items above have
completed cooking.
204
05 Save your scene file. Now select the building_merge TOP
node and press Shift-G to cook it. When the network
finishes cooking, click on the work item on the final building_merge
node to see the change.
205
09 RMB-click on the building_merge node and from the
menu select Dirty This Node. You could also select it and
hit Shift-D to dirty it.
Select the building_merge node and press Shift-G to cook it. You will
be prompted to Save. When it is ready, click on the work item on
the final building_merge node.
In the other Network view, navigate back up to the object level. You
will see the city updated with the city core in the viewport.
UPDATED DEPENDENCIES
When you select on a work item, you get lines that show how that
work item is connected to other work items in the system.
This is a mapping of the dependencies and this helps your graph work
efficiently because only dirty work items will be processed unless you
explicitly dirty all the work items on a node with Shift-D.
206
PART SIX
Isolate a Building
Up until now the building heights are determined by the randomness of the height_variation. If there is one building that you
want to fix to a certain height, a second attribute create node can be used to choose a primitive and set specific values. This
makes it easier to art direct a system when you want to override the randomness.
207
PART SEVEN
Wedge the City Core Location
In order to wedge the position of the sphere within the street_grid object, the network will need to be turned into a Houdini
Digital Asset [HDA] and run through an HDA Processor TOP node. The ability to load these assets and add them to the system
lets you create a complex system out of discreet tools that can be updated and adapted as needed.
WEDGING
Wedging is an idea that comes from photography where a shot is taken
using a variety of settings so that the best one can be chosen later in the
lab. Here the idea is the same except you will use random values to influ-
ence the system and get four unique results that can be compared.
Later you will render out a mosaic with all the options labelled with the
random wedge values displayed.
208
04 Select the HDA Processor node and on the HDA
Parameters tab, set the Center parameter to:
@center_wedge.0, @center_wedge.1, @center_wedge.2
Select the make_citygrid HDA processor node and press shift-V
to Dirty and Cook the node - now there are four citygrids being
created.
Hide the street_grid object. Click on the work items to visualize the
different grids. Each of them show a different position for the green
color which is where the city core is located.
06 You will have to update the output file names for all
the TOPS that create an output file to include the
wedgenumber, so that the files can be differentiated for the
different wedges. Include a .`@wedgenum` in the output file
parameters for the following TOP nodes just before .bgeo:
make_citygrid HDA Processor
geometryimport Geometry import
create_buildings ROP Geometry
building_merge Geometry Import
209
PART EIGHT
Create Geometry for the Streets
To create context for the buildings, you will now create city blocks and streets to use in the final rendering. While the four
wedges currently all use the same map, you will set up this geometry in TOPs to allow for the use of different maps down the
line. It is always a good idea to build in flexibility to create the most robust system.
04 Add a Box node into the network off to the side. Wire
HOUDINI FOUNDATIONS
210
05 Add a Color node with a medium grey (0.33, 0.33, 0.33).
Now create a Merge node and connect it to the two
color nodes. Make sure the display flag is set to output to see the
street geometry in place.
06
the grid.
Save the Scene File. Go back to the TOP Network and
Cook the node, you can click on the work items to see
At the moment all four of them are the same. That will be different
later when you introduce more city grids into the equation.
211
PART NINE
Wedge Four City Maps
Let’s add one extra variable into the wedging. You are going to access four different maps and create one rendering for each
one of them. Each of the different black and while images will be traced and used to feed the system. This shows another way
to add more content into the pipeline.
01 Go back to the wedge TOP node. Click the plus sign next
to Wedge Attributes to add a new wedge parameter.
Set the following:
Attribute Name to file_wedge
Attribute Type to Integer
Start/End to 1,4
This will create integer values of 1, 2, 3 and 4 which will be used to
find the different city maps.
was designed for a static map and won’t work for four
different maps.
Cook the Final partition node (Shift-G) and view the four city plans
turned into cities.
212
PART TEN
Render a Mosaic
Now you are going to add a camera and a skylight then render out the cities. The resulting images will then be combined into
a single mosaic with the wedge attributes on display so that creative decisions can be made based on the results. The mosaic
node will use the Image Magick application which needs to be installed on your computer for these steps to work.
PDG INPUT
While PDG OUTPUT lets you take the result of a node and display it, PDG
Render a Mosaic
INPUT will take the result of the node before and display that instead.
This way the Mantra node can use the results from the preceding node
as the input for the geometry and then render that geometry. These two
options are similar but understanding the difference is important.
213
04 Append an Overlay Text top and set Output Picture to:
$HIP/render/$HIPNAME.$OS.`@wedgenum`.exr
On the ROP Fetch tab, set Cache Mode to Write Files.
In the Overlay tab type:
Map: `@file_wedge`
City Core: `@center_wedge.0`, `@center_wedge.2`
Variation Seed: `@seed_wedge`
07 When you are finished, RMB click on the work item and
select View Task Output. This will show you the final
image in the Mplay image viewer.
This contact sheet lets you review the different wedges and
decide which one you want to move forward with. The parameters
displayed on the images are the ones you would need to lock down
to get the city you want.
HOUDINI FOUNDATIONS
214
PART ELEVEN
Scale Up to Create More Content
In the beginning you pointed out that this city building example could probably be created in SOPs without too much difficulty.
The issue is that as the system gets more complex there is a bottleneck since all the processing happens within a single net-
work. With TOPs, you can distribute work items to a compute farm and as you scale up things don’t have to slow down.
215
05 You could also make the city bigger using a different city
grid image. You would need to increase the Uniform
Scale on the streetgrid_maker HDA processor to 500, and change
the Image input to the citygrid_large map. You may also want to
increase the Blend Width to create more falloff in the city core.
On the Wedge node, you could set the center_wedge attribute’s to
something like -110, 0, 100.
CONCLUSION
In this lesson, you have used TOP nodes to take a city map, create
buildings for each city block and then grow this system to handle more
complex buildings and larger city maps. This project has introduced you to
typical nodes used in a TOP-based workflow and how they can be used
to create and process work item tasks.
There are many things you can create using TOPs and this is only the
beginning. Not only can you use this network type to automate and
process typical Houdini workflows, you can use it to process
workflows that don’t involve Houdini at all.
This will make it a great tool for managing
HOUDINI FOUNDATIONS
216
NOTES
217
SCENE VIEW SHORTCUTS
TOOLS SELECTION MODES VIEWPORTS
Select S Objects 1 Expand Viewport Space + b
Move T Points 2 Select Viewport Space + n
Rotate R Edges 3 Perspective View Space + 1
Scale E Primitives (Faces) 4 Top View Space + 2
Pose Ctrl-R Vertices 5 Front View Space + 3
Handle Enter Right View Space + 4
View Esc Select Groups/Connected Geometry 9 UV View Space + 5
Tool Menu Tab Toggle Objects/Geometry F8
Custom Radial Menu C
Toggle Wireframe/Shaded W
Repeat Last Tool G SELECTING
Display Options D
Select LMB
VIEW
Add to Selection Shift + LMB VIEWPORT LAYOUT
Tumble Space/Alt + LMB Remove from Selection Ctrl + LMB
Track Space/Alt + MMB Single View Ctrl + 1
Toggle Selection Ctrl + Shift + LMB
Dolly Space/Alt + RMB Four Views Ctrl + 2
Home Grid Space + H Two Views Stacked Ctrl + 3
Select All N
Home All Space + A Two Views Side by Side Ctrl + 4
Select Nothing Shift-N
Home Selected Space + G Three Views Split Bottom Ctrl + 5
SNAPPING RADIAL MENU Three Views Split Left Ctrl + 6
VIEW RADIAL MENU Four Views Split Bottom Ctrl + 7
Grid Snap X
Selection Tools V Four Views Split Left Ctrl + 8
Primitive (Curve) Snap X
Selection Options V
Point Snap X
Viewport V FINDING THINGS
Multi-Snapping Snap X
Shading V Dashbox Ctrl + D
50