---
# System prepended metadata

title: User Stories & Scope Notes
tags: [Workshop]

---

---
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]

