Making a 3D Texture Stick

3D or solid textures are a great way to add color (and more) to your object without the need to lay out UVs. When you move the object, it may appear to move through the solid texture but that is easily fixed by parenting the place3dTexture node to the object.

3D textures on deforming object

But what if the object deforms? Here is a playblast of a bending stick with a 3D texture (modified leather) on it:

Texture sticks in the viewport

That looks like it works, the texture deforms with the object. Here is an Arnold render of the same scene:

Texture does not stick in the render

D’oh! The object deforms throught the 3D texture space and does not stick to the surface. We need to tell the renderer to use the point positions of the undeformed object to calculate the color value of the 3D texture. To do this:

  • Select the object – it should not be deformed (yet)
  • Create a Texture Reference Object (Rendering > Texturing > [Projection] Create Texture Reference Object)
  • An error may pop up from [mtoa.translator]  that reads “Mesh not exported, it has 0 shading groups.” which you can ignore. That means the reference object itself will not be rendered.

Now it renders like this:

The texture sticks

The texture placement should now NOT be parented to the object – you may consider parenting it to the reference object.

Maya help page: Lock a 3D texture or a projected 2D texture to the surface

Leave a Reply