godotengine / godot

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

Models rigged in and exported from Blender have corrupted limb bones in 4.0.1 #75498

Open blanchjo opened 1 year ago

blanchjo commented 1 year ago

Godot version

4.0.1-stable-win64

System information

Windows 10 and 11, Vulkan

Issue description

Regardless of export format, armatures from Blender inport improperly to Godot 4.0.1. The same armature iimports fine in 3.5.2

Imported into 3.5.2 it appears as follows. image

The same file in 4.0.1, no changes: image

Exporting the tscn from 3.5.2 still produces the same results. Please let me know if I can help in any way.

Edit: Had attatched incorrect image for 4.0.1 example

Steps to reproduce

Please see included tscn or glb.

Minimal reproduction project

Broken bones if not 'spine'.zip

blanchjo commented 1 year ago

Note, I have also attempted using DAE, FBX, and import from .blend with same results

blanchjo commented 1 year ago

Update/Discovery:

All exported bones MUST be parented before exporting. I had the clavicles, arms, and legs without parents. After parenting them properly they import correctly into GODOT. I'll leave whether or not that as "behaving as intended" up to other parties, but my opinion is that it should be acceptable to use unparented bone trees within your armature. Either way, I do hope someone finds this useful.

and-rad commented 1 year ago

Is this even possible in any other engine? A skeleton is a tree of bones and that means, mathematically speaking (and among other things), every node is connected to every other node. The other thing is called a forest. That's one of the reasons why UE creates an additional root bone if it detects that the imported skeleton has multiple roots.

I would file this under "behaving as intended".

rainerdeyke commented 7 months ago

UE behavior is clearly correct in this respect. Having "unparented" bones in Blender doesn't mean "literally completely detached from everything", it means "parented to the armature itself", i.e. "parented to the hidden root bone of the armature, which is the represented in the editor by the armature itself". If you move the armature, these "unparented" bones move with it, so they're not really unparented in any absolute sense.