Age | Commit message (Collapse) | Author |
|
The main goals are to provide an official way for rigs to
interact in a structured way, and to remove mode switching
within rigs.
This involves introducing a base class for rigs that holds
rig-to-rig and rig-to-bone references, converting the main
generator into a class and passing it to rigs, and splitting
the single generate method into multiple passes.
For backward compatibility, old rigs are automatically handled
via a wrapper that translates between old and new API.
In addition, a way to create objects that receive the generate
callbacks that aren't rigs is introduced via the GeneratorPlugin
class. The UI script generation code is converted into a plugin.
Making generic rig 'template' classes that are intended to be
subclassed in specific rigs involves splitting operations done
in each stage into multiple methods that can be overridden
separately. The main callback thus ends up simply calling a
sequence of other methods.
To make such code cleaner it's better to allow registering
those methods as new callbacks that would be automatically
called by the system. This can be done via decorators.
A new metaclass used for all rig and generate plugin classes
builds and validates a table of all decorated methods, and
allows calling them all together with the main callback.
A new way to switch parents for IK bones based on the new
features is introduced, and used in the existing limb rigs.
Reviewers: icappiello campbellbarton
Differential Revision: https://developer.blender.org/D4624
|
|
Using obj.animation_data.drivers[-1] in driver creation is very
bad and error prone. After recent change in Blender, that won't
even work for drivers on Bone, so fix all such uses.
|
|
|
|
This reverts unnecessary renaming from b2b015a396372.
|
|
Refactor rigs to use the new make_property utility function,
and implement new 2.8 specific settings using it.
The default value is now important for NLA evaluation, and the
override flag will be used by the upcoming static override feature.
Default can be backported to 2.79 for 2.8 forward compatibility.
|
|
As suggested by @icappielo, and after discussion with @meta-androcto,
I start a public request to commit third-party contributions already
accepted to https://github.com/eigen-value/rigify/tree/rigify_0.6_beta
Specifically, this includes:
* User-defined rig package (feature set) support by @pioverfour.
This allows users to install pre-packaged rig sets via zip
files, which become accessible together with built-in rigs,
as discussed in T52758.
https://github.com/eigen-value/rigify/pull/1
* Modularization of python script generation, allowing rigs to
add their own utility functions and operators to the generated
script. This is critical to make custom rig support really
useful.
https://github.com/eigen-value/rigify/pull/5
* The utils.py file is split into multiple modules with a backward
compatibility proxy for old functions.
* Automatic verification that different rigs don't try to create
different rig settings with the same name to alleviate increased
risk of namespace conflicts with custom rigs.
https://github.com/eigen-value/rigify/pull/7
* New utility class that implements bone layer selection UI.
https://github.com/eigen-value/rigify/pull/6
* New utilities to replace copy & pasted boilerplate code for
creating custom properties, constraints and drivers.
https://github.com/eigen-value/rigify/pull/11
Some other random changes by MAD have likely slipped through.
These changes have already been extensively discussed and accepted
into the branch by @luciorossi, so I see no reason not to commit
them to the official repository to be tested during 2.8 beta.
Reviewers: icappiello
Differential Revision: https://developer.blender.org/D4364
|
|
|
|
|
|
|
|
In 2.8 depsgraph prints a lot of error messages if constraints try to
reference non-existant bones, which slows things down if nothing else.
|
|
Now all the widget elements are in the Widgets collection.
And the collection is hidden for the viewport.
There is one thing still not fully working, but it is a bug in Blender I
believe. Basically not all the custom bones are shown until you go to an
object that has its mesh and toggle in and out of edit mode.
|
|
With those changes the addon is working in some functional state.
Thus I'm bumping its version to 2.80.
TODOS:
* Handle collections (put all the new objects in a collection).
* We should also replace the old WGT_LAYERS with subcollections.
* Move toolshelf operators out of there (make tools or move to sidebar).
|
|
This fix an error introduced on fe90ef2b4.
|
|
|
|
Differential Revision: https://developer.blender.org/D3746
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
small fixes & UI improvements
|
|
|
|
|
|
reposition and shapes
|
|
|
|
|
|
|
|
operators did not have the "pole" property and snap functions did not address the "basic" and "pitchipoy" cases separately.
|
|
|
|
parent target in case main limb bone has no parent
|
|
Removed: child_of constraints and double matrix mult.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
D2114 by @icappiello
Scaling non uniformly the hand control on the rig generated with this type will lead to crazy deformations on the finger bones.
The problem is related to some “inherit scale” options on the parented bones.
In order to leave untouched the original Rigify code we created a new rig type and named it “super_palm” using the pitchipoy naming convection.
We changed the bone parenting so that the hand can be scaled non uniformly without destroying its children bones.
This new palm type is needed to append fingers and toes to the “paw” rig type.
|
|
D2114 by @icappiello
Sanitize float rounding error
|
|
|
|
Mode switching made this data invalid
|
|
Python 3.4.0 deprecated the "imp" module, and replaced it with
"importlib". This changes imp.reload() into implib.reload().
Reviewers: campbellbarton
Differential Revision: https://developer.blender.org/D1016
|
|
|
|
PitchiPoy Animation Productions is sharing its custom rig types
with the Blender community at large. The new rig types all start
with "pitchipoy." and are used in PitchiPoy's productions.
Of particular interest is a face rig type for auto-rigging faces.
Other rig types include:
- Tentacles
- Fingers
- Arms/Legs
- Spine/Torso
Many thanks to PitchiPoy for their hard work and for sharing this back!
|
|
The bbone elbow was causing weird twisting and sharp bend angles
even when smooth elbow/knee was fully disabled. Now fixed.
This fix, however, exposes bug #34532 in Blender, so for the time
being the transition between smooth/sharp elbow is a jumpy one.
This is less objectionable, however, then the weird twisting
that was happening, as bug #34532 can be worked around by the
animator, whereas the weird twisting could not be worked around.
|
|
Arm/leg rig upgrades:
- Arms and legs no longer scale with their parents, which was
problematic when e.g. the torso of a character did
squash-and-stretch causing the arms/legs to distort and shear.
- Squash-and-stretch for both FK and IK rigs.
- Rubber hose controls.
Misc changes/bugfixes:
- Rigify now locks all pose transforms for non-control bones
automatically.
- The README file now correctly reflects the new rig-type API.
- Scrubbed the code for unused variables and imports.
- PEP8 cleanups.
|
|
|
|
I have updated the rig type API to be a bit clearer based on my
interactions with Kfir from PitchiPoy.
I've also disabled the "delta" rig type, as it is very obscure and
mostly just confuses people.
|