godotengine / godot

Godot Engine – Multi-platform 2D and 3D game engine
https://godotengine.org
MIT License
89.43k stars 20.25k forks source link

Mesh Array changes in Inherited scene does not save #48727

Open Je06jm opened 3 years ago

Je06jm commented 3 years ago

Godot version: 3.3-stable

OS/device including version: Windows 10

Issue description: Any change to the mesh array from a mesh instance in a scene that inherits from a model file (glTF, Collada, etc.) is discarded. Changes are expected to be kept. An example would be generating a second UV map in the editor. Also going into the mesh array and changing lightmap size hint does not save. Adding nodes works as expected, so adding collision from mesh still works. This problem can be solved by making the mesh array unique. The documentation seems to suggest that this is incorrect: Baked Lightmaps

Steps to reproduce: Create a model in a external 3D modeling program without a second UV map. Import the model into godot. Open the newly imported scene and select 'New Inherited'. Select any mesh instance. In the 'Mesh' tab next to 'View', select 'Unwrap UV2 for Lightmap/AO'. Close all instances of the scene and then reopen. Click on the same mesh as before and again click 'Mesh'. Click 'View UV2'. An alert pop up with the message 'Model has no UV in this layer' will appear.

Minimal reproduction project: MeshBug.zip

aaronfranke commented 2 weeks ago

What do you mean by mesh array? Do you mean the ArrayMesh resource?

I can't reproduce this issue in Godot 4.x. When using a unique ArrayMesh, it is preserved after performing a reimport of the .glb file. When not using a unique ArrayMesh, the items inside of the ArrayMesh resource are grayed out, indicating they are not editable, and therefore changes cannot be made at all, let alone be saved or discarded:

Screenshot 2024-09-08 at 2 20 03 AM