Age | Commit message (Collapse) | Author |
|
Split the parent mch bone and its rigging together with the control.
|
|
Some files needed to be changed manually.
|
|
For backward compatibility the option technically defaults to
old behavior, but all metarigs are changed to the new mode.
|
|
For IK controls that move freely in space without being tied to
a parent it makes sense to align the location channels to world
(or root), while keeping rotation channels aligned to the limb
end orientation.
Blender already has a Local Location parenting option for this
very use case, but Rigify wasn't using it. This adjusts the
switchable parent mechanism so that the option works as intended,
and provides a Rigify option that controls its value for IK controls.
Note that now it is possible to enable the Local Location option
directly on the control bones after generation and it will work
correctly - it is not required to enable IK Local Location.
|
|
|
|
|
|
|
|
If the coordinate space of the eyelids is computed only from the
eye rotation center points and corners, it fails if the center is
close or in front of the line connecting the corners.
Instead, compute the space based on the main eye axis plus the line
between corners, which only slightly changes the result compared to
the previous method, but is more robust.
|
|
See T95597
|
|
- Clear the IK toe control animation in the relevant operator.
- Allow changing the euler order of finger master control via metarig.
|
|
|
|
|
|
Currently the leg rig tries to share one control between IK and FK
modes, which looks as a nice optimization at first, but makes it
impossible to IK/FK snap correctly if the IK foot is rolled forward.
This commit adds an option to generate separate toe controls.
|
|
Contributed by luzpaz.
Differential Revision: https://developer.blender.org/D5801
|
|
|
|
Existing IK & FK controls only allowed squash and stretch scaling.
|
|
|
|
|
|
The master control rotated to match the limb rest roll, because
for an unknown reason the roll was reset in edit pose.
Inner tweaks could rotate if roll of master tweaks wasn't matched.
To fix this, compute and apply the interpolated roll.
|
|
After introduction of the Custom space it is possible to easily
use Limit Distance within rigs while accounting for rig scale.
This allows replacing the Stretch To + Limit Scale mechanism
used for the IK stretch switch in rigify.
Instead, use the freed bone to manually handle limb swing before
allowing the actual IK solver to handle limb contraction. This
improves stability in marginal cases of limbs nearly straight
in the rest pose, because previously the solver could destroy
the slight knee bend in the process of swinging the limb forward,
causing a flip.
|
|
After the custom shape scale property was split into an XYZ vector,
it is possible to generate truly mirrored widgets using the same
mesh for the left and right side. The widgets Rigify generates are
originally symmetrical, but in practice they usually need to be
tweaked to fit the character better, and proper mirroring matters.
This commit implements widget mirroring and enables it by default.
When reusing widgets left from a previous generation the code tries
to detect whether they were actually originally mirrored by checking
object scale to avoid flipping in pre-existing rigs.
As an aside, reusing pre-existing widgets is made more robust
to random name changes by building a table via scanning the old
generated rig before overwriting it.
|
|
This allows cleanly avoiding reparent propagation between mirror
siblings, which causes weird deformation in chains.
|
|
Converted from the script originally included in the feature set.
This operator aims to preserve compatibility with the existing weight
painting, but not animations, since the latter is impossible anyway
due to major differences in the rig chains.
|
|
Realized this can be simplified while writing wiki dev docs...
|
|
Apart from imports the files are identical to the latest version.
Ref T89808
|
|
|
|
|
|
Improve auto-generated UI naming and update basic.pivot, basic.raw_copy
and basic.super_copy. Also allow raw_copy to generate builtin widgets.
|
|
|
|
Use DEF: or CTRL: prefix on constraint names to move them during relink.
|
|
Register the most generic widgets in the list and add a few more.
Use it to assign a nicer looking shoulder widget in human metarigs.
|
|
Also make error handling more robust and extend constraint relink mixin.
|
|
- Don't try to add an update callback to CollectionProperty.
- Restore exact alignment of the super_finger master control to 1st bone.
- Add an option to run a sub-object after all methods of the parent.
- Fix wrong identifier in SideZ.from_parts.
|
|
|
|
Originally the raw_copy rig used a standard API of rigify to rename
the bone after generate already added an ORG prefix. However, if the
bone already had that prefix, generate didn't add the second one to
avoid 'ORG-ORG', and thus raw_copy removed the only remaining prefix.
As the simplest solution, hard-code handling of this rig in generate.
This isn't that bad, because this rig is special by definition, and
the special handling consists in doing nothing.
The original API based code is kept commented out as an example.
|
|
Also fix metarig Inherit Scale support in limbs.super_finger.
|
|
Add support for 5 bone chains to the limbs.paw rig.
Implement a new limbs.rear_paw rig, which provides a three bone IK
mechanism designed to keep the first and third bones nearly parallel
by default (based on a YouTube video by @Pieriko as suggested by
@icappiello).
Implement a limbs.front_paw rig with automation that aims to
keep the angle between second and third bones mostly stable
by default (has influence option), as suitable for front paws.
The horse and wolf metarigs are updated to use these new rig
types, with the horse rig further overhauled by @icappiello.
Maniphest Tasks: T78463
Differential Revision: https://developer.blender.org/D8496
|
|
It has been long enough since 2.82 when Swing was added to use this.
|
|
In 2.90 derived bone lookup was tightened to fix certain issues when
bone names use the .001 suffixes by using explicit data about which
bone is derived from which one. Unfortunately, legacy rigs don't
provide that info, so add a special case using matching by name.
Also fix incorrect error reporting method name.
|
|
This class exists specifically for the purpose of defining and drawing the UI for bone layer assignment parameters, as seen in other rig types like super_chain, limb_rigs, simple_tentacle, etc. Only super_face was missing it for some reason.
Although the way it is used may be questionable, it's consistent with the rest of the codebase.
No functional changes.
Note for future: I would also like to use the ControlLayersOption class in even more places, and also maybe rename it and make improvements to it as needed. This would also be part of a bigger design of how Rigify handles bone organization, which I should write down.
Reviewed By: sybren
Differential Revision: https://developer.blender.org/D8802
|
|
Just removes an empty file and redundant function definition. No functional changes.
Reviewed By: sybren
Differential Revision: https://developer.blender.org/D8804
|
|
|
|
It is not really safe to assume that by swapping ORG to DEF you will
get a deform bone derived from the given ORG bone. The new base rig
API already tracks copying of bones, so polish it up and use here.
Note however that this tracking doesn't work with bones created
without self.copy_bone, e.g. by legacy rigs.
|
|
Just removing some unused imports.
I tested generating every built-in metarig to make sure I didn't remove any imports that were actually used. I also tested installing and using a feature-set.
Reviewed By: angavrilov
Differential Revision: https://developer.blender.org/D8026
|
|
This implements Ivan's suggestion: all the constraints on
spine bones have to be moved from ORG to its DEF bone. All
the spine ORG-bones have to be unconnected-children of their
corresponding tweak.
This is actually how chain rigs work in my own Rigify feature set,
so as far as I'm concerned this is a tried and viable solution.
The result is that, if you want to parent something to your chain
rig, you can do it in two ways: If you parent it to the ORG bone
(ie. by default), it will not inherit any squash and stretch induced
by the "tweak" bones. If you parent it to the DEF bone however,
it will behave the same as before.
This raises a backwards compatibility concern; If you want the old
behavior, you have to express that in your metarig explicitly, by
parenting your bone to the DEF bone in some way. This patch also
only affects the spine rig, which makes it inconsistent with other
chain rigs in Rigify in this regard.
Maniphest Tasks: T74483
Differential Revision: https://developer.blender.org/D7801
|
|
|
|
The expression {'y' or '-y'} was reduced to {'y'}
|
|
|
|
Add a separate rig aimed at transferring bones from the metarig
completely verbatim without the ORG prefix, and remove the hacky
copy_chain/super_copy option for renaming ORG to DEF. Share the
constraint retargeting feature between super_copy and raw_copy.
|
|
Basic IK support in fingers could be useful for easily
avoiding fingertips sliding when animating minor movement
between the hand and an object it is holding.
As there are 10 fingers, to limit the performance impact the
IK itself is implemented using just one extra control, one
constraint, and one driver. The parent switch adds one more
bone, constraint and driver.
This simple implementation requires applying IK as a correction
on top of the FK shape to share the FK controls for precisely
defining the shape, which means that stretch can't be implemented
without giving up on exact IK<->FK snapping. This also means
that unlike limbs this IK is not indended for independent use,
and must always be used as a local anti-slide fix on top of
primarily FK animation.
The parent switch is designed to work with the extra wrist
control and/or a held object pivot, demonstrating the tag
feature of SwitchParentBuilder.
|