uv mapping

Houdini as scene assembler, part 01 (of many) by Xuan Prada

It’s been a while since I used Houdini at work, the very first time I used Houdini on a show it was while working on Happy Feet 2, it was our main scene assembler for the show. Look-dev, lighting and rendering was all done in Houdini and 3Delight.

From there I never used Houdini again until I was working on Geostorm at Dneg. Most of the shots were managed with Houdini and PrMan. That is all my experience with Houdini in a professional environment. No need to say that I have only used Houdini for assembly tasks, look-dev, lighting and rendering, nothing like fx or other fancy stuff.

The common thing between the two shows where I used Houdini as assembler is that we had pretty neat tools to take care of most of the steps through the pipeline. Becasue of that I can’t barely use Houdini out of the box, so I’m going to try to learn how to use it and share it here for future reference.

During my time working at facilities like MPC, Dneg or Framestore, I have used different scene assemblers like Katana, Clarisse or other propietary tools. My goal is to extrapolate my knowledge and experience using those software to Houdini. I’m pretty sure that I’d be using tools and techniques in the wrong way just because Houdini has a different philosophy than other tools or just because my lack of knowledge in general about Houdini and proceduralism. But anyway, I’ll try to make it work, if you see anything that I’m doing terribly wrong, please let me know, I’ll be listening.

I’ll be posting about stuff that I’m dealing with in no particular order but always assembly oriented, do not expect to see here anything related with fx or more “traditional” use of Houdini. Most of the stuff is going to be very basic, specially at the beginning but please bare with me, it will get more interesting in the future.

If you are assembling a scene one of the first steps it would be to bring all your assets from other applications. You can of course generate content in Houdini but usually most of you assets will be created in other packages, being Maya the most common one. So I guess the very first thing you’d have to deal with is how to import alembic caches. If you are working in a vfx facility chances of having automated tools to setup your shots for you are pretty high. Launching Houdini from a context in a terminal will take care of everything. If you are at home or starting to use Houdini in a vfx boutique you will have to setup your shots manually. There are clever and easy ways to create Houdini templates for your show/shot but we will leave this topic for future posts.

To bring your assets as alembic caches just create a file node, step inside and replace the existing file for another file node pointing to your alembic cache, or just use the existing file node and change the path to read you alembic cache.

If you are look-deving a character lets say, it is completely fine to look at the full geometry in the viewport. If you are assembling a big scene like a city or a space ship you’d probably want to change your viewport settings to something like bounding boxes. There are better ways of dealing with bounding box without loading the geo, more to come soon.

Assets are usually complex and we try to keep everything tidy and organised by naming everything properly and structuring groups and hierarchies in a particular way that makes sense for our purposes. The unpack node will allow you to access to all the different parts and componentes of the alembic caches and to perform different operations later on. The groups can be selected based on the hierarchies created in Maya or based on wildcards. It is extremely important to use a clever naming and structuring groups following certain logic to make the assembly process easier and faster.

The blast node will help you also to access to the information contained in the alembic cache and remove whatever you don’t need to use for a particular operation. You can also invert the selection to keep the items that you wrote in the group field and get rid of the rest.

The group node is another very useful node to point to different groups in your alembic caches. Again based on Maya grouping and wildcards.

That is it for now in that sense, there are many ways to manipulate alembic caches but we don’t need to talk about that just yet. In these first posts I will be talking mostly about bringing assets, working with textures and look-dev. That is the first step for assembling a shot, we need assets ready to travel trough the pipeline.

Uv mapping is key for us, a lot of tasks performed in Houdini use procedural UVs or no UVs at all. This is not the case for us. Asset always have proper UV mapping. Generally speaking you will do all the UV related tasks in Maya, UV Layout or similar tools. In order to see the UVs in Houdini we need to unpack the alembic cache first, then we will be able to press “5” and look at the UVs.

Use a quick uv shade node to display a checkered texture in the viewport. You can easily change the size of the checker or use a different texture. There is also a group field that you can use for filtering.

Not ideal but if you are working on extremely simple assets like walls, grounds, maybe terrains, it is totally fine to create the UVs in Houdini. Houdini UV tools are not the best but you will find yourself using them at some point. The uv texture node crates basic projections like cylindrical, orthographic, etc.

The uv unwrap node create automatic UVs based on projection planes.

The uv layout node is a tools for packing your UVs. Using a fixed scale you can distribute the UVs in different UDIMs.

The auto uv node is actually pretty good. It is part of the game development tools shipped with Houdini. You need to activate this package first, just go the shelf, click on the plus button and look for game development tools. Then click on the icon update toolset to get the latest version.

The auto uv tools has different methods for UVing and for packing, it is worth trying them, it works really well specially with messy objects.

The uv transform node deals with anything related to moving, translating and rotating UVs. You don’t really want to do this here in Houdini, but if you have to, this is the tool. I use it a lot if I need to re-distribute UDIM tiles.

Attribute create node (with the following parameters) allos you to create a parameter to move UVs to a specific UDIM. Then add a uv layout node and set the packing method to UDIM attribute.

Bake from Nuke to UVs by Xuan Prada

  • Export your scene from Maya with the geometry and camera animation.
  • Import the geometry and camera in Nuke.
  • Import the footage that you want to project and connect it to a Project 3D node.


  • Connect the cam input of the Project 3D node to the previously imported camera.
  • Connect the img input of the ReadGeo node to the Project 3D node.
  • Look through the camera and you will see the image projected on to the geometry through the camera.
  • Paint or tweak whatever you need.
  • Use a UVProject node and connect the axis/cam input to the camera and the secondary input to the ReadGeo.
  • Projection option of the UVProjection should be set as off.


  • Use a ScanlineRender node and connect it’s obj/scene input to the UVProject.
  • Set the projection mode to UV.
  • If you swap from the 3D view to the 2D view you will see your paint work projected on to the geometry uvs.
  • Finally use a write node to output your DMP work.
  • Render in Maya as expected.

New features in UV Layout v2.08.06 by Xuan Prada

The new version of UV Layout v2.08.06 was released a few weeks ago and it is time to talk about some of the new exciting features. I'll be mentioning also old tools and features from previous versions that I'm starting to use now and didn't use much before.

  • Display -> Light: It changes the way lighting affects the scene, it is very useful when some parts are occluded in the checking window. It has been there for a while but I just started using it not long ago.
  • Settings -> F1 F2 F3 F4 F5: This buttons will allow you to create shortcuts for other tools, so instead of using the menus you can map one of the function keys to use that tool.
  • Preferences -> Max shells: This option will allow you to increase the number of shells that UV Layout can handle. This is a very very important feature. I use it a lot specially when working with crazy data like 3D scans and photogrammetry.
  • Flatten multiple objects at once: It didn't work before but it does now. Just select a bunch of shells and press "r".
  • Pack -> Align shells to axes: Select your shells, enable the option "align shells to axes" and click on pack.
  • Pack by tiles: Now UDIM organization can be done inside UV Layout. Just need to specify the number of UDIMs in X and Y and click on pack.
  • Pack -> Move, scale, rotate: As part of UDIM organization now you can move whole tiles around.
  • Trace masks: This is a great feature! Specially useful if you already have a nice UV mapping and suddenly need to add more pieces to the existing UV layout. Just mask out the existing UVs and place the new one in the free space. To do so just place in boxes de new UVs and go to displace -> trace and select your mask. Click on pack and that's it, your new UVs will be placed in the proper space.

Segment marked polys: This is great specially for very quick UV mapping. Just select a few faces click on segment marked polys and UV Layout will create flat projections for them.

  • Set size: This is terrific! one of my favourite options. Make the UVs for one object and check the scale under Move/Scale/Rotate -> Set size. Then use that information in the preferences. If later you import a completely different objec, UV Layout will be using the size of the previous object to match the scale between objects. That means all your objects will have exactly same scale and resolution UVs wise. Amazing for texture artists!
  • Pin edges: A classic one. When you are relaxing a shell and want to keep the shape, press "pp" on the outer edges to pin them. Then around the eyes or other interior holes press "shift+t" around the edges. Then you can relax the shell keeping the shape of the object.
  • Anchor points: Move one point on the corner with "ctrl+MMB" and press "a" to make it anchor point. Then move another point in the opposite corner and do the same. Then press "s" on top of each anchor point. Then "ss" on any point in between the anchors to align them. Combining this with pinned edges will give you perfect shapes.

Mari to Softimage by Xuan Prada

Recently I was involved in a master class about texturing and shading for animation movies, and as promised I’m posting here the technical way to set-up different UV sets inside Softimage.
Super simple process and really efficent methodology.

  • I’m using this simple asset.
  • These are the UVs of the asset. I’m using different UV sets to increase the quality. In this particular asset you can find four 4k textures for each channel. Color, Specular and Bump.
  • You probably realized that I’m using my own background image in the texture editor. I think that this one is more clear for UV mapping than the default one. If you want you can download the image, convert it to .pic and replace the original one located on C:\Program Files\Autodesk\Softimage 2012\Application\rsrc
  • This is the render tree set-up. Four 4k textures for color, specular and bump. Each four textures are mixed by mix8color node.
  • Once everything is connected, you still need to offset each image node to match the UV ranges.
  • I know that the UV coordinates in Softimage are a bit weird, so find below a nice cart which will be so helpfull for further tasks.
  • Keep in mind that you should turn off wrap U and wrap V for each texture in the UV editor.
  • Really quick render set-up for testing purposes.

Mudbox and UDIMs by Xuan Prada

When you’re going to texture an asset which already have a displacement map, probably you’ll want to apply that displacement to your mesh before start the painting process.

In my pipeline, I usually apply the displacement map in Mudbox and then I export the high resolution mesh to Mari.

The problem here is that Mudbox doesn’t allow you to work with displacement maps and multiple UV shells.

I tried below to find a solution for this problem.

  • Check your UV mapping in Maya.
  • I’m using these simple displacement maps here.
  • One map for each UV shell.
  • Export as .Obj
  • Open in Mudbox and subdivide.
  • Go to maps -> sculpt model using displacement map.
  • Select your mesh and your displacement map.

As you’ll realize, Mudbox doesn’t allow you to choose different maps for each UV shell which means that Mudbox will be able only to sculpt using the displacement map for U0-1 V1-0 coordinates. Big problem.

The way which I’ve found to solve this problem is:

  • Go back to Maya.
  • Select your mesh and open de UV Texture Editor.
  • Select one of the UV shells which is outside of the default U0-1 V1-0 range.
  • Open the script editor and type -> polyEditUV -u -1 -v 0 ;
  • You’ll notice that the second UV shell is placed in the default UV shell but was moved 1 exact position. Then your displacement texture  will match perfectly.
  • Export again as .obj
  • Now you’ll can use your displacement map in Mudbox without problem.
  • Repeat the process for each UV shell.
  • Commands to move UV shells 1 exact position.

Move left -> polyEditUV -u -1 -v 0 ;

Move right -> polyEditUV -u 1 -v 0 ;

Move up -> polyEditUV -u 0 -v 1 ;

Move down -> polyEditUV -u 0 -v -1 ;