--- tags: Workshop --- # User Stories & Scope Notes ## Expected Outcomes (Informal) :::info You may want to skip this section. It was merely written to establish the following, much more important section where we cover [user stories](#User-Stories). ::: Everybody can add expected outcomes here. ### Outcomes For Users - Q: How much of this is *Asset Browser* in general, how much is *Asset Bundle*? [name=Julian] - Should the asset bundle include the tool presets configuration for tools to be usable or should that always be part of Blender? [name=Pablo D.] - Makes Blender easier to learn, because you have many starting points available, and because you can dissect how assets are made [name=William] - The musical instruments principle: artist can learn one part of Blender (ie modeling, animation, etc) without having to know how to do the rest - Take advantage of online community and ethos of sharing - Dissect assets: look into how professional assets can be made, learn from them. [name=Julian] - Dissect assets: understand how a complex tool works by looking at a meaningful configuration for it. [name=Pablo D.] - Makes making projects in Blender faster, because you don't have to build everything from scratch, and you can easily re-use old assets you already made [name=William] - Many pro modellers like to avoid modeling for eg an ear from scratch, or skin shaders, etc - Quickly create scene mockups, e.g. for the layout process of a movie. [name=Julian] - Makes Blender a lot more fun and rewarding, because you can easily make something good looking quickly [name=William] - Kitbashing - Stencils [name=Pablo D.] - Material compositing [name=Pablo D.] - Lighting setups [name=Pablo D.] - Procedural tools (particle brushes, procedural objects, hard surface boolean tools...) [name=Pablo D.] - Work visually. The asset browser gives previews and interactive feedback while dragging assets. [name=Julian] - Makes tools in Blender more accessible and allows more complexity by managing preconfigured presets. [name=Pablo D.] - Novice artist will be able to use the system using the preconfigured presets without understanding how to build a configuration from scratch for a complex tool. - The tool configuration can be simplified by the preset to show only what is relevant for the preset intended action. - Experience artist will work fasters as they won't have to configure the tool multiple times to get the same known behaviour. - Improve productivity of collaborative projects, by making it faster to identify and link project assets together [name=William] - This includes temporary sharing, like one animator sharing the final pose of a character in shot N with the animator working on shot N+1. [name=Sybren] - Improve remote collaboration via online real-time collaboration (think Omniverse) [name=William] - Streamlined UI for browsing/using assets. Gone are the days of 10 asset add-ons with 10 different UIs :) [name=Julian] ### Outcomes For Blender - Aligns with Blender's openness by letting users easily share assets with one another [name=William] - Cater better to certain markets where Blender is not as strong as it could be (animators, architects etc) [name=William] - Better meet "*industry*" and user expectations: CG software is expected to cover good asset management systems. [name=Julian] - Give starting point for studios and asset services so they don't have to write their Blender based asset systems from scratch. [name=Julian] ## User Stories We used user stories as a way to understand the scope of the product. :::info **Color tags:** - [color=green] **green**: everybody agrees this is to be part of the product. - [color=orange] **orange**: general agreement on the user story, but may not be part of the product depending on the outcome of further discussion. - [color=red] **red**: explicitly out of scope for this product. ::: **Note:** Many of these stories are long term outcomes, not necessarily medium-term or even 3.0 ones. ### Overall - [color=green] As an ***artist***, I can organise assets in a way that makes sense to my situation, i.e. organise poses by character/body part, or mesh objects by type (furniture, clothing, etc.) [name=Sybren] - Q: is this really as asset user, or as asset creator? [name=Julian] - A1: The catalogs are defined on the asset library; having write access there allows this organisation. - A2: dynamic catalogs can be stored in your user preferences, so can help organisation of otherwise read-only assets. - *End of workshop conclusion: Confirmed, these are the catalogs.* - [color=red] As an ***artist***, I can update assets I used in my scene to the latest revision. [name=Sybren] - Nice feature, but hard to implement well. - Hard to draw a line between "still the same asset" vs. "new object" when editing is possible. - Could be doable with linking & not allowing the linked asset. - May be something for a future asset management system, and not for the browser project. - [color=green] As an ***artist*** working on a lot of varied tasks I can tag my presets, assets and libraries to be task-specific and have the UI more focused. [name=Julien] - This could translate to filter settings, for example on tags, that can be configured per workspace and then are applied to all asset browsers/views in that workspace. - This may not have to be a workspace level feature when the general filter and navigation system is powerful enough, but the use case should definitely be covered in one way or another. [name=Julian] - [color=red] As an ***artist***, I can move assets between asset libraries. [name=Sybren] - There should be tools to make this easier, but this may be better off as not part of the *core* Asset Browser design. [name=Julian] - How/where would the asset be stored? How will dependencies be handled? etc. - Blender would have to make a number of decisions for the artist. - This could be done with a separate tool for TDs that work across different blend files (idea by Ton). - [color=red] As an ***artist***, I can move assets between blend files in the same asset library. [name=Sybren] - Same as above (moving assets between libraries). - [color=green] As an ***artist***, I can see which blend file contains an asset. - In the Asset Browser - In the Asset View - [color=green] As an ***artist*** I can see non-Blender files, of types it can use directly, in the Asset Browser (e.g. HDRi, WAV, OpenEXR, OpenVDB). - [color=red] As an ***artist*** I can import non-Blender formats (GLTF, USD, Alembic) by dragging them from the asset browser into the scene. - Too complex for now, for example USD could span an entire tree of directories and files, with three files per object. - This could still be made to work, but may be a project on its own. - [color=green] As an ***artist*** I can access textures/models/materials from an online store in the asset browser. [name=Sybren] - [color=green] As an **artist** I can use a streamlined, familiar UI for multiple asset services. [name=Julian] - As opposed to a bunch of add-ons all defining their own asset UIs. ### Ready-made assets - [color=green] As a ***novice artist***, I am able to focus on learning ONE area, with ready-made assets filling in the areas I am not currently learning [name=William] - We should make it explicit whether an asset in the bundle is for learning or ready to use in productions. [name=Pablo D.] - The bundle will not replace the professional online asset markets. Its aim is to get you started easily working on your file. [name=Julian] - [color=orange] As a ***novice artist***, I can learn from skilled community members, by using and dissecting assets made by experienced artists [name=William] - It is debated whether "only for learning" assets should be in the bundle, or in separate demo files (as already available on b.org) - [color=green] As a ***layout artist***, I am able to roughly sketch out my environment using ready-made assets, rather than having to build everything myself [name=William] - [color=green] As a ***professional solo artist*** working on a deadline, I can finish my projects faster because I don't have to build everything from scratch [name=William] - [color=green] As an ***architect***, I want to focus on my building, and then fill in the details with existing assets (trees, lamp posts, etc) [name=William] - [color=green] As an ***animator***, I can more easily learn to animate if I have access to pre-made, high quality rigs, without having to spent time to manually search and download items from the web. [name=William] - [color=green] As an ***artist***, I am able to experiment with different ideas early in the process, because I can try out various assets without losing focus on the currently open Blend file [name=William] - [color=green] As an ***artist***, I can load procedural, non-destructive assets and manipulate them with high level controls. [name=William] - For now this is covered by node groups as assets, where you can manipulate the inputs of those node groups (e.g. blur and opacity of a vignette node group from the asset browser). [name=Julian] ### User-defined assets - [color=green] As a ***professional solo artist***, I want to save a self-made asset for reuse later [name=William] - [color=green] As an ***artist***, I can throw away assets as easily as I can create them. [name=Sybren] - Note that this does not imply "easy", but stresses the importance of symmetry between the ease of creating an asset and the ease of throwing it away. - Initially this is for the current blend file, as (for now) creating assets in a different blend file is not possible. - E.g. the current implementation violates that: *Mark Asset* sets a fake user, *Clear Asset* doesn't remove it (for good reasons). - [color=green] As an ***artist***, I can browse and get an overview of the assets inside the current Blend file [name=William] - [name=Julian]: we need to be careful here, depending on the exact meaning. This story could translate to any of these: - [color=green] All assets that are *defined* in this file, i.e. all datablocks marked as Asset (already covered by the Current File asset library). - [color=red] All datablocks marked as Asset + their dependencies. - [color=red] All assets that are *used* in this file (i.e. assets that were dragged into the file). - [color=red] Any datablock, like "all materials in this file". - Also: What is meant with "overview"? Something shorter than the regular asset list? - Assuming it refers to the regular asset list, and the first of the possible meanings, this is a [color=green] green user story. - [color=green] As a ***conceptual 3D artist***, I can reuse procedural material & lighting setups to render previz artwork of sculpts & scenes. [name=Julien] - [color=orange] Light setups can be covered by having a Collection marked as asset, but HDRi world lighting cannot be part of this then. [name=Pablo D.] - After further discussion, decision was that although this could be supported, we need to see more use cases for it. For now it's probably not in scope. - Dragging in multiple assets at once should become possible as an alternative. - Basic lighting setups already covered by the asset bundle as made by Metin Seven. [name=Julian] - Maybe we should have "linked assets" or "merged assets", where a lighting setup in a collection is combined with HDRi settings for the World. [name=Pablo D.] - For core Blender it would be nice to have scripts attached to datablocks. This is also desired for rigs, to have some code that runs when appending/linking the rig to the current scene, or when opening a file that contains the rig. Could be as simple as an ID property that points to a text datablock + some UI/UX to make the relation clear. [name=Sybren] - [color=green] As a ***tutor*** I can share assets, presets, brushes and setups for the audience to follow along and replicate steps. [name=Julien] - This could be an application template that includes an asset library. [name=Julian] - [color=green] As an ***artist***, I can filter metadata on all assets, including names and tags [name=William] - [color=green] Filtering on all assets within a single asset library - [color=orange] Filtering all asset libraries at once is tricky. Besides being a possible source of confusion, this also needs to be thought out well in terms of privacy and unexpected network access. - [color=red] As an ***artist*** I can define a custom order for the assets to show in the asset browser. - Technically this is difficult to solve in a solid way. For now the focus will be on bringing better organization, navigation & filtering functionality instead. ### Project-based workflows - [color=green] As a ***member of a movie production***, we are able to collaborate faster, because I can easily see and access assets made by other team members [name=William] - [color=green] As an ***animator in a movie production***, I can work faster because I can choose from on-character poses and animation snippets. [name=Sybren] - [color=green] As an ***animator in a movie production***, I can work faster because my colleagues can share any character pose and animation snippet. [name=Sybren] - Note: details of the sharing system (Dropbox, Syncthing, Subversion) are not part of this user story. - [color=green] As an ***animator*** I can configure Blender to automatically filter the pose library to only show assets suitable for the character(s) I'm animating at this moment. *note: this could be extended to any artist and any kind of context-dependent asset. This was already a request from our animators for the Pose Thumbnails add-on.* [name=Sybren] - This could probably be done with something like a regular expression that maps the selected objects → character names → tags to filter on. - Could be controlled by a checkbox in the asset browser / view. - Be careful with the word "automatic" - we could take that quite far and it would be unusable in practice (e.g. filter poses by testing if they can be applied -> bad performance). [name=Julian] - [color=red] As a ***production lead***, I can approve submitted assets for production-wide use. [name=Sybren] - The asset browser/system could *enable* this, but as a specific feature it's out of scope. It's too pipeline/studio-specific. [name=Julian] - Could simply be a tag that should only be set by the production lead. [name=Sybren] - [color=red] As an ***artist in a pipeline***, I can load USD stages into my Blend files just like Blender Collections [name=William] - Maybe at some point this is possible, but not for this project. - [color=green] As an ***artist*** I want to have kitbashing meshes, stencils, brush and tools configurations that are only relevant for a particular project. [name=Pablo D.] - Few ways to address this: Dynamic catalogs, separate asset library or project asset library. - Project-specific asset libraries are covered by the "Project Awareness" to be added to Blender at some point; see [T73366: Asset Manager “Basics”](https://developer.blender.org/T73366) [name=Julian] ### Tools <!-- - As a ***texturing/sculpting artist*** I can have libraries of textures available for switching in brushes, tools & materials. [name=Julien] --> - [color=green] As a ***texturing/sculpting artist*** I can use the asset browser to lookup and switch tool presets (which includes the active tool) and stencil textures while I'm painting. - [color=red] As a ***character artist*** I have access to my few main tools/brushes in close proximity to where I work, without having to search for them in my huge brush/tools asset library. (E.g. a quick brush picker popup.) - There could be a number of slots to assign tools/brushes to for very quick access via menus and shortcuts. - While the asset browser/system plays an important role in enabling this, it's a separate feature. - The discussion turned into a discussion on asset types, which was the next point on the timeline anyway. See "Asset Types and Use-cases" in the [general write-up](https://hackmd.io/@blender-asset-browser/rJBSWb3Ku). - [color=green] As a ***set dresser*** I can access & activate particle brushes to easily paint particles into the scene. [name=Julian] - Executing (access and activate) yes, but not defining! - [color=green] As a ***set dresser*** I can build sets with the help of placement tools and the asset browser. [name=Julian] - [color=green] As an ***artist*** I can mass-edit tags of assets in the current file. For example, select all poses of Victoria and add a tag `char:victoria` to all of them, without having to repeat the same action for every individual pose. [name=Sybren] ### Extensibility - [color=green] As a ***script author***, I have access to asset metadata and a carefully designed & documented API that I can use to make asset management tools. [name=Julian] - [color=green] As a ***script author***, I can use reference implementations provided with Blender to more easily build own asset management solutions. [name=Julian] - [color=green] As a ***script author*** I do not have to design/implement an entirely new asset browsing UI and can instead base my work on a UI Blender provides. [name=Julian] - [color=green] As a ***script author*** I can extend the asset browser UI with my own metadata fields, icons, operators, shortcuts. [name=Vilém] - [color=green] As a ***script author*** I can dynamically add assets to the list of assets inside a library, without them being stored on disk as blend files. [name=Vilém] - [color=green] As a ***script author*** I can define custom asset types (assets that Blender doesn't natively understand, like custom scripts, file formats, etc.). [name=Julian] - This includes extending existing asset categories (like "Objects") as well as defining new, custom categories [name=Vilém]