Handy sops with unintuitive names
With Houdini being as old as it is (and Prisms further back again), there's a few nodes in there that could probably have better names, but are so core and so old there'd be riots if that were done. Here's a list of ones I use frequently, but when starting out constantly forgot the names of.
- ends - Use this to convert a shape to a wireframe, or more accurately edges that don't have associated faces. Think of this as 'popping the bubble' surface on your polys. Append this sop, and set the mode to 'unroll'. Conversely you can go the other way, take a poly line, ends sop, 'closed loop', it becomes a polygon again.
- polyframe - Create normals and tangent properties for a curve. When you tick the appropriate boxes, you get N, tangetu (along the curve) and tangentv (perpependicular to N and tangentu). Often you want to swap one for the other, you can just enable the one you want (say tangentu), and change its name to N.
- sweep - an extrude in maya speak. this gives you the option to just duplicate your profile along the curve, or to create a skin from those extrudes. It does a good best guess of controlling the profile orientation, with extra controls for twist and whatnot, which if you were to use a copy sop instead you'd have to make yourself.
- skin - given a series of cross sections, skin them into a surface
- duplicate - like a copy, but without the second input. basically the same as the 'duplicate special' dialog in maya
- fuse - fuses points, obviously, but has 2 other important modes. Note that these modes are exclusive, when you swap to these other tabs, only that mode is active. If you need snap and fuse for example, use 2 fuse sops one after the other:
- unique - splits each face into its own island
- snap - snaps points onto regular divisions
- extrude volume - take a grid, add a mountain sop, you have a distorted 2d grid. if you need to use that in a volume, it requires depth. the extrude volume will do this for you, pushing down (or up) a flattened copy of the surface to make a watertight shape.
- divide - does a variety of handy things:
- can triangulate surfaces with the 'convex polygons' and 'maximum edges' toggles
- can add in extra edges in a regular grid form with the 'bricker polygons' toggle
- if you have a shape with a hole, enabling 'remove shared edges' will create a shape that fits that hole, and removes everything else. if you have a flat shape like a grid, it will remove all the internal detail, leaving only the outline (which if you think about it, is what the hole filling is doing...)
- 'compute dual' computes the dual. :) The dual of a shape is what happens if swap the faces for points, and the points for faces. A grid becomes a field of hexagons, an octahedron becomes a cube, interesting shapes can be generated this way.
- convert line - find's every edge and makes it a standalone polywire curve primitive with a restlength attribute. Super handy for feeding into wire solvers, or grain, or constraint networks.
- assemble - prep fractured geo for an RBD sim. Turn on the 'create packed geometry' toggle to directly send it to a packed rbd object.
- connectivity - identify islands of geometry, give them a unique class attribute, very handy.
Viewport colour correction, viewport HDR mode
Using the viewport menu (yellow text in top right corner, where it usually says 'persp1' or the camera name), turn on 'correction toolbar'.
This enables the same colour correction tools as mplay, super handy. You quickly lift exposure if you're working in a dark area of your scene, or reduce exposure if you're getting everything clipped, and just want to check stuff.
Well not quite. Exposing up works fine, but exposing down goes to a gray mess. The reason for this is the viewports are clipped to 8 bit by default, so values can't go above 1. You can turn this off though; hit 'd' in the viewport to bring up display options, go to the effects tab, turn on 'HDR rendering' in the top-left. Now you can expose up and down as much as you want, and it doesn't seem to affect viewport performance that much.
Turn off 'helpful' viewport text
Handy to start with, rapidly becomes the Microsoft Office Paperclip of houdini. 'I see you're selecting points! Let me display some text that tells you you're selecting points!'. More irritating when the geo you want to select is hidden by the text telling you that you're selecting geo. Ugh.
Edit -> Preferences -> Notifications, set both 'notification area' and 'help tip area' to Status Bar, and breath easy knowing that you've reclaimed your viewport.
Export nulls with nice names to maya via alembic
Specific use case, but probably useful in other circumstances....
I had a basic car traffic setup, and exported it to the lighting department to render. Being a night shot, they needed a way to parent headlights and tail-lights onto the cars. My traffic setup was just points that had cars instanced onto them, so we figured a simple fix would be to export nulls for the cars via alembic
In Houdini I created a control sop (which in its default state is a null cross-shape), and copied that onto my points in packed mode. Append a 'rop alembic output' sop, write out an abc.
When loaded into maya that appears as a bunch of transforms, with a null shape underneath. Sweet.
But the lighter wanted more. He asked if I could name the nulls after the car types, rather than the default naming of 'instance02', 'instance03' etc.
The alembic rop has a 'build heirarchy from attribute' checkbox, so I made a s@path attribute on my points, made sure it was transferred in the copy, and wrote. Annoyingly, the alembic rop kept erroring. Even though it was telling me exactly what the problem was, it took a few minutes for it to sink in; the @path attribute needs to be on prims, not points.
A quick attrib promote to do this, write an abc again, look in maya, hey presto, nice names.
Turns out you can make paths as you see fit, so I prepended the car names with '/vehicles/nulls', and sure enough, maya reconstructed that path. Handy!
Nice icon library for OTLs/HDAs
Once you go down the path of creating your own HDAs, you'll want to give them nice icons like all the existing houdini nodes. If you browse around the houdini install folders you'll find an icons folder, but its full of cruddy late 80s Prisims icons. We can do better.
There used to be an easily accessed folder of the current cool node icons, but at some point during H15 they disappeared. A bit of scrounging around revealed they're still available. Head to $HH/help, you'll find an icons.zip file. Unzip it, hey presto, loads of subfolders of delicious svg icons.
Turns out that the icons used in the shelves and nodes are stored in a cache. They're the same as the contents of the zip, but accessed in a slightly obtuse way. Eg, the icons.zip file, when expanded, has subfolders for sop, dops, vops etc, with icons inside. So if you end up liking the icon you find at
you can instead replace that path with
ie, name of folder in caps, underscore, name of icon, no suffix. There's no way to visually browse these apart from unzipping that icons file, but looks like it'll be fixed in the next major houdini release.
If you need more, the emojione set is pretty good. http://emojione.com/
HDA save state
If the hda text is a mauve/dusky blue, it means its been set to be unlocked and modifiable on creation. If you want to make changes and update the HDA definition, there's no obvious button for this. The answer is actually deceptively simple, just right click, type properties, and do the usual apply/accept click. Now once published, it will have those updated changes.
Houdini's help is generally pretty good; click the ? button in the top-left of the parameters for a node, the built in browser will launch, take you to the help. Nicer still is when you're in a wrangle, you can have your cursor within a function name, hit F1 (or fn-F1 on a mac), and it brings up the vex help for that function.
That said, houdini's built-in browser is pretty slow on windows and linux, and borderline unusable on OSX. I always thought it was a combo of slow browser and slow local webserver, but it looks like its just the internal browser. You can fix this! In your .profile under linux or osx (assuming you're using bash), add this line:
(Under windows you'll need to use the global variable editor, I don't remember where that's done these days.)
Anyway, that will now fire up your default browser rather than the internal one, and the help loads almost instantly. Much nicer.