Pivot Painter is a Houdini Digital Asset (HDA) that stores model pivot and rotation information in the model's vertex data and additional UV channels. That information can then be referenced inside of Unreal's shader system to create interactive effects.



Method 1 allows users to animate any non-hierarchical sub-meshes of a mesh to be aimated using its pivot location and rotation. Using this data, you could generate interesting looking motion on things like grass, bushes, hair, abstract vfx and much more. Simply plug in your geometry and pivots into the tool and you are ready for export to an engine such as Unreal Engine.

The examples shown in the video mainly use Method 1, which is the most frequently used functionality of the tool. You would only really use Method two when desiring multi-layered motion.


This functionality of the tool is used to store child parent relationships like the relation between a branch and leaf for instance, as well as the model pivot and rotation information in the meshes. It is important to note that this mode has two ways of processing pivot information: 1. Generate Pivots: When selecting this option, the tool will figure out what the optimal position is for the pivots on every single sub-object. This allows the user to import non-procedural assets, and make them pivot painter compatible. 2. Custom Pivots: Should the user have generated the object to be processed by the tool, and have access to the original pivot points, this option should be used. This allows the user to have fine control over the pivot positions used in the vertex shader.


The tool is rather light on prerequisites for most of its application.

Per Object Basis & Hierarchical Basis:

@N (Normal) point attribute for the pivots orientation. (This is forward)
@name point attribute relationship on both the geometry and pivots. (So the tool knows which vertices belong to which pivots)

Only Hierarchical Basis:

Primitive group for the leaves, and branches. (Trunk on tree would be included in the branches group) 

Note: Only the Per Object Basis functionality absolutely requires the pivot input to be connected. The Hierarchical Basis offers the possibility to generate the pivots while processing.

Realtime Application

Within unreal you can now create a material which drives your motion, by reading out the data stored by the Pivot Painter tool. Simply use the material functions provided by Epic Games, or modify them to suit your needs. There are different material functions for both the Per Object Basis and Hierarchical Basis. For examples please refer to the Content Examples provided by Epic Games. 



Creating motion this way has its benefits. A model processed using this technique is only 18% larger in terms of memory than a standard Static Mesh. Animations are far less expensive than skeletal animations because they do not need to be stored as they are calculated on the fly. Vertex shader instruction counts are generally less of a performance concern than pixel instruction counts, due to the number of vertices on a model compared to the number of pixels on the screen.



  • zysnow 8 months, 1 week ago  | 

    Great! Where to get the HDA?

  • DMNS 8 months, 1 week ago  | 

    Yeah, where do we get it?

  • Ambrosiussen 8 months, 1 week ago  | 

    Hey @zysnow @DMNS,

    You can download the latest SideFX Game Shelf tools in the GitHub Tool repository. Which can be found here:

    /otl folder holds the tools (sop_pivotpainter.hda in this case)
    /hip holds example files to play around with some data

    Will add download instructions to the tutorial page!

    Have fun,

  • eco_bach 7 months, 4 weeks ago  | 

    Unity support......please!

  • 099440a80f774063a1e115922 7 months, 3 weeks ago  | 

    I would also appreciate a unity implementation :) Thanks!

    • Ambrosiussen 7 months, 3 weeks ago  | 


      I will be looking into Unity support very soon!

  • 099440a80f774063a1e115922 7 months ago  | 

    Thanks, Looking forward hearing more about the process using Unity

  • alvarodoblezeta 7 months ago  | 

    Thanks for this presentation¡¡¡
    I've been trying to reproduce the collision effect on ue4 when the character touches the object as samples in the video, but I have not yet been able to solve it. You could help me how to solve this problem. maybe a screenshot of the process?

    • Ambrosiussen 7 months ago  | 


      Have you tried looking at the content examples provided by Epic Games? The grass shader found in the PivotPainter map does a good job of demonstrating how to approach this problem. Should you need any help, feel free to send me a PM. Then I can provide you with an example! :)


  • Yaser Hussain 5 months, 3 weeks ago  | 

    in the maxscript there were textures generated through the script. Are these specific to the mesh? If so, how can I generate these textures from Houdini?

  • kylda 1 week, 2 days ago  | 

    Great job~
    I am keen to use this tech in unity~ But it doesn't work. Is that the problem of direction axis?

    • Ambrosiussen 1 week, 1 day ago  | 

      Hey, the tool generates data to be read back in a shader. Unreal has that shader by default, but for unity you would need to write a custom solution. Once that's done, it will work for you in unity too.

Please log in to leave a comment.