Can anyone firgure out this "Custom Pivot" Rig Setup?

Hello, Blenderfolks!

I’ve been looking forward additional “Ephemeral Rigging”-like approaches to Rigging & Animation in Blender, and I believe this very intriguing Rig contraption, a “Custom Pivot” Setup, might be one of them.

Unfortunately, there don’t seem to be enough documentation from the video and the commentary section doesn’t bring too much clarity on the approach, and I’m not sure atm what would be its pros & cons; or if it works but with caveats.

Usually, I’d keep experimenting this to the very end, but I happen to be quite busy atm, so this is why I decided to share this in hope good spirits could figure this out better than myself, either following the exact steps of that Rig context or by making version which works somehow.

I was able to devise a sketchy variation of the Custom Pivot for those generic Foot Rolls, but there is a big limitation which is that, the Custom Pivot needs to have its Rotation Reset before it can be used again properly (but I suspect the original proposition would not have this particular issue).

In my understanding, if this approach of Custom Pivot truly delivers smoothly, the applications of this stuff for various other Rig cases could be quite impressive (even though requiring at least 1 extra Bone Channel to Keyframe per Custom Pivot feature); because Blender has a huge limitation imo when it comes to adaptive Keyframing F-Curve Interpolation for the real requirements of Character Animation in 3D Animation Workflow, but this is a long story, often related to the making of spontaneous and ideal Circular Arcs of Motion (easily seen with Motion Paths); a “Loose” Bone as I call it (that is not controlled through FK whether from a Parent or a “Fake-Parent” through Constraint system in someway), just cannot ‘Arc-Motion’ itself spontaneously with just 2 Keyframes.

A bit of basic context:
While the 3D Cursor Transform Pivot Point can produce a Circular Arc in the 3D Viewport Editor for Posing, this is but a false Custom Pivot, as this won’t translate to Keyframing F-Curve Interpolation; however, a true Custom Pivot can do this. I was able to achieve this result with my sketchy Setup, but I couldn’t yet solve that other Reset issue that I also created (or that would be inevitable?).

Thanks!

I could not find a solution, from just Rig Setups, which would not replicate the Re-Location annoyance, flaw or critical drawback for better 3D Animation in Blender.

But I was able to figure out a workaround approach involving a simple Pivot Bone Constraint Setup with 3 Posable Bones but that needs to be very carefully Keyframed along time regarding the Bone Channels:

Is it a “blender problem” or just a fundamental issue with any conventional rig?

Reading into this “ephemeral rigging” idea (I’m not a rigger or an animator though), it looks like the most crucial difference here is that all controlers update in seemingly cyclic logic.
When rig is posed, it somehow doesn’t rely on information about how it got there: no ik/fk states, no translation/rotations that needs to be cleared…
It’s almost like you can start moving it from one pose to the next, in whatever mode, as if you started from the rest pose itself.

Thanks for the reply, @stray!

I currently believe it’s a “vanilla” Blender limitation; that might make any convention and non-conventional Rig Setup to not work (unless I’m missing some magic trick here).

What I’ve realised, by playing around with this issue so far, is that the Constraints and Parenting Relation systems in Blender, which could try to resolve a Dynamic/Custom Pivot feature on their own, they apparently can’t do that on their own, because the desired ‘Pivoting Transform’ relies on a special combination of Location+Rotation Transforms, something which can only be obtained with very specialized techniques which can then count as an effective ‘FK-behavior’ (e.g., Parenting Relation, Child Of Bone Constraint, Armature Bone Constraint, ‘Fake-Parenting’ Copy Transform Bone Constraint… Copy Location alone… it’s a bit fuzzy, I don’t know right now to be fair --seems associated with what the tutorial Rigger was doing, but then it doesn’t seem to prevent the Re-Location also), but then, such techniques need to ‘bind’ the ballistic Pivoting Rotation to the Location as well, and this cannot be ‘isolated’ from the structure (which goes “cyclic” as you have mentioned, and then ends up Re-Locating the Owner Bone in an unwanted way); and even though Blender possesses different ‘Transforms Pathways’ (as I call them; mainly, Parenting Relation Transforms Pathway and Constraints Transforms Pathway), it doesn’t possess, more specifically, a separation between what is ballistic Pivotal Rotation and ‘the rest’, also… if we do separate the Rotation from the Location, that FK-behavior, of ballistic Pivotal Rotation, just stops working (since it’s a combination of both! I think we can’t reproduce this behavior with Copy Location + Copy Rotation since they are separated! it would need to be a Location+Rotation combined Bone Constraint [such as the ones I’ve mentioned]; I don’t know with Drivers [they tend to separate too much the Transforms by default]).

I suspect there would be an equation which could ‘solve’ (exactly Counter-Locate Automatically) that unwanted Re-Location; but then I wonder… if that wouldn’t just neutralize the desired ballistic FK-behavior, Pivotal Rotation, in the end, because, of course, we can’t separate the Pivotal Rotation from the same, combined Location+Rotation input; and thus, whichever structure which affect one or the other Transform, will ruin the Pivotal Rotation.

This is why Keyframing solutions seems to be the only way (on top of a Rig Setup); probably because Keyframing adds another dimension to play with this stuff: the Time… and even so, it gets a bit tricky!!

That might be a useful insight. Rigify Addon uses multiple Skeletons, including for tackling IK/FK Switch feature; but it also gets the IK/FK Snap feature on top of that. This last feature, would need to be programmed (on Custom Rigs); I suspect it could play a role in a Dynamic/Custom Pivot application (because it can Automate Keyframing in handy ways). But, I don’t know how to implement it on a Custom Rig; and in Rigify Addon, I’m not sure, but it was apparently designed mainly to solve the IK/FK Switching -related facilities; and not anything else. It probably wouldn’t work just from a “graftling”; it would probably need to be carefully adapted. But this is just hypothetical.

Thanks for the observations!

ToonSquirrelFootPivot.blend (4.1 MB)
I have an example for you. There are 4 pivots per foot that are parented in “serpentine” hierarchy. Each copies rotation from the control bone. And at certain rotation ranges, each pivot is locked by Limit Rotation constraint.

Hello, @DeckardX08;

Thanks for the sample!

Yes, I see; this may be considered a set of “Custom” Pivots indeed; but unfortunately, I believe it would not correspond to a “Dynamic” Custom Pivot.

In principle, I do understand those 4 Pivoting Points are convenient and decent for 3D Animation. But the whole contraption idea here in the thread, is trying to get any, at will Custom Pivot Points, without the need of building dozens of Pivot Points from the Rig Setup (so, the ‘one ring to rule them all’ notion).

A bit like, if the 3D Cursor with the 3D Cursor Transform Pivot Point Option, would work ideally for Ephemeral Rigging in Blender… that is, if it did affect the F-Curve Interpolation Keyframing for the making of spontaneous and ideal Circular FK Arcs of Motion; but it just cannot interfere with such Keyframe Data, which are inherent to the Bones; though there is evidence certain Addons/Extensions should be able to provide some support in that domain (drawing World Space arbitrary Arcs of Motion for Bones’ F-Curve Interpolation Keyframing Data). I think this is what I’m up to investigate further… instead of a hypothetic Dynamic Custom Pivot Point Rig Setup.

Fine; sorry for misunderstanding your request. What you intended will require lot of custom coding then. I’ve never attempted anything that complex. Last time I tried Blender scripts is for IK/FK switch system that utilized pseudo-parent logic for Ik goals. But the result conflicted with something else in the editor and I just dropped it.

Ok, folks;

I’ve made some more crazy tests and, in a formidable way, the exact same approach that ends up working for a Dynamic Custom Pivot (infinite and arbitrary Foot Rolls), also works for the specific case of Simultaneous IK/FK regarding the forming of spontaneous and ideal Circular Arcs of Motion for F-Curve Interpolation Keyframing of the Master IK Controller Bones.

https://www.youtube.com/live/P6zafi5jc7w

It requires some practice though, and to be very careful with the steps. However, it is surprisingly simple, in both Rigging structure & Animation Keyframing tactics, and it is also quite effective.

In certain cases, it might demand a simple use of the new in-built feature of Global Transform Panel, on the Animation Tab < Sidebar Region < 3D Viewport Editor; but in most cases, just the exact Duplication of Keyframing would be sufficient.
Copy Button → Paste to Selected Keys Button

Been lurking around on this post for a bit, and I kept wondering what is ‘Ephemeral Rigging’??? First search for this gave me a description that it’s controllers that don’t exist until needed, then disappear after use. :thinking:

Then I found this tonight - https://dl.acm.org/doi/10.1145/3306307.3328165 - which describes it a bit more. Read the .pdf

I kind of understand the concept, but no clue on the execution of this. How are the controllers dynamically created? I keep thinking thru this concept, but I’m not getting how the ‘on the fly’ controllers are created.

Anyway, I think this is more of a programing thing and not a rigging thing.

Randy

Hello, @revolt_randy!

Thanks for the observations.
I’ll take a look at the document.

The most important thing I can say atm, about Ephemeral Rigging, is that I’ve essentially learned about it from this insightful presentation on the subject, in the context of Unreal Engine; but from someone who is also an Animator (for a long time), hence can more likely understand not just the HOW stuff works, but also exactly WHY this kind of resource is essential for better Digital (in this case) 3D Animation.

Maybe, I’m just borrowing a certain positive aspect from the concept of “Ephemeral Rigging”; in order to express a desired, more essential aspect of what a smoother Workflow for 3D Animation in Blender could be.

In Unreal Engine, there is the so called “Control Rig” nodes system in-built. This, should not be confused with terms such as “Rigging Nodes” or maybe not even “Animation Nodes” as I once assumed; I think one accurate way to describe the Control Rig nodes system of UE in the context of Blender, would be something like a ‘Tools & Pose Options Nodes for Pose Mode Editor’.

Regarding the way Ephemeral Rigging works internally, there seems to be something fundamental about the Keyframing Interpolation systems or methods… If we compared more oldschool softwares such as Maya and even Blender, with more modern ones such as UE and (I suspect) Cascadeur (because it seems to deliver similar agile Posing features for 3D Animation), something critical relates to the Keyframing Interpolation system/method. In the case of UE’s “Control Rig”, it’s as if there is a spectral ‘Rig’ (made of Pose Options as Nodes), which exists in a “superposition” state; as Geometry Nodes, it allows to generate a Customized preset of original and special Pose Options (perhaps Posing Tools as well?) to the real Skeleton Rig, wich the 3D Animator can then Control, Pose and Keyframe directly; but changing the Tools & Options, of course, don’t affect the Pose nor the Keyframing Interpolation system: it just changes how the Rig functions (or it just changes how a certain Bone or group of Bones work in the Rig on that temporary choice).
The closest I understand Blender has got to this, is the Auto IK Option (not coincidentally, it is catalogued in Blender in the “Pose Options” Panel).

Definitively, because we are already starting from the Blender’s software condition, which was not designed originally for Ephemeral Rigging; even though, it can achieve at least certain aspects of Ephemeral Rigging, regarding certain features or uses of features, and, plausibly, through certain Rig builds, and also Addons/Extensions implementations to “vanilla” Blender, perhaps more to the core in the future? I’m not sure. I don’t know also if Ephemeral Rigging is the ‘only way’ around for ‘delivering the goods’. :laughing: What matters to me, as you may better observe now, is the Efficiency of the whole Posing-Keyframing-KeyframingInterpolation system for 3D Animation; it doesn’t matter for me, if that is achieved from something as specific as “Ephemeral Rigging” (as it seems to be according to various feedbacks I’ve read from a few Blender developers discussing the concept), or maybe from something that might be on a more or less equivalent level.

This guy has a blog: https://www.justtodosomethingbad.com/
…that has more info. I haven’t read into it too deeply yet (and probably won’t be able to comprehend if I did), so I don’t know how much of insight it can give.

Also, there’s this page: https://www.notionalpipe.com/ephemeral-tools

At a glance, I got the impression that control rig is “regenerated” on the fly somehow depending on current pose, a set of rules and current mode..?

He probably just uses dark magic :person_shrugging:

I think he used Python in Maya for tests before UE implementation.

Thanks @Pxy-Gnomes for posting the video, that explained what this is to me. I’m impressed… :exploding_head:

I don’t think its dark magic… I also don’t think the control rig is regenerated. I think how the controller bones affect the deform bones is based on the current pose, a set of rules, and current mode. Also think that it’s node based. Instead of adding constraints and drivers to control things, you’re building node trees instead.

For something like this in blender, dream on. I doubt it could be added without a major re-working of the current armature related code. Moving to a node based rigging system is something that I think is in the ‘idea stage’ of development…

As to the “Custom Pivot” rig, that’s a neat trick and could be useful.

Just my thoughts,
Randy