Encoding hierarchical skeleton

Geometry=[M0, M1, M2, M3, M4, M5]
Parent = [-1,0,1,1,0,4]
local (Geometry)  <- std::vector of rotation (r), translation (p)
global (Geometry) <- std::vector of rotation (r), translation (p)

global[0] = local[0];
for(size_t k=1; k<N; ++k)
{
    int parent = Parent[k];
    global[k].r = global[parent].r * local[k].r;
    global[k].p = global[parent].r * local[k].p + global[parent].p;
}
pictures/hierarchy.svg