diff --git a/README.md b/README.md index 37f0169..a3a8ad6 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,47 @@ # Damn Simple Pose Library -In Blender 3.x, a new Asset-based Pose system was introduced. -That's fine and dandy, however because of that, the old Pose Library was deprecated and gutted out real quick-like. Too quick. +In Blender 3.x, a new Asset-based Pose system was introduced. That's fine and dandy, but it was not (and still is not as of Jan 2025) ready to replace the old Action-based Pose Library system. -This brings it back as best as it can. +The former Pose Library was deprecated and gutted rapidly during Blender 3.x, leaving legacy users high and dry. This addon brings the feature back as best as it can in a modern panel. Most, if not all existing Pose Libraries should work without any modifications, little new is introduced outside of string suffixes and mitigations (read further). + +## Features + +- Supports Blender 3.3 - 4.3 (4.1 recommended). +- New panel interface for interacting with pose libraries, inspired by [gret's Actions Panel feature](https://github.com/greisane/gret?tab=readme-ov-file#animation-actions-panel). + - The older Pose Library list layout is provided as option. +- Operators and data property [that were removed in 3.5](https://projects.blender.org/blender/blender/issues/93406) are ported from C to Python: + - `dspl.apply_pose` + - `dspl.browse_poses` + - `dspl.create_pose_library` + - `dspl.convert_pose_library` + - `dspl.add_pose` + - `dspl.move_pose` + - `dspl.remove_pose` + - `dspl.rename_pose` + - `dspl.unlink_pose_library` + - `Object.pose_library` + +## Installation +1. [Download the repository as a zip](https://git.bkspl.me/breakingspell/DamnSimplePoseLibrary/archive/develop.zip), or otherwise clone the repository. +2. Install as an Add-on in Blender via Install -> Zip, and enable. +3. Optionally configure the suffix strings to fit your workflow, and whether the orhpan checker should run at startup. + +## Usage +1. Open Sidebar (`N`), and choose the `Pose` tab. +2. Select existing Pose Library from drop-down, or create a new library. + +### Hotkeys: + - `Shift + L` - Add/Replace Pose + - `Alt + L` - Browse Poses with Arrow Keys +### Menu Controls + - `Single click` - Apply Pose + - `Shift + Click` - Rename Pose + - `Ctrl + Click` - Remove Pose + - Choose `Edit` for fast Move/Rename/Removal + +## Considerations +- Opening older scenes will cause existing Pose Libraries to unlink from their former targets and fall into orphan state. They can be re-linked and will retain their link when saved afterwards, but would otherwise disappear if saved without linking or protecting the datablock. + - This is due to the core DNA type `poselib` having been removed, so objects will drop the data. [There is no way to prevent this](https://developer.blender.org/docs/features/core/rna/#internals) as Python ID properties cannot be present at program runtime, only once the add-on is initialized. + - To mitgate, an operator is provided to protect orphaned pose libraries: `dspl.protect_orphan_pose_library`. + +- This add-on was made much easier by the `pose_markers` property being retained for converting old pose libraries to the new asset system. If they decide to remove that property as well, there will be a need to improvise an index-based lookup. diff --git a/__init__.py b/__init__.py index e5c7d17..6d7a78b 100644 --- a/__init__.py +++ b/__init__.py @@ -3,10 +3,10 @@ from . import gui, operators, common, keymaps bl_info = \ { "name": "Damn Simple Pose Library", - "author": "jackie", - "version": (4, 1, 0), - "blender": (3, 5, 0), - "description": "woah", + "author": "breakingspell", + "version": (0, 1, 0), + "blender": (3, 6, 0), + "description": "Re-implement Pose Library", "category": "Object Data", }