Do offset groups need to be also "joints"?

Sorry for asking such trivial question but coming from another DCC, joints are strictly for deformation.

In Blender, joints are both deformation and control objects.
Still a bit weird but I made peace with that.

My question is do offset groups need to also be joints? Or can they just be empty nulls?

Thank you for looking at my problem.

I donā€™t know if I can help, but can you explain what an offset group is? (Maybe I can help if I understand, maybe Iā€™ll just learn something about how other engines work.)

Note that controls donā€™t have to be bones, they can be empties if you want. (Or mesh objects. Or any kind of object you want.)

1 Like

@bandages

RE: explain offset group
Thanks for the response. Offset group is not specific to a DCC. Basically, if you want to add additional control to your constraint.

For instance, you have a finger rig. The actual finger control would be to control the regular finger movement. However, if you want to add curl feature, you canā€™t add it directly to the finger control since its already driving the direct movement. You need an offset group for which you add the curl feature. And you stack other offset groups as needed.

A more immediate example would be in this thread I created earlier:
https://blenderartists.org/t/rotation-orientation-constraint-with-offset/1177776

RE: Note that controls donā€™t have to be bones
Well, I guess. But when I go to pose mode (which I guess the recommended way to animate your armature, I can no longer select any mesh or curves. I can only select bones.

Which I guess the reason why people emphasize that controls need to be bones too.

Okay, so you have a bone where you want individual control of each finger bone/knuckle, but you also want to manipulate something that curves all the knuckle bones at the same time?

Iā€™m not totally up on terminology, but I would consider anything that did that to be a ā€œcontrolā€ as well. Because, well, itā€™s something you use to control the way the mesh deforms.

The way that Iā€™ve seen Blender rigs named, basically anything that the animator interacts directly would be considered a control. A bone that actually deforms the mesh would generally be called a ā€œdeforming boneā€ and a bone that does neither (to kind of modulate controls, like changing a pivot point or marking a tail you want to track or something) would be called a ā€œmechanismā€ bone. Note that a bone could be both a control and a deform in a simple rig.

In your example, the way that this would likely be done would be, youā€™d have all your knuckle bones copying offset local rotation from a different bone (taking care to set knuckle bone axes, and generally assuming youā€™d only be rotating in a single, well-defined, possibly transform locked axis.) The knuckle bones could be simple control+deform bones, they could be controls that were copied/inherited further down the hierarchy by eventually deformers.

In 2.8, yeah, itā€™s a pain to move from an armature to a different type of object; in previous versions, it wasnā€™t nearly as painful (barely painful at all, and I donā€™t personally understand why they changed it.) However, think about if you took a simple five-bone skeleton, all bones are deformers, and gave each bone a child-of targeting an empty. Youā€™ve created a structure where you no longer have to interact with the armature at all. Essentially, the controls for your deforming bones are all empties.

Thatā€™s the simple example. But think also about how curves can be controls-- you can shapekey your curve, which shapekeys a spline IK chain of bones, you can hook your curve, from any controls you want for that hook.

Or, with shrinkwrap constraints, even the shape of a mesh can be a control, that can be used to tune interpolation curves or angle limits, and can interact with other objects via modifiers like booleans (or of course shapekeys).

There arenā€™t really any rules for how you want to control a mesh. What matters is who you want to animate your model, and how they like to work. If they expect bones and only bones, then itā€™s smart to give them that. But if theyā€™d prefer to never have to enter pose mode, and you as the rigger want to indulge them in that, itā€™s entirely possible.

I did see your other thread-- Iā€™m not sure how to answer it, except that yeah, Blender constraints havenā€™t always worked the way that I expected them to. I think part of that is that they transform rotation into Eulers which isnā€™t a great thing to do, but they also donā€™t seem to do a great job of keeping track of local axes throughout the entire constraint chain. I canā€™t answer your question about whether itā€™s a bug or what, but if you were describe in plainer English what your end goal was, I might be able to help with achieving that goal. (Just be warned, sometimes rigging solutions in Blender are more complicated than it feels like they ought to be.)

1 Like

Thanks for the response

RE: offset group
I get what you mean, but Iā€™m not sure we are on the same page.

Basically, the set-up would look like this
Say the finger has 3 joints (or bones in Blender)

It would look like this
The ------ means its a child above it

- Curl Control (controls all offset group through a driver)
- FingerA01_offset_group
------ FingerA01 Control/Deform Bone
- FingerA02_offset_group
------ FingerA02 Control/Deform Bone
- FingerA02_offset_group
------ FingerA02 Control/Deform Bone

Regarding the set-up, I have no question. It works.

Back to the main question is

Do offset groups need to be also ā€œjointsā€ much the same the controls need to be joints?

RE: However, think about if you took a simple five-bone skeleton, all bones are deformers, and gave each bone a child-of targeting an empty.
Uhm. It wouldnā€™t matter since I canā€™t select anything except bones in the pose-mode, correct me if Iā€™m wrong. Or are you suggesting to switch object mode to move controls then back again to pose-mode to move other controls?

RE: There arenā€™t really any rules for how you want to control a mesh.
By this statement, you meant going all object mode or pose mode, right? That is certainly a possibility. Iā€™m just a bit dubious since all the rigs I encountered uses pose mode to animate.

P.S.
I just donā€™t really get the need for making a distinction for armatures as a ā€œspecialā€ object.
Just let the bones be a separate object (i.e. select them at object mode) Done deal. No need for the Pose Mode. Much the same way with Maya, Max and Cinema4D. Oh and change the ā€œboneā€ as a ā€œjointā€. So no need to decide if they are connected or not. Let the hierarchy, do it.

Sorry, now Iā€™m just ranting.

Iā€™m afraid I donā€™t really understand your graph. And your curl control could use a driver, but thatā€™s far from the only way to do it.

Why are your other controls bones? Give them an empty too. From the sounds of itā€¦

ā€¦thatā€™s something that would appeal to you.

And yes, I agree. Blender has a lot of distinctions that it doesnā€™t need. Armatures are far from the only part of it thatā€™s like that. Is editing UVs really any different than editing a mesh? Do vertex colors and vertex weights need to be different things, or could the same tools be used to do all of it? Isnā€™t an environment texture node just a particular kind of coordinate mapping and an image texture node? Having fewer modes and distinctions would mean that we could use the tools we use to edit any of these things, but for all of these things, and with fewer lines of code, with a slightly simpler interface.

But, I guess thatā€™s what some people like.

As for terminology-- no, I donā€™t like ā€œboneā€ either. I used to prefer ā€œjointā€ because it highlights the essential bit of a bone, the origin, but then, physics have kind of taken that term already. It would be confusing. Like when people were making ā€œskinsā€ for Quake, they were making textures, lol.

1 Like

Itā€™s not necessarily a graph but a representation of the outliner. Hence, I said, ----- signifies a parent/child relationship.

I totally agree with this I like how you have the same commands for UV and modelling. Anyway, not sure bones is consistent with this philosophy with its specific modes.


Anyway, thanks for the response. Even though you didnā€™t directly answer it, Iā€™m just going to use joints as offset groups from here on out.

Armatures are supposedly self-sufficient for your rigging needs. Modifiers however usually want you to use an object to specify a deformation direction (bend, etc.), in addition to curves for splineIK thatā€™s the only ā€˜outside objectsā€™ that you would use in a rig, as far as I know. Bones (in an armature) are used as controllers as well as the deforming structure, and can be organized in layers, and colored, and given a shape, to make it clearer what theyā€™re used for.

Hadrien

1 Like

Thanks for the insight @Hadriscus. Yea, I guess the hunch is correct to keep all rig components as joints except when other objects are necessary like for deformation and splineIK