# Asset Browser Pose Library Demo This document lists things we'll want to show in a demo of the Asset Browser & Pose Library demo. > [color=#8d8] > **NOTE:** this demo will primarily be about the pose library, and only touch upon general asset workflow. Disucssing the latter is for the workshop. This includes navigation & filtering of poses. ## Outline - Asset Basics - Pose Library: Use - Pose Library: Creation - Pose Library: Exploration - Asset System Ideas ## Asset Basics - Recap of what an asset is: - Datablock with meaning - Appended, Linked, or, in the case of presets, applied - Blender has been extended with temp-loading for preset use ## Pose Library The pose library contains only *preset-style* assets. ### Pose Library Use - Basics: - Add the library directory as an asset lib (preferences) - Ensure the asset browser is visible in the current workspace - Switch the asset browser to the pose library (i.e. filter to Animations) - Some functionality provided by add-on, enabled by default. > [color=red][name=Sybren] TODO: skip "basics" in prezzo, go directly to use. > [color=red][name=Sybren] TODO: pre-record what we want to show in video. > [color=red][name=Sybren] TODO: add outline of different use cases - From the Asset Browser - Click pose to select - Optional: select bones to apply the pose to - Use *Apply Pose* button to apply the pose instantly, or double-click. - Use *Blend Pose* to interactively blend the pose into the current pose. Press Tab to toggle between the original and the blended pose. - Use *Flip Pose* checkbox before pressing a button to apply/blend flipped - Use *Select* to select the bones used in the pose - From the Pose Library Side-panel in the 3D View - Click to apply pose - Drag to blend pose - Ctrl+F to search poses - Cursor left/right to toggle between poses (future) > [color=red][name=Sybren] TODO: pose blending: support ctrl for snapping and shift for precision mode. - Auto-keying is fully supported ### Pose Creation > [color=red][name=Sybren] TODO: add little outline - Design Rules: - Each pose is its own data-block - Poses are encapsulated. They don't depend on other data-blocks and their previews are stored as part of the data-block. - Poses are stored in the current blend file - Creating a pose asset from an animation editor implies setting it as active action, so that it can be inspected and adjusted - Basic pose creation flow with 3D View + Action Editor: - Pose character - Select the bones that should be in the pose asset - Press "Create Pose Asset" button in the Action Editor - Action switches to new asset action - Rename the pose asset action in the Action editor - Click the 'X' in the Action editor to no longer edit the pose action. - Original frame number of pose is remembered - Select "Smug 2" - Assign Action - See that it was created on frame 20 - Go to frame 20 to see correct camera & background - Pose creation from existing animation - Pose character, possibly by going to a certain frame - Select the bones that should be in the pose asset - Press "Create Pose Asset" button - Action switches to new asset action - Rename the pose asset action in the Action editor - Click the 'back' button in the Action editor to go back to the original Action. > [color=orange] > **Note:** This "back button" is temporary behaviour of the add-on. Blender should > get a concept of "temporary action", "temporary override", or "local view" for this kind of flows, in the same way that > the NLA system has (but implemented better). That can then just be deactivated to bring the animator back > to their previous state. - Basic pose creation flow with 3D View + Asset Browser: - Pose character - Select the bones that should be in the pose asset - Press "Create Pose Asset" button in the 3D Viewport - Rename the pose asset action in the Asset Browser - Including custom bone properties in the pose - [color=orange] Not recorded as video, just explain - Useful for IK/FK switching etc. - Pose the character - Key the custom properties that should be in the pose asset - Create pose asset as usual. - Copy-paste from anim file to pose library - Pose character, possibly by going to a certain already-keyed frame - Select bones - Press "Copy Pose As Asset" - Right-click on an existing pose, choose "Open In Blender" - Press "Paste Asset" in the Asset Browser - Set name, description, regenerate preview - Save & Quit - Original Blender reloads poses ### Pose Editing - Poses are Actions, and can be edited as such - *Activate & Edit* button in the Asset Browser ### Pose Exploration for Creation - Have character + poses in the Asset View - Use mouse/pen or cursor keys to quickly switch between poses - Use dragging on a pose icon to blend that pose into the current pose > [color=#8d8] Idea for future: allow setting blend percentage on multiple poses simultaneously, then have one confirmation action that blends all of them into the current pose. ## Asset System Ideas > [color=#8d8] The points below are ideas for the future, and only serve as a "bigger picture" in which the pose library will fit. - Assets are location-independent - Can be directly loaded from a library on disk - or from cached file downloaded from more elaborate system. - Use [URI](https://en.wikipedia.org/wiki/Uniform_Resource_Identifier) for identifying the asset as well as its library - Used as identifier, not necessarily as locator - `file:///path-to-file.blend/Objects/objectname` - `library://SpriteFright/victoria-poses.blend#Actions/spray` - `cloud://cloud.blender.org/project/assets/characters/victoria/poses/spray` - `project://sprite-fright/characters/rex/poses/smile` - Add-ons can register `scheme://hostname` URI prefixes and serve assets to Blender - Takes request to load a certain URI - Provide the identified datablock - Addon determines whether linking is possible (otherwise only append/preset) - LIB datablocks for asset library links - Use URI to specify the library source - Can quickly produce proxy ID to represent asynchronously loaded datablock - Once loaded, real datablock replaces proxy - When linked blend file changes location, it can be re-linked transparently to the user by using the URI system.