-
-
Notifications
You must be signed in to change notification settings - Fork 97
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Redesign 3D asset import workflow #1823
Comments
This comment has been minimized.
This comment has been minimized.
@Jummit sounds good, added it to the proposal |
I like the changes but what happens if your import model generates collition with |
@jcostello -colonly and -noimp and similar happen independently of this so they should not be affected. You will still be able to do this process from the new UI too if you wish, but both will work. |
I would still like the option "open anyway" as it makes it easy to directly edit node structure if i know the source file won't change. For example downloading a model of an environment i just want to import and edit it directly in godot instead of having to open it in blender then re export. Also it would be great to have loading done on a separate thread. I think the slowest thing is importing and converting textures it would be great to do this in the background. when you work on the importer will you also be adding betsy to convert textures? |
Many of these options can be thought of as stage plugins that operate on specific things:
The idea is we want to run the set of them in a particular order or even a graph. For example: We could script https://github.com/wojtekpil/Godot-Octahedral-Impostors as a stage step. |
@NHodgesVFX We could put in a RMB submenu the option to "Open Read-Only" I suppose, if you reaaaaally want to do it, but this should not be easily exposed to the user to avoid confusing like now. |
I like this fine-grained control over the import process.
|
I think open directly would make more sense considering you can still edit the scene. Just in case were talking about different things here's a video showing what i do pretty often. open file as "open anyway" |
@samdze I like the idea of being able to create multiple scenes from a set of meshes in a single import. Kinda analogous to importing multiple 2d sprites in a single image |
Looks powerful and intuitive. |
Could we also think about changing the wording on the re-import button to be “Apply Import Settings”? |
Will it be possible to specify an existing material in the project, so that imported models from different directories can share the same material |
Will it be possible to modify all properties of child nodes in an instanced scene? Right now that can be done by changing the root node type or by importing the model as separate meshes, I see no reason why that shouldn't work already... |
That's sick :D Thanks for this proposal. What I would also add - is in that thumbnail model preview window - to be able to see (for example as a green-lined wireframe) generated collisions. And if Godot would support more algorithms of doing these (like bounding boxes, spheres, trimeshes, etc) - allow to switch between them and see the result in real-time. |
I'm not a much of a C++ programmer or anything that needs a brain for it so excuse me if I'm being stupid but can't u just make and import "preset" or "option" to impost a separate .SCN file which lays out everything from the imported file as normal nodes in a scene and u can just delete the original file and have the scene only for it. |
Would be nice to add collision-only CollisionShapes w/o bodies too. Also it would be nice to somehow support adding nodes to groups at import time; Also a thing which makes my life worse than it should be is lack of ability to import "metadata" associated with node. |
Could be possible to import as a separated thread without blocking the editor? Specially for big files this could take a lot of time and blocks the editor, sometimes it shows as Not responding Also would be nice to be able to import them vía command line without opening the editor, for the same reason, sometimes it just take very long time |
Perhaps a merge navmesh would be interesting also, considering you could have an existing scenario and simply add new imported assets which could interact with the existing navmesh as well... like a re-bake post import. |
yeah thats the idea |
Yeah this is the idea, I am still not entirely sure how it will look, but the idea is that you can preview everything |
Custom Processing Remembering the import settings I'd assume these situations in the import process:
I don't know if 3 can be an issue if one would have separated import options (ex. the first enable only a node, the other a different one). Tweaking mesh/nodes/materials/etc API I'd like to see some of this functionality around the editor itself, not just limited in that dialog. If you create things from Godot itself or tweak an entity that isn't dependent from the original import anymore i'd like to still be able to use what makes sense. It could be just an API for now to call with a plugin. Of course the main way would be doing it from the import dialog so that you don't make mistakes but if you create a level editor inside Godot it can be nice to tweak meshes without re-implementing functions ;) Dialog size and useful info Importing an entire scene and tweaking the options from an orbit view can be a pain. I've similar issues with the material preview above the settings, most of the time it's easier to check things from the main windows itself. |
@vagrantG hi, need to tell you that features you speak about are already there |
All of this sounds amazing, 4.0 is shaping up to be one beast of a release. |
@slapin First point, you can make an import script and open an imported asset as a scene and tweak it but you can automate the process by creating a plugin and using it everytime manually (not ideal). Plus if the instantiation will be the main way to go you'll not be able to modify the nodes. Second one, not a proposal but me thinking. Third one is hoping the new stuff like creating impostors, LOD, etc will be still available as a manual option. Plus custom tweaking scripts functions too, why not? You can edit stuff on the fly for various reasons. Fourth, yeah now opening an asset opens a tab with the scene for sure, but the proposal is to have a similar configuration instead of the scene editing one but with different elements in the panels and scene tree use. |
I love the idea, could it be made for more than just 3D? I'd love to see a universal window to tweak and preview all kind of imports. For textures we could have live preview and side by side comparison for different compression level, show generated mipmaps, preview anisotropic and alpha, etc. It could very well start with just the 3D, but it'd be nice to implement it in a way which would allow adding other stuff later without needing to rework too much. If it can be made flexible enough, I'd love to have the ability to write "importer plugins" that could seamlessly plug into it for more specific needs or to improve my workflow with a specific ressource type. For example, allow things like importing a sprite sheet as an animated sprite directly, with configs and previews in the importer window. |
I would just like to point out that unreal has this as well for textures and flipbooks and it is really useful for previewing assets. It would be really useful to have in Godot engine as well :) @reduz a bit of feedback on your initial proposal under mesh editor.
Support for sockets in the mesh editor would be nice and would greatly streamline the work flow for making attachable items such as swords, guns, pickups, etc. in Godot engine. :) |
I really like this design, it feels a lot more intuitive and natural then the current setup. This has been mentioned a few times, but I really want to voice my support for allowing more integration of custom scripting. I have a working example of something which would benefit from this: an addon which provides a fully functional humanoid animation retargetter. Right now, due to the limitations of the import pipeline in relation to script, it only exists as a destructive post-import tool, but if the importer could have access to multiple scripts per import, as well as the ability to modify the menu's UI and preview, I could turn this tool into a general-purpose animation retargetter which everyone could use. I also have intention of providing a tool which can convert generic animation into IK points for more procedural animation. I think from an extensibility standpoint, a focus on this import tool being modular via scripts which can be distributed as assets would serve most people's needs. |
The proposal looks fine overall but something concerns me a bit about how the actual resource management will be handled. I'm currently working on a project where i need to use blendshapes and i noticed i can't have two instances of the same scene with different blendshapes values (one of the instance will always override the others). In order to work around that, i need to open my imported 3d scenes, save it as a standalone .tscn file (as a consequence of that the inheritance will be broken, and nothing will happen if i edit the imported scene) and enable the "local to scene" parameter in the mesh's settings. From what i understood, with this proposal it should be possible to "auto import" only a part of an imported scene, would it be possible to have something like a "make subresources local" in the import settings? Also, what about skinned meshes, if we choose to import only the MeshInstance node without it's Skeleton parent, will the skinning data be preserved after it's imported? |
Don't know if this fits in right here. Been working on a 3D game for a while in Godot and one of the biggest workflow killers I have encountered is the following. When inheriting or instancing a imported 3D asset in a scene and then reimport it again you need to open the 3D asset scene to have it update all the other open scenes that currently has the 3D asset instanced in. This slows down the workflow when you are for example iterating over a 3D environment. Where you quickly want to see the changes that you make in your DDC (Blender, Maya, etc) in Godot. |
The way 3d asset are updating is really weird. And it's the first weakest point of 3d assets import in Godot. After exporting an asset, usually, I switch between Godot and an other program to force Godot to update. I see the update progress bar in Godot. But it's not enough. It far from good and give a unreliability feeling |
About the proposal of re-using the scene tab as import dialog, another point is being able to see custom data in the preview. If there's the inspector panel you can potentially use its plugins and see a (read-only) result of the data inserted in the elements of the imported scene. If you need to test your custom script in the import process or check if the data exported to the asset file is right it'd be a nice feature to have (without having to import, instance the scene, check there). |
In |
The more I think about this proposal the more it seems to me like a duplication in functionality of what is already available opening an imported file (with scene view, scene tree, navigation, preview, etc.), but with better inspection capabilities in this particular case (3D asset). Maybe it could be better to keep the fact that the imported asset opens in the main scene view like before, to reuse all the navigation functionalities (and making it very clear in the scene tree UI that manual changes to the nodes are disabled), and to create a new auto-opening dock in the bottom panel that shows the advanced import settings? Not sure if that would dissipate the confusion around this whole "read-only imported scene" argument though. |
Would be nice to support some kind of instancing system. A bridge between instances made in DCC app and Godot. Then I use a plug that recreate some kind of "prefabs" (.tscn) based on from a prefix "_name_instance". It rebuild a scene and all the instances made with those "prefabs". With the new design in mind, maybe it would be nice to create groups/tags for nodes in the "import setting" window. |
Proper Texture Mapping for the imported assests, to check whether the imported assests from any 3D software looks the same in the engine. |
The main issue I have with import is animations...or shared skeleton node.. or be able to import a mesh with weights assigned to the skeleton previously mentioned(without the need to import a skeleton) and deform it using that skeletons animation tracks...I hope this makes sense.. as it stands now you have to either have all your animations done before import, which is fine, but it does not allow any tweaking later without requiring a complete reimport. When doing complex node arrangements, this can be tedious and I often find myself writing all types of notes about the hierarchy and settings. |
@reduz Maybe I'm confused, but my understanding was that godot currently doesn't have any LOD support? If it's planned for the near future, will these details be stored as a mesh import detail? |
@Eoin-ONeill-Yokai LOD support and LOD generation are both planned for 4.0. |
Neat! In this circumstance would custom, authored LODs also be allowed to be specified in the import settings panel as well? |
I think this is a really nice idea, and will solve many issues I'm encountering right now with the material assignment. I've an environment model, where many objects are repeated in it. Each mesh needs a visual shader material, so the only way to add it is in the 'MeshInstance'. Though, this would require assign the material to all instances of the mesh, which is a tremendous time-consuming task. The only thing that I hope, is that it will keep track of those materials assigned to the |
I was googling at Blender => Godot assets import once more since I had such a bad experience in the past, especially with respect to a rapid prototyping workflow (frequent modifications and reimports of existing assets). I must say I'm delighted I've stumbled upon this proposal, especially from Reduz himself. It covers all frustations I had and then some: model explorer, read-only, fine tune of the importation process, importation in multiple scenes if needed (great for assets packs). This will be a great evolution of Godot. |
Also, how would this be related to meshlibs? Couldn't those benefit from those improved import options? |
@reduz One suggestion I have is can we please make the UI for the reimport dialog expandable too? I would have liked to have a few FBX specific options in there but only for FBX files, I did at one stage plumb it into the engine but it was very manual. |
This is causing issues for me when trying to make a MeshLibrary because each model is imported as a scene, not a MeshInstance, so can't be included. |
Implemented by godotengine/godot#47166. |
Describe the project you are working on:
Godot
Describe the problem or limitation you are having in your project:
There are several complaints about the current 3D import workflow
Describe the feature / enhancement and how it helps to overcome the problem or limitation:
The idea is to do some fundamental changes to the workflow to make it more streamlined and less confusing.
Describe how your proposal will work, with code, pseudocode, mockups, and/or diagrams:
After a scene is imported, it won't be possible to open it anymore. Doubleclicking it will open its import settings instead. Additionally, the Import dock for this scene will allow opening these import settings, which replace most of the existing ones.
The above is a really bad mockup, but the idea is that you can edit in detail what happens to every node, material, mesh, animation. The Node editor will allow what do with with each node such as:
etc
The mesh editor, will have options such as:
The Material editor will have options such as
The Animation editor will have options such as
This way, instead of just opening the scene for the sake of it like before, you open an editor where you can actually check the scene and adjust and fine-tune all import settings.
added by suggestion of @Jummit
A script section can be added where users can add add one or more import scripts, and scripts can export arguments for tweaking the import process better.
If this enhancement will not be used often, can it be worked around with a few lines of script?:
No
Is there a reason why this should be core and not an add-on in the asset library?:
This is core.
The text was updated successfully, but these errors were encountered: