Neos-Metaverse / NeosPublic

A public issue/wiki only repository for the NeosVR project
193 stars 9 forks source link

Request: Functionality to replace existing mesh on re-import instead of importing it as a new object #2625

Open JackTheFoxOtter opened 3 years ago

JackTheFoxOtter commented 3 years ago

Is your feature request related to a problem? Please describe.

When creating assets for Neos worlds using external mesh editing tools like Blender, it can be benefitial to follow an iterative design process where you import a partially completed model into Neos to look at it in-engine and in VR, seeing what adjustments still need to be made, before re-importing it to see if it works better now. Currently, this process is quite labor intensive because you have to delete the old asset from the world, import the new one by choosing all import settings accordingly, move the re-imported object under the correct slot in the world hierarchy, reset / adjust transformations, re-apply materials and configure components (grabbables, colliders etc.). This takes up a lot of time and becomes very repetetive and annoying when done multiple times, especially when you consider that these settings will always be the same for each new version of the same object, distracting from the main creative process of experimenting with what works and what doesn't and ultimately improving the asset.

Describe the solution you'd like

I would like to request the option to be able to import an external mesh as a replacement for an already existing object in the world instead of as a completely new object. This functionality should automatically choose the same import settings the original mesh was imported as, and only the actually imported information (mesh data) should be replaced in the updated object. This way, all repetetive steps described above would be automated away, which would hugely speed up iterative development processes. The object would still be in the original hierarchy slot, would have retained it's transformation, would have retained all modified components attached to that slot and even kept the material assignment for the different material slots of the mesh.

As an extension of this functionality, a user might tell the Neos client to automatically re-import and replace the mesh data of a specified object should the specified source import file on their host machine change.

Describe alternatives you've considered

The alternative is the current way, which includes repetetive manual labor that takes away time that could have been better invested in actually working on the asset.

Additional context

Security. Any feature that interacts with files on a user's PC is a potential security risk and should be treated as such. No path from the user's machine should be exposed to global space, and no user should be able to trigger a file upload from another user's host machine. Since this feature is directly regarding file uploads, it should probably be implemented fully in user space as far as this is possible.

ProbablePrime commented 3 years ago

You can already do this to some extent.

For non-skinned meshes:

For Skinned meshes(avatars):

H3BO3 commented 3 years ago

Dropping in a new mesh to a skinned mesh renderer does work in very particular cases - mainly that there were no rig edits made and purely mesh things. New blendshapes can be added and materials reconfigured this way as well, as long as you adjust the right things in the list and rearrange materials if necessary. The material adjustments also apply to static meshes.

JackTheFoxOtter commented 3 years ago

The problem with changing out only the mesh reference is that you can't import just the reference / mesh data, you import an entirely new object. So you will have to import the model, open up an inspector on the new object, open up an inspector on the old object, find the mesh reference, drag it over, make sure to replace everywhere the old one was referenced. This works, but it's still a decebt amount of repetetive manual labor, at least unless I'm missing something here and you can import only the mesh data by itself already. Still though, especially with a file system watcher on the import file that auto-imports when the file has been changed by an external application, this has the potential to speed up asset creation / prototyping workflows a LOT.

I can't say anything about the tooltip, but I'm mainly working on static meshes so far, the fact that it works differently for skinned meshes might be important to point out depending on if it impacts this feature suggestion or not.

ProbablePrime commented 3 years ago

The mesh tooltip here is also an option. Its the green looking material tip inside Essential Tools.

Let's say you have Benches in your "Park" world. You'd:

I'm just providing native existing solutions here btw. Further options would be good to see.

JackTheFoxOtter commented 2 years ago

Just noticed the optional auto-reloading on file change I mentioned as a possible extension is described in #80 already.