Age | Commit message (Collapse) | Author |
|
|
|
All metarigs are updated to use split spine components, as super_spine
is deprecated and won't generate FK controls for backward compatibility.
|
|
Match object orientations during join, as suggested by @pioverfour.
|
|
The layer selection for the spine tweaks happens to be the default value,
so simply copying the data does not overwrite non-default garbage values
remaining in some of the bones. To fix it's necessary to clear params.
|
|
By storing the Rigify advanced generation options (name, target rig,
target ui script) in the armature data instead of the window manager
as before, multiple rigs can have different options. Additionally,
these options are stored in the blend file, and not lost when reloading.
Also, the rig name is not automatically suffixed with `_rig`, which
doesn't make sense as far as I can tell.
Differential Revision: https://developer.blender.org/D5675
|
|
- Add a parent switch to the main spine control, to allow using the
key baking operator to convert between moving and fixed root bone.
- Add hips, chest and head as parents for children of the spine.
- Use 'Fix Shear' Inherit Scale and 'Make Uniform' Copy Scale in limbs.
- Switch code to use the new inherit_scale parameter of set_bone_parent.
- Allow local matrices in adjust_widget_transform_mesh.
|
|
The idea is inspired by similar shapes in other rigs like BlenRig.
The actual used shape is simply a circle deformed into a parabolic
shape when viewed from the side, added to create_circle_widget.
Using the new shape for the main controls allows adding extra FK
controls to the spine without visual confusion.
As an aside, fix a minor issue in handling bone_transform_name,
and remove redundant bone_transform_name=None parameters.
|
|
Toes behave as FK, but are needed both in IK and FK mode.
|
|
Support easier setting of bone orientation via matrix, inherit_scale,
invert_x/y/z constraint properties, computing a matrix from two axis
vectors, adjusting widget positions, and add a pivot widget.
|
|
Due to dynamically loaded rig modules, Rigify has to implement
reload by purging all non-core modules from memory, or class
inheritance checks won't work right after reload.
|
|
Allow easily inserting constraints and support rotation mode.
|
|
|
|
|
|
|
|
This may be useful for things like mirroring. Since the parameter
name space is shared by all rigs, it would be inappropriate for
individual rigs to add their specific callbacks to properties.
Differential Revision: https://developer.blender.org/D4624
|
|
New rigs provide the same buttons in their generated script UI,
and aren't compatible with the old panel code. To distinguish
rigs, remove old snap operators from the script.
Differential Revision: https://developer.blender.org/D4624
|
|
Spine is split into parts. Limbs and tentacles simply converted.
Differential Revision: https://developer.blender.org/D4624
|
|
Differential Revision: https://developer.blender.org/D4624
|
|
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
|
|
Patch suggested by @pioverfour.
|
|
Patch suggested by @pioverfour.
|
|
Differential Revision: https://developer.blender.org/D5240
|
|
|
|
Only objects in the current view layer can be deselected, this would throw an
error when there exist objects not in the current view layer.
|
|
|
|
Instead of adding the feature set installation directory
to the global path, and thus inserting the modules into
the top level namespace, add an empty rigify.feature_sets
package and use __path__ to redirect the module loader
to read its sub-modules from the feature set directory.
Now feature set modules are effectively installed into
that package and loaded as 'rigify.feature_sets.foo'.
As an aside, clean up loading code to avoid weird path
manipulations, add more safety checks when installing sets,
and add a way for sets to expose a user-friendly name.
|
|
|
|
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 can cause bugs where if the operator throws an exception, undo is not
properly enabled again. There have been maybe a dozen Blender bug reports
related to this. This could get worse now that we are autosaving preferences.
Some add-ons guard against this, but turning off undo should not be needed in
the first place. If the operator is set to do an undo push, any operators it
calls will automatically not do any undo pushes.
If this fail in some cases, it should be reported as a bug in Blender. I could
not find issues or a performance impact testing a few add-ons though.
Differential Revision: https://developer.blender.org/D4908
|
|
|
|
After the change in PoseBone.bone behavior, drivers will be added there.
|
|
Only my own branch and feature sets use this, so should be safe to change.
This naming is more similar to what blender UI does when adding vars.
|
|
The `Encode Metarig to Python` operator was broken as there was
some leftover code from the UI template system I made last year.
Differential Revision: https://developer.blender.org/D4827
|
|
- Take into account the custom shape settings of the bone when
creating and placing the custom widget object.
- Change write_widget to wrap the generated list text and fix
undefined variable errors if there are no verts/edges/faces.
- Automatically look up string to bone in self.make_driver().
|
|
- Added a utility for creating Transform Channel driver variables.
- Added a utility for deriving one bone name from another with suffix.
The bone name utility is inspired by get_bone_name from limb_utils.py
|
|
Since they are specific to the selected armature/bone, they
match that tab better, and the animator would want to have
them next to the built-in transforms and custom properties.
|
|
Otherwise the rig properties may not work correctly until blender restart.
|
|
Verify the basic expected directory structure inside the ZIP
archive before installing it, and catch exceptions when loading
the already installed packages.
|
|
Also add keyword-only argument markers for clarity.
|
|
Panel identifier naming restrictions are now enforced more strictly.
|
|
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.
|
|
Only visible and selectable collections can be used for temporary
objects during generation due to the way operators work.
|
|
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
|
|
|
|
|
|
|
|
The code attaching the UI script to the rig didn't check
that animation_data exists before accessing it.
|
|
|