godotengine / godot

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

GLB/GLTF Animated Mesh Stretching #62403

Open TokisanGames opened 2 years ago

TokisanGames commented 2 years ago

Godot version

3.5-rc4

System information

Win 10/64 NVIDIA GeForce GTX 1060/PCIe/SSE2

Issue description

I have an animated mesh that stretches too far and deforms improperly. It's coming into Godot via Blender 3.1.2 & GLTF.

Here's what the GLB looks like in MS Windows 3D Viewer and Blender. The wings are round and full, and the points on the back are somewhat evenly spaced. image

In Godot, the wings completely lose their shape at certain points in the animation. image

Weight painting looks normal: image

In another part of the animation, 3D Viewer and blender are again normal. The wing points are evenly spaced. Notice the last one, and how far away from the tail it is, and how it's lined up with the other wing points. image

In Godot, the wing tips stretch back way too far, coming to the same level as the tail. Notice the last wing point is stretched very far compared to the other wing points. image

To troubleshoot it, we tried enabling or disabling all of these import/export options, but none had any effect. Blender

Godot

We ran into #56705 as enabling the >4 bone weight influences option on blender export caused Godot to strip out the material slot. Disabling that option brought the material slot back in 3.5-rc3. rc4 loads the material slot just fine with all influences enabled. Here's the blender original, which is the best. image Here's what allowing only 4 bone weights looks like (export to glb and reimport to blender). image Here's enabling >4 bone weight influences and reimporting to blender. Much smoother: image

I tried an FBX export and just got garbage.

Steps to reproduce

fire commented 2 years ago

Can you test the quality with Screenshot 2022-06-26 164411

this option is off. If the animation is hefty use the compression option.

And make a before and after video of two versions.

fire commented 2 years ago

Godot 3 does not support 8 weights. You can try the recent bone weight truncation patch.

https://github.com/godotengine/godot/pull/61912

TokisanGames commented 2 years ago

61912 is in the latest rc, which does load the mesh w/ materials, rc3 does not.

The dialog you're showing is in Godot 4? I'm using Godot 3.5-rc4/5. I went through the optimizer options on the Import panel and none have any effect, on or off. In the animation player I used both the optimize animation and clean up animation functions under Edit. Neither had any effect on the distorted wings or stretched wings.

I took the model into Godot 4 alpha 10 and it looks normal. Neither issue is present. The unoptimized, uncompressed animation looks great. The optimized version looks like stop motion, even if I increase it to 60fps, and doesn't look good at all. The compressed version has a few artifacts in the way the legs move. Neither the optimized or clean functions distorted the wings, it just caused artifacts in leg or head position.

Alright, we're fine as we're going to begin porting to Godot 4 soon anyway, but Godot 3 does have a problem. We can close this or keep it open depending on if you want to fix Godot 3.

Thanks.