Rigify limbs needs enhancements to better support unguligrade animals (horse) setup #78463

Closed
opened 2020-06-30 16:11:49 +02:00 by Ivan Cappiello · 10 comments
Member

As reported by @Papercut-4 in #78217 paw rig type appears to have limitations on the unguligrades rear limbs.

There is a patch D8154 submitted by @Mets that solves the issue on the lower part of the limb by replicating the front limb setup.
This has some critical issues need to be solved:

    • the ik is now ending before the knee.
    • adding a shoulder-like bone corresponding to human thigh to extend the ik will not extend the b-bone and tweak setup. Tweaks are often used to simulate muscles and fix deformation issues and in this kind of setup the part with more muscle mass will not be tweakable at all. Moreover all the parenting/switching mechanism will not consider this pseudo-shoulder bone as real limb root for the domain options.
If @Mets setup should stay it will probably require either:

~~ - - [ ] modify the basic copy (or add a new rig type) to support a simple b-bone split + tweak chain. In this case we could end having overlapping tweak controls on the knee.~~

~~Or better:~~
~~- [ ] Create a rear_paw separate sample based on 5 bones as input including the first fk extra control that will inherit all the b-bone split parameter and tweaks from the general properties.~~
  ~~- [ ] (double check) main control and all the parenting/switching mechanism should be moved to the first bone.~~

There are also some minor issues that needs to be tackled:

    • the foot ik control is not positioned correctly.
    • Code the new rear_paw sample following design from attached blend file
    • Replace the sample in horse metarig
    • Test if other animal metarigs can benefit an upgrade

side note:
The controls naming is open to discussion. In my opinion naming should follow comparative anatomy (so human centric) because will make easier for the user understand the supposed usage of controls. Naming bones as in the animal anatomy can be confusing since most of terminology is obscure for basic users.

As reported by @Papercut-4 in #78217 paw rig type appears to have limitations on the unguligrades rear limbs. There is a patch [D8154](https://archive.blender.org/developer/D8154) submitted by @Mets that solves the issue on the lower part of the limb by replicating the front limb setup. This has some critical issues need to be solved: - - [x] the ik is now ending before the knee. - - [x] adding a shoulder-like bone corresponding to human thigh to extend the ik will not extend the b-bone and tweak setup. Tweaks are often used to simulate muscles and fix deformation issues and in this kind of setup the part with more muscle mass will not be tweakable at all. Moreover all the parenting/switching mechanism will not consider this pseudo-shoulder bone as real limb root for the domain options. ``` If @Mets setup should stay it will probably require either: ``` ~~ - - [ ] modify the basic copy (or add a new rig type) to support a simple b-bone split + tweak chain. In this case we could end having overlapping tweak controls on the knee.~~ ``` ~~Or better:~~ ``` ``` ~~- [ ] Create a rear_paw separate sample based on 5 bones as input including the first fk extra control that will inherit all the b-bone split parameter and tweaks from the general properties.~~ ~~- [ ] (double check) main control and all the parenting/switching mechanism should be moved to the first bone.~~ ``` ~~There are also some minor issues that needs to be tackled:~~ - - [x] the foot ik control is not positioned correctly. - - [ ] Code the new rear_paw sample following design from attached blend file - - [ ] Replace the sample in horse metarig - - [ ] Test if other animal metarigs can benefit an upgrade side note: The controls naming is open to discussion. In my opinion naming should follow comparative anatomy (so human centric) because will make easier for the user understand the supposed usage of controls. Naming bones as in the animal anatomy can be confusing since most of terminology is obscure for basic users.
Ivan Cappiello self-assigned this 2020-06-30 16:11:49 +02:00
Author
Member

Added subscribers: @Papercut-4, @icappiello

Added subscribers: @Papercut-4, @icappiello
Author
Member

Added subscriber: @Mets

Added subscriber: @Mets
Ivan Cappiello changed title from Rigify limbs needs enhancements to better support unguligrades animal (horse) setup to Rigify limbs needs enhancements to better support unguligrade animals (horse) setup 2020-06-30 17:20:17 +02:00
Member

It's interesting that there is already a rear_paw rig type in Rigify, but it's just a copy of the paw rig type. Perhaps that could be extended to support 5-length chains?

Do you have an example of how exactly the rigging should be done though? It's not entirely clear to me what would be the best control setup for the end of the limb. Which segment or segments should have this "reversed" control, which in the current paw rig type is called "bonename_heel_ik.L".

On somewhat of a side note, I'm interested what you think of the control setup that Juan Pablo made for the legs of Autumn, the dog from the shortfilm Spring:
autumn_leg.blend
I didn't dive into how this works under the hood, but it feels really nice imo, and it doesn't use an IK constraint with a chain length of more than 2. But it being a dog, I'm not sure how relevant it is here. Just thought it might be useful.

Also note that while I am definitely interested in working on this, I'm not working with any quadruped characters at the moment at the studio, so I don't promise that it's something I will do in the near future :x

It's interesting that there is already a `rear_paw` rig type in Rigify, but it's just a copy of the `paw` rig type. Perhaps that could be extended to support 5-length chains? Do you have an example of how exactly the rigging should be done though? It's not entirely clear to me what would be the best control setup for the end of the limb. Which segment or segments should have this "reversed" control, which in the current paw rig type is called "bonename_heel_ik.L". On somewhat of a side note, I'm interested what you think of the control setup that Juan Pablo made for the legs of Autumn, the dog from the shortfilm Spring: [autumn_leg.blend](https://archive.blender.org/developer/F8659545/autumn_leg.blend) I didn't dive into how this works under the hood, but it feels really nice imo, and it doesn't use an IK constraint with a chain length of more than 2. But it being a dog, I'm not sure how relevant it is here. Just thought it might be useful. Also note that while I am definitely interested in working on this, I'm not working with any quadruped characters at the moment at the studio, so I don't promise that it's something I will do in the near future :x
Author
Member

The rear_paw as sample exists just to give the user a placement idea. It's basically exactly the same super_limb>paw type.

Autumn leg seems to handle the thing quite well from what i see but it seems there is a combination of automation and some ik_toes that are involved. Rigify it's considering just the limb connected chain and fingers, palm and all the rest are considered separate sub-rigs.
The issue with unguligrades like horses is that ideally they are walking on the last finger's digit.
So that's the complication for unguligrades whose need to include a sort of digit bone to their chain in rigify.

from some quick tests i did it can be done including one more connected digit bone to the end of chain and extending the same ik_heel setup to the digit, but we will need to create a proper rear_paw sub_rig in limbs to achieve that.

The rear_paw as sample exists just to give the user a placement idea. It's basically exactly the same super_limb>paw type. Autumn leg seems to handle the thing quite well from what i see but it seems there is a combination of automation and some ik_toes that are involved. Rigify it's considering just the limb connected chain and fingers, palm and all the rest are considered separate sub-rigs. The issue with unguligrades like horses is that ideally they are walking on the last finger's digit. So that's the complication for unguligrades whose need to include a sort of digit bone to their chain in rigify. from some quick tests i did it can be done including one more connected digit bone to the end of chain and extending the same ik_heel setup to the digit, but we will need to create a proper rear_paw sub_rig in limbs to achieve that.
Author
Member

so this is my proposal to handle the rear_paw. i am attaching a blend file with both metarig and reference rig to be generated.
rear_paw_NEW.blend

so this is my proposal to handle the rear_paw. i am attaching a blend file with both metarig and reference rig to be generated. [rear_paw_NEW.blend](https://archive.blender.org/developer/F8661280/rear_paw_NEW.blend)
Member

Awesome, the rig in that file looks good to me. I'd be happy to submit a patch that implements this in a rig type when I have time, unless someone beats me to it. Added it to my TODO list!

Awesome, the rig in that file looks good to me. I'd be happy to submit a patch that implements this in a rig type when I have time, unless someone beats me to it. Added it to my TODO list!
Ivan Cappiello removed their assignment 2020-07-03 11:54:22 +02:00
Demeter Dzadik was assigned by Ivan Cappiello 2020-07-03 11:54:22 +02:00
Author
Member

Added subscriber: @angavrilov

Added subscriber: @angavrilov
Author
Member

Since Design is done in my opinion, i am assigning the code part to @Mets unless @angavrilov can find some time to handle it before him.

Since Design is done in my opinion, i am assigning the code part to @Mets unless @angavrilov can find some time to handle it before him.

This issue was referenced by 46590bb780

This issue was referenced by 46590bb7800eea5aa1826f6e9305d7e0320829be

Changed status from 'Needs Triage' to: 'Resolved'

Changed status from 'Needs Triage' to: 'Resolved'
Sign in to join this conversation.
No Milestone
No project
No Assignees
4 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: blender/blender-addons#78463
No description provided.