Search code examples
animationgraphicsblendergltf

Object Animation with several Pivot Points


What are some best practices for creating animations across several pivot points using Blender and how do these relate to exported GLTFs?

I'm trying to create animated explosion drawings of assemblies where each part follows a complex path consisting of translations and rotations around arbitrary pivot points.

Here is an example of the type of animation I'm trying to create. I used a relatively complex hierarchy of empties as pivot points with the animated object as the deepest child, added rotation animations to each empty depending on which pivot point is used and then a translation animation to the root node for the horizontal movement. I believe this would translate pretty well to GLTF, because it doesn't require sampling and would be losslessly recoverable. Caveat is the convoluted node hierarchy, which wouldn't be easily maintainable for several objects, especially if a node that already was animated is animated again in conjunction with another object. Animation with several pivot points in Blender

Another approach for this would be to create a curve-based path-following animation in Blender but, as I understand, this would have to be sampled to be saved as GLTF and would thus be quite heavy on the data side and not well recoverable in a consuming application if it were to be editable.

Another example would be something like this multi-hinged door: Multi hinged door animation in Blender

Am I correct in assuming that the complex hierarchy of empties is the only sane way of creating this animation in Blender? I don't believe skeletal animation would be the solution, because it also adheres to the single-parent rule, correct?

I also attempted to create these animations by using the transform pivot point tool in Blender, but this doesn't sample correctly for me when I insert keyframes (correct rotations and locations, but not around the pivot point but the object origin).

Transform Pivot Point in Blender

I'm aware that GLTF is a delivery format and not an exchange format, so recoverability isn't a design goal, but data sparsity could be.

Am I missing something obvious here? Are these the methods of creating animations for objects with several pivot points? Would it be better to simply go with the curve-based path-following animation approach in Blender and transfer the curve information by other means to a consuming (and possibly editing) application? Blender and GLTF don't have explicit pivot objects like in Maya and Collada, right?

Please excuse the rather broad question, but I'm trying to get an overview of options in this regard.


Solution

  • I believe your understanding of the issue is correct. To keep the data recoverable, a hierarchy of empties might be the best approach for export to glTF. glTF does not allow explicit pivot objects; I'm not sure about Blender.

    Probably data sparsity is less of a problem. Blender has some ability to remove duplicate keyframes introduced by sampling at export. And other tools, including gltfpack (https://meshoptimizer.org/gltf/) and gltf-transform (https://gltf-transform.dev/cli) can both resample to remove redundant keyframes, and also compress the animation data.