While working on the shading for my dancers in Maya, I noticed that I was unable to add textures, as my alembic files had no UVs when they were imported into Maya. After a little bit of research, I decided to do some tests to see if I could troubleshoot the problem and come up with a work around.
I went back into Houdini to revisit my sphere dancer file. The original node structure for the sphere dancer looked like this:
Spheres were copied onto the points of a particle system attached to the motion capture character rig. I knew that the geometry and animation worked when brought into Maya, but that the UVs were missing. I first added some Houdini UV nodes to the node tree, and opened up the UV Layout option into Houdini to study the results.
Below is my first attempt at adjusting the node tree structure:
At the UVTexture node level (before processing any sort of UV unwrapping or layout), all of the spheres on the dancer’s body were on top of each other in the UV view:
Once UVUnwrap and UVLayout nodes were added, the result looked something like this:
It was evident that the spheres were unwrapping in an unnatural way. I brought a test alembic of the dancer into Maya and put an aiStandard shader with a ramp in the diffuse color channel to study the results. In the image below, you can see how the colors in the ramp shader were read in pieces rather than in a smooth ramp.
The ramp that plugged into the diffuse channel of an aiStandard shader:
The rendered result:
An additional test with some tweaking of the UV node parameters in Houdini:
The tweaking of values (left figure) resulted in a slight improvement, but it still wasn’t as smooth or responsive to the ramp as I liked. I revisited the Houdini file and adjusted the UV process. I moved the UV nodes higher up in the node hierarchy so that the UVs were established on the base sphere before it was copied to multiple points. With a bit of trial and error, I realized I did not need the UVunwrap node for this process, so I flagged it yellow to “bypass” it.
Adjusted node tree structure:
I also switched the UVtexture node “Texture Type” parameter from “Orthographic” to “Polar” which gave me a different result:
Adjusted polar UVs for one sphere:
Now all of the copied spheres should have the same polar UVs. I tested this in Maya with same ramp shader, using side by side comparisons to study exactly what changed.
The figure on the far right is the dancer with polar UV coordinates for each sphere. The linear ramp was noticeably smoother in this iteration. I also added noise to study how the UVs broke up the noise across the surface of the spheres.
After running these tests, I used the polar UV method and re-imported the alembic into my dance studio scene.