godotengine / godot-proposals

Godot Improvement Proposals (GIPs)
MIT License
1.11k stars 69 forks source link

Display scene resource thumbnails in the FileSystem dock #8760

Open Bat-Computer opened 8 months ago

Bat-Computer commented 8 months ago

Describe the project you are working on

3D Game with multiple levels using pre-made game assets from Synty and other asset packs.

Describe the problem or limitation you are having in your project

To create levels quickly and reduce time, I really need to see the 3D models I have imported to be displayed as thumbnails in the FileSystem window. This would allow me to easily find the correct asset without having to double-click the 3D model to open up the 'Advanced Import Settings' to see which model is which.

Describe the feature / enhancement and how it helps to overcome the problem or limitation

Having the ability to 'see' which model is which, instead of having to read carefully each file name of each 3D model or having to open the 'Advanced Import Settings' window would save a lot of time creating levels. GridMaps aren't a good solution as the models have to fit into a specific grid. Most 3D levels have arbitrary sized models, unlike a 2D game where image assets are typicaly 16x16, 32x32 etc.

Describe how your proposal will work, with code, pseudo-code, mock-ups, and/or diagrams

In the FileSystem view... Screenshot 1

or in it's own Horizontal tab... Screenshot 2

If this enhancement will not be used often, can it be worked around with a few lines of script?

I'm not sure how easy it would be to script, however we can already display thumbnails in GridView, so the code should be there I'd imagine.

Is there a reason why this should be core and not an add-on in the asset library?

this should be core functionality. If it was a plugin it could easily be broken in updates.

Calinou commented 8 months ago

To make this proposal most relevant, https://github.com/godotengine/godot-proposals/issues/7232 needs to be implemented first. Otherwise, scene thumbnails may not be as helpful as you'd hope.

ChildLearningClub commented 6 months ago

Is there anyway to make this modular? I imagine it would be useful to have something almost like a separate instance of Godot running that has been converted into an asset manager and has all of a persons assets that they own pre-loaded and cached.

Rather then importing all the assets that you think you will use into your project every time you start a new one you could instead open this asset manager application. You could then dock the manager into one of the existing panels or keep it separate? You would then single or multi-select the assets that you want from the manager and drag them in to your scene. In the background Godot would grab the file from its location in the file system and import it into the project placing them within a predefined asset location, and would automatically switch over to the imported asset/s and put their location at the mouse cursor location to place in the scene.

I know very little about KitBash3D's Cargo Application, but I think something like this might work similarly to what it looks like they have.

Another idea, as the one above still doesn't really solve the main issue of thumbnails for assets within the project itself, would be to have the asset manager as described above kind of connect into the projects filesystem, again a single repository location from where all projects pull in their assets, but placed right along side all the other items in the projects filesystem. I imagine something could already be implemented with something like Nextcloud's Virtual Drive but with the pre-caching of the thumbnails.

I know this kind of extends outside the scope of this issue quite a lot, but just thought to put out ideas since there is some overlap.

Edit: just linking this Prop Painter project by glidedhipbone for reference, it's licensed under the GPL-3.0 license but may be useful in some ideas with getting thumbnail generation.

Nodragem commented 4 months ago

To make this proposal most relevant, #7232 needs to be implemented first. Otherwise, scene thumbnails may not be as helpful as you'd hope.

Can't we use the thumbnail generator used by the Gridmap node?

Calinou commented 4 months ago

Can't we use the thumbnail generator used by the Gridmap node?

GridMap thumbnails are generated differently from scene thumbnails, but they are only available for meshes within a MeshLibrary resource. I think they're also only generated when converting a scene to a MeshLibrary, not when you load meshes directly in a MeshLibrary resource (which I tend to do when prototyping).

If you have full-blown 3D scenes, they are made of multiple nodes. Therefore, they can't have their thumbnails be generated like MeshLibrary does. They can be made to look visually similar, but the implementation behind the scenes has to be completely different.

Nodragem commented 4 months ago

As 3D thumbnailing can be a complex problem; maybe we can focus on the simple case of having 1 mesh in a file (e.g. glb, fbx, blender, tscn ) for now? To solve that specific case will already be super useful for 3D level editing and make many users happy.

My point is that this simple case (1 mesh) was solved by whever wrote the MeshLibrary, and we could reuse their solution. The more complex cases could be solved later on? In fact, for full-blown levels, the user might want to make their own thumbnail.