Replies: 2 comments 1 reply
-
If this were true, then simply changing the current parent-child relationship between Skeleton3DNode and MeshInstance (by simply replacing MeshInstance with another model) should work well, but it doesn't occur in real. There are many obstacles to mesh binding, and Skeleton requires model-specific bone rest data and etc. It would be possible to provide some API using SkeletonProfile to unify the bone names, but I think it doesn't makes sense to make the skeleton itself a resource. |
Beta Was this translation helpful? Give feedback.
-
Sorry if I'm late for the discussion but I would like to add a little bit further on this. While I agree that the binding provides a difficulty on its own, doesn't that come from how data is organized between the mesh and its data structures? I know Godot isn't a 3D DCC, and as such isn't bound to the same methodologies. But if I have mesh models that could be skinned to the same skeleton (modeled from the same base mesh, with the same proportions and base pose) I can do it, and share this data across those objects. A common use case (at least in AAA games) is to have multiple characters modeled from the same base templates, and thus fitting a body plan that allows them to share the skeleton. Similarly with body parts that can be swapped without ever touching the skeleton. And forgive me if I'm wrong, because I haven't dabbled with this on Godot yet, but the proposal makes absolute sense to me, despite being a pain in the a** to deal with due to how data is structures now on the engine. I found this proposal looking for this same question, and once I get into this subject, I would love to help and try implementing this. Can someone please elaborate on any reasoning to why this proposal wouldn't be fitting for Godot? |
Beta Was this translation helpful? Give feedback.
-
The current skeleton implementation, while being very functional, it does not allow sharing/reusing skeleton data between different meshes within different character setups/scenes. Animation libraries enable the reuse/sharing of animation data, but each character still maintains it's own Skeleton node with skeleton data baked in.
In order to truly share skeleton data I suggest separating skeleton data from the skeleton node. Similar to how mesh resources are used, skeleton data would become a resource that can be assigned to a skeleton node within a character's scene. When assigned to a skeleton node, an instance of that skeleton would be used so each character can apply it's own animation. Skeleton3D nodes would therefore become SkeletonInstance3D.
Beta Was this translation helpful? Give feedback.
All reactions