Asset Manager: Support preview thumbnails for more data-block types #79178

Open
opened 2020-07-23 01:52:52 +02:00 by Julian Eisel · 23 comments
Member

Motivation

For the asset manager, good previews are important. They are needed to tell assets apart visually, names are more like the secondary way to select them. We need to think about how to capture different data-blocks in a good way, to get the best possible previews.
We need that for multiple data-block types.

Design

We should try to come up with simple solutions, that work in the majority of cases. Just because there are some cases where a simple solution doesn't work, doesn't mean we can't use it in the majority of cases where it would. So we could have a simple, one-click way to create an asset and one that allows setting further options for when it's needed.

Materials, objects, poses, textures, images, screen-layouts, worlds and lights already support previews. We could of course improve them.

Collections

Design needed. [TODO]

Brushes

Screen Shot 2018-11-15 at 19.21.18.png From #56744, we'll probably use the same previews here.

Simulations

Design needed.

Rigs

Design needed.

Movie Clips

Idea: Display some frame, but allow "scrubbing" through frames with horizontal mouse movements over the preview.

Object Types

  • Curves (Viewport/OpenGL render?)
  • Empties
  • Cameras
  • Volumes
  • Force Fields
  • ...
## Motivation For the asset manager, good previews are important. They are needed to tell assets apart visually, names are more like the secondary way to select them. We need to think about how to capture different data-blocks in a good way, to get the best possible previews. We need that for multiple data-block types. ## Design We should try to come up with simple solutions, that work in the majority of cases. Just because there are some cases where a simple solution doesn't work, doesn't mean we can't use it in the majority of cases where it would. So we could have a simple, one-click way to create an asset and one that allows setting further options for when it's needed. Materials, objects, poses, textures, images, screen-layouts, worlds and lights already support previews. We could of course improve them. ### Collections Design needed. [TODO] ### Brushes ![Screen Shot 2018-11-15 at 19.21.18.png](https://archive.blender.org/developer/F5572967/Screen_Shot_2018-11-15_at_19.21.18.png) *From #56744, we'll probably use the same previews here.* ### Simulations Design needed. ### Rigs Design needed. ### Movie Clips Idea: Display some frame, but allow "scrubbing" through frames with horizontal mouse movements over the preview. ### Object Types * Curves (Viewport/OpenGL render?) * Empties * Cameras * Volumes * Force Fields * ...
Author
Member

Added subscriber: @JulianEisel

Added subscriber: @JulianEisel

Added subscriber: @TakingFire

Added subscriber: @TakingFire
Member

Added subscriber: @Mets

Added subscriber: @Mets
Member

To solve the 3 possible issues you mentioned, what do you think about adding a pop-up dialogue when creating the asset? For example, when making an asset for an object, show a "Perspective" drop-down menu with a bunch of options, like "Current", "Front", "3/4", etc.

Such pop-up dialogue would also be useful for making assets out of rigs and actions. To get a useful preview out of an Action, you would probably have to specify a rig that the action is meant to be used with. To get a useful preview out of an armature object, you might want other objects to be visible on the preview, even though they aren't actually part of the asset.
Materials would probably also like a customizable object to display on.

But maybe the pop-up would just be annoying and slow down the workflow? I'm biased as I actually quite like when operators use a pop-up to ask me exactly what I want.

Questions:

  • Will asset previews automatically update in any way, eg. I guess on file save?
  • Can assets store extra info that they only use for generating the preview? Eg. a list of objects that aren't necessarily part of the asset, but should be visible when the preview is being generated. I think this would be super nice, but then, does that mean if an object is deleted, it won't be fully deleted because an asset might be referencing it, just to use in a preview? That sounds bad, so I wonder how this would be handled.
  • Are animated previews planned? It would be useful for Actions, but other things too. Think animated materials, simulations, probably more.
To solve the 3 possible issues you mentioned, what do you think about adding a pop-up dialogue when creating the asset? For example, when making an asset for an object, show a "Perspective" drop-down menu with a bunch of options, like "Current", "Front", "3/4", etc. Such pop-up dialogue would also be useful for making assets out of rigs and actions. To get a useful preview out of an Action, you would probably have to specify a rig that the action is meant to be used with. To get a useful preview out of an armature object, you might want other objects to be visible on the preview, even though they aren't actually part of the asset. Materials would probably also like a customizable object to display on. But maybe the pop-up would just be annoying and slow down the workflow? I'm biased as I actually quite like when operators use a pop-up to ask me exactly what I want. Questions: - Will asset previews automatically update in any way, eg. I guess on file save? - Can assets store extra info that they only use for generating the preview? Eg. a list of objects that aren't necessarily part of the asset, but should be visible when the preview is being generated. I think this would be super nice, but then, does that mean if an object is deleted, it won't be fully deleted because an asset might be referencing it, just to use in a preview? That sounds bad, so I wonder how this would be handled. - Are animated previews planned? It would be useful for Actions, but other things too. Think animated materials, simulations, probably more.
Author
Member

In #79178#983845, @Mets wrote:
To solve the 3 possible issues you mentioned, what do you think about adding a pop-up dialogue when creating the asset? For example, when making an asset for an object, show a "Perspective" drop-down menu with a bunch of options, like "Current", "Front", "3/4", etc.

Yes and no :) This is just the solution I had in mind too. But I also want simple things to stay simple, so the default behavior should just use the front and not ask for further settings. For the cases where that isn't sufficient, there can be a separate "Create Asset" operator showing the popup (or you could right click an asset in the browser and recreate the preview with different settings).

Such pop-up dialogue would also be useful for making assets out of rigs and actions. To get a useful preview out of an Action, you would probably have to specify a rig that the action is meant to be used with. To get a useful preview out of an armature object, you might want other objects to be visible on the preview, even though they aren't actually part of the asset.

Yeah rigs are a bit tricky. Just drawing the rig itself isn't too useful. Am happy to hear ideas of how this could work in practice.
I'm not sure if such rig previews are part of the first milestone though. Trying to get all these things working nice in the first major iteration can make the project drag or get stuck even.

Materials would probably also like a customizable object to display on.

Right. But just like for objects, I'd suggest having the advanced setup as opt-in behavior.

Questions:

  • Will asset previews automatically update in any way, e.g. I guess on file save?

There are two use-cases to clearly differentiate here:

  1. User just sculpted a rock and goes: "Oh, this is a beautiful rock. I want to add this to the asset library so I can re-use it in other projects"
  2. User works within the asset library of a project, creating and editing rocks for the set dressing department.

For 1) you would not want the asset library to depend on the .blend file the rock was created in. So the asset library would contain a deep copy of the data-block. There could still be a reference between the project file and the asset, so changes to the rock can be flushed to the asset library. But point is the user would explicitly create or update an asset, at which point the preview is (re-)created.

For 2) it's a bit complicated indeed. Brecht said other asset managers usually just have a button to explicitly update previews. Creating a preview may take a second or more per data-block (8K textures everywhere! What could go wrong?!1), so always doing it on file save is troublesome. In typical pipelines there's also the "Publish" step, which is a good point to trigger preview updates too.

  • Can assets store extra info that they only use for generating the preview? Eg. a list of objects that aren't necessarily part of the asset, but should be visible when the preview is being generated. I think this would be super nice, but then, does that mean if an object is deleted, it won't be fully deleted because an asset might be referencing it, just to use in a preview? That sounds bad, so I wonder how this would be handled.

This does sound useful but is a more advanced use-case. If needed, we can allow entirely custom preview images.
Another idea is, we could allow rendering previews from a specific view layer. An asset .blend could then contain a bunch of view-layers for advanced, custom previews. Such extra objects can then be disabled in the main view-layer, and their lifetime is managed like for any other object in Blender.

  • Are animated previews planned? It would be useful for Actions, but other things too. Think animated materials, simulations, probably more.

It is technically possible of course and I'm quite sure we will want that sooner or later. Not sure if we need it for the first milestone though.

> In #79178#983845, @Mets wrote: > To solve the 3 possible issues you mentioned, what do you think about adding a pop-up dialogue when creating the asset? For example, when making an asset for an object, show a "Perspective" drop-down menu with a bunch of options, like "Current", "Front", "3/4", etc. Yes and no :) This is just the solution I had in mind too. But I also want simple things to stay simple, so the default behavior should just use the front and not ask for further settings. For the cases where that isn't sufficient, there can be a separate "Create Asset" operator showing the popup (or you could right click an asset in the browser and recreate the preview with different settings). > Such pop-up dialogue would also be useful for making assets out of rigs and actions. To get a useful preview out of an Action, you would probably have to specify a rig that the action is meant to be used with. To get a useful preview out of an armature object, you might want other objects to be visible on the preview, even though they aren't actually part of the asset. Yeah rigs are a bit tricky. Just drawing the rig itself isn't too useful. Am happy to hear ideas of how this could work in practice. I'm not sure if such rig previews are part of the first milestone though. Trying to get all these things working nice in the first major iteration can make the project drag or get stuck even. > Materials would probably also like a customizable object to display on. Right. But just like for objects, I'd suggest having the advanced setup as opt-in behavior. > Questions: > - Will asset previews automatically update in any way, e.g. I guess on file save? There are two use-cases to clearly differentiate here: 1) User just sculpted a rock and goes: "Oh, this is a beautiful rock. I want to add this to the asset library so I can re-use it in other projects" 2) User works within the asset library of a project, creating and editing rocks for the set dressing department. For 1) you would **not** want the asset library to depend on the .blend file the rock was created in. So the asset library would contain a deep copy of the data-block. There could still be a reference between the project file and the asset, so changes to the rock can be flushed to the asset library. But point is the user would explicitly create or update an asset, at which point the preview is (re-)created. For 2) it's a bit complicated indeed. Brecht said other asset managers usually just have a button to explicitly update previews. Creating a preview may take a second or more per data-block (8K textures everywhere! What could go wrong?!1), so always doing it on file save is troublesome. In typical pipelines there's also the "Publish" step, which is a good point to trigger preview updates too. > - Can assets store extra info that they only use for generating the preview? Eg. a list of objects that aren't necessarily part of the asset, but should be visible when the preview is being generated. I think this would be super nice, but then, does that mean if an object is deleted, it won't be fully deleted because an asset might be referencing it, just to use in a preview? That sounds bad, so I wonder how this would be handled. This does sound useful but is a more advanced use-case. If needed, we can allow entirely custom preview images. Another idea is, we could allow rendering previews from a specific view layer. An asset .blend could then contain a bunch of view-layers for advanced, custom previews. Such extra objects can then be disabled in the main view-layer, and their lifetime is managed like for any other object in Blender. > - Are animated previews planned? It would be useful for Actions, but other things too. Think animated materials, simulations, probably more. It is technically possible of course and I'm quite sure we will want that sooner or later. Not sure if we need it for the first milestone though.
Member

Thanks for the detailed answer! With those in mind, I think it's okay to generate previews for rigs only showing the rig object and nothing else. No parameters required then, but I would enforce these settings for the preview image "render":

  • Pose mode
  • show_axes = False
  • show_names = False
    Because the information displayed by those settings is so small it would only clutter the preview image.

I think there won't be many use cases for turning rigs on their own into an asset, so it's fair to keep things simple here.

As for Actions: I guess if we want to avoid popups, we can just assume that the actions should use the currently active armature object for the preview image, if there is one. That's the obvious solution, but not sure about discoverability. Users will just turn actions into assets at different times and sometimes get a good preview, sometimes not, and they'll wonder why. If you shove a popup in their face asking them to select a rig, they'll get it right 100%! :)

Thanks for the detailed answer! With those in mind, I think it's okay to generate previews for rigs only showing the rig object and nothing else. No parameters required then, but I would enforce these settings for the preview image "render": - Pose mode - show_axes = False - show_names = False Because the information displayed by those settings is so small it would only clutter the preview image. I think there won't be many use cases for turning rigs on their own into an asset, so it's fair to keep things simple here. As for Actions: I guess if we want to avoid popups, we can just assume that the actions should use the currently active armature object for the preview image, if there is one. That's the obvious solution, but not sure about discoverability. Users will just turn actions into assets at different times and sometimes get a good preview, sometimes not, and they'll wonder why. If you shove a popup in their face asking them to select a rig, they'll get it right 100%! :)

Added subscriber: @mattli911

Added subscriber: @mattli911

Could possibly use 3D Cursor Orientation for camera alignment / rendering as well? For the additional options, if front view doesn't work out. Or Perspective View matrix / current orientation to the object.

More so thinking about if a user has a mesh rotated in some specific way and wants to save it like that, and the local Axis is rotated / align to that as well.
So there maybe is no "front view" technically, unless you are looking at Local X or Y Axis, but that could be opposite of what the user wants too. Or maybe those are flipped from what they would consider "front view".

I made an asset viewer/creation tool for 3DS Max, and I had automated the capture at first, but it was finicky/un-reliable. Unless I told the user to setup their object pivots/etc very specifically.
So I decided to just put them into a thumbnail creation preview mode, where they just rotate the model however they want / etc and click "Render" and then get exactly what they setup. So not back and forth/repeating the thumbnail generation X amount of times to get what they want.

Could possibly use 3D Cursor Orientation for camera alignment / rendering as well? For the additional options, if front view doesn't work out. Or Perspective View matrix / current orientation to the object. More so thinking about if a user has a mesh rotated in some specific way and wants to save it like that, and the local Axis is rotated / align to that as well. So there maybe is no "front view" technically, unless you are looking at Local X or Y Axis, but that could be opposite of what the user wants too. Or maybe those are flipped from what they would consider "front view". I made an asset viewer/creation tool for 3DS Max, and I had automated the capture at first, but it was finicky/un-reliable. Unless I told the user to setup their object pivots/etc very specifically. So I decided to just put them into a thumbnail creation preview mode, where they just rotate the model however they want / etc and click "Render" and then get exactly what they setup. So not back and forth/repeating the thumbnail generation X amount of times to get what they want.
Contributor

Added subscriber: @RedMser

Added subscriber: @RedMser
Author
Member

Removing this from the UI workboard, it's on the Asset Browser one now. This is sort of an implicit sub-project of #user_interface and #data_assets_i_o, but more focused and avoids cluttering other workboards with tasks that are handled as part of a project anyway.

Removing this from the UI workboard, it's on the Asset Browser one now. This is sort of an implicit sub-project of #user_interface and #data_assets_i_o, but more focused and avoids cluttering other workboards with tasks that are handled as part of a project anyway.

Added subscriber: @pjj

Added subscriber: @pjj
Contributor

Added subscriber: @AndresStephens

Added subscriber: @AndresStephens
Contributor

Can't wait for more thumbnails for node groups. Or custom thumbnails!

Can't wait for more thumbnails for node groups. Or custom thumbnails!

Added subscriber: @Deanna

Added subscriber: @Deanna
Member

Added subscriber: @lichtwerk

Added subscriber: @lichtwerk
Member

Changed status from 'Needs Triage' to: 'Needs Developer To Reproduce'

Changed status from 'Needs Triage' to: 'Needs Developer To Reproduce'
Member

@JulianEisel: some of this is now obsolete (some might still be relevant), is this covered by other existing tasks and can be closed?

@JulianEisel: some of this is now obsolete (some might still be relevant), is this covered by other existing tasks and can be closed?
Author
Member

Object and pose previews were added meanwhile, I updated the description. Besides that the task is still valid. I would welcome contributors to pick up some case and work out a design for it. It's a relatively isolated design task.

Object and pose previews were added meanwhile, I updated the description. Besides that the task is still valid. I would welcome contributors to pick up some case and work out a design for it. It's a relatively isolated design task.
Contributor

Take note, my screen captures are from a custom build of Blender with custom icons.

First Request

What this needs: Node Groups differentiation with symbolism:

Issue:

bforartists_2k3TaGVvBZ.png
There is no way to tell apart what node group is for what editor.

We need symbolism to know and categorize different node groups.

  1. Shader Node Groups
  2. Compositor Node Groups
  3. Geometry Node Groups

In the Blender Data API view of the Outliner, the nodegroups has iconography that helps.
bforartists_zXbNywl7Ig.png

At the moment, all node groups are lumped into the same category. There are no custom icons. There are group type icons in the Data API view of the outliner, but the Asset Browser could also benefit and have a symbols on the thumbnail, and/or sub-category for the node groups per editor. Node groups need to be a lot more granular to be usable.

Using an icon set in the corners like the rest of the asset browser that has thumbnails, we can visually categorize the node groups:
explorer_PLUexiZMzD.png

Second Request

Node Group and Shader datablocks needs a custom thumbnail ability for nodegroup asset packs, distinguising commong groups, and to personalize. A long with shaders.

  1. Consistency with other customization of collection, mesh and misc data
  2. More granular visual categorization of custom nodegroups and shaders
  3. Ability to be able to ship and share different node groups and shaders with custom thumbnails to distinguish them

bforartists_D4GYIUm6ow.png
This feature of customization should be consistent for ALL data blocks. Not just collections and mesh data, and other miscellaneous data - but also for groups and materials.

Third Request

Shader/Materials needs the ability to change the thumbnail auto generation directly from the asset browser. Right now it is only possible from the Material Property Editor tab. There is a big disconnect there.

*Take note, my screen captures are from a custom build of Blender with custom icons.* # First Request What this needs: **Node Groups differentiation with symbolism:** ## Issue: ![bforartists_2k3TaGVvBZ.png](https://archive.blender.org/developer/F10674932/bforartists_2k3TaGVvBZ.png) There is no way to tell apart what node group is for what editor. We need symbolism to know and categorize different node groups. 1. Shader Node Groups 2. Compositor Node Groups 3. Geometry Node Groups In the Blender Data API view of the Outliner, the nodegroups has iconography that helps. ![bforartists_zXbNywl7Ig.png](https://archive.blender.org/developer/F10674945/bforartists_zXbNywl7Ig.png) At the moment, all node groups are lumped into the same category. There are no custom icons. There are group type icons in the Data API view of the outliner, but the Asset Browser could also benefit and have a symbols on the thumbnail, and/or sub-category for the node groups per editor. Node groups need to be a lot more granular to be usable. Using an icon set in the corners like the rest of the asset browser that has thumbnails, we can visually categorize the node groups: ![explorer_PLUexiZMzD.png](https://archive.blender.org/developer/F10675011/explorer_PLUexiZMzD.png) # Second Request Node Group and Shader datablocks needs a custom thumbnail ability for nodegroup asset packs, distinguising commong groups, and to personalize. A long with shaders. 1. Consistency with other customization of collection, mesh and misc data 2. More granular visual categorization of custom nodegroups and shaders 3. Ability to be able to ship and share different node groups and shaders with custom thumbnails to distinguish them ![bforartists_D4GYIUm6ow.png](https://archive.blender.org/developer/F10674962/bforartists_D4GYIUm6ow.png) This feature of customization should be consistent for ALL data blocks. Not just collections and mesh data, and other miscellaneous data - but also for groups and materials. # Third Request Shader/Materials needs the ability to change the thumbnail auto generation directly from the asset browser. Right now it is only possible from the Material Property Editor tab. There is a big disconnect there.

Added subscriber: @Alumx

Added subscriber: @Alumx

Added subscriber: @tintwotin

Added subscriber: @tintwotin

Sounds should have waveform previews:
{F11842387,size=full}

Sounds should have waveform previews: {[F11842387](https://archive.blender.org/developer/F11842387/image.png),size=full}

Patch for Movie Clip thumbnails: D13305
{F11842172,size=full}

Patch for Movie Clip thumbnails: [D13305](https://archive.blender.org/developer/D13305) {[F11842172](https://archive.blender.org/developer/F11842172/MC_asset_preview.gif),size=full}
Philipp Oeser removed the
Interest
Pipeline, Assets & IO
label 2023-02-10 08:54:18 +01:00
Sign in to join this conversation.
No Label
Interest
Alembic
Interest
Animation & Rigging
Interest
Asset Browser
Interest
Asset Browser Project Overview
Interest
Audio
Interest
Automated Testing
Interest
Blender Asset Bundle
Interest
BlendFile
Interest
Collada
Interest
Compatibility
Interest
Compositing
Interest
Core
Interest
Cycles
Interest
Dependency Graph
Interest
Development Management
Interest
EEVEE
Interest
EEVEE & Viewport
Interest
Freestyle
Interest
Geometry Nodes
Interest
Grease Pencil
Interest
ID Management
Interest
Images & Movies
Interest
Import Export
Interest
Line Art
Interest
Masking
Interest
Metal
Interest
Modeling
Interest
Modifiers
Interest
Motion Tracking
Interest
Nodes & Physics
Interest
OpenGL
Interest
Overlay
Interest
Overrides
Interest
Performance
Interest
Physics
Interest
Pipeline, Assets & IO
Interest
Platforms, Builds & Tests
Interest
Python API
Interest
Render & Cycles
Interest
Render Pipeline
Interest
Sculpt, Paint & Texture
Interest
Text Editor
Interest
Translations
Interest
Triaging
Interest
Undo
Interest
USD
Interest
User Interface
Interest
UV Editing
Interest
VFX & Video
Interest
Video Sequencer
Interest
Virtual Reality
Interest
Vulkan
Interest
Wayland
Interest
Workbench
Interest: X11
Legacy
Blender 2.8 Project
Legacy
Milestone 1: Basic, Local Asset Browser
Legacy
OpenGL Error
Meta
Good First Issue
Meta
Papercut
Meta
Retrospective
Meta
Security
Module
Animation & Rigging
Module
Core
Module
Development Management
Module
EEVEE & Viewport
Module
Grease Pencil
Module
Modeling
Module
Nodes & Physics
Module
Pipeline, Assets & IO
Module
Platforms, Builds & Tests
Module
Python API
Module
Render & Cycles
Module
Sculpt, Paint & Texture
Module
Triaging
Module
User Interface
Module
VFX & Video
Platform
FreeBSD
Platform
Linux
Platform
macOS
Platform
Windows
Priority
High
Priority
Low
Priority
Normal
Priority
Unbreak Now!
Status
Archived
Status
Confirmed
Status
Duplicate
Status
Needs Info from Developers
Status
Needs Information from User
Status
Needs Triage
Status
Resolved
Type
Bug
Type
Design
Type
Known Issue
Type
Patch
Type
Report
Type
To Do
No Milestone
No project
No Assignees
11 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: blender/blender#79178
No description provided.