This is an automated archive made by the Lemmit Bot.
The original was posted on /r/godot by /u/untune on 2023-08-11 12:39:35.
This is more of a conceptual question, rather than looking for a solution to a problem: I've been building a prototype and I want to start looking at a way to animate characters in 3D. I've not really delved into aspect of Godot yet, since I've read various conflicting bits of info about how well certain aspects of the system work.
I want to create a 3d character (a typical human for example) and I want to be able to animate that character. I want to be able to assemble that human from individual limbs (whether imported models or basic mesh primitives) as opposed to the character being a complete skinned mesh. And let's say that I want to create a simple walk cycle. Picture something as simple as a Minecraft character, or more realistically something more akin to PS1-era Resident Evil.
What are my options for implementing this? Ideally I would need to be able to animate outside of Godot (in Blender for example) and import those basic animations, with the ability to swap out each 'limb' as an individual 3d mesh node. And to be able to tweak and re-import these animations, and bring new animations in, without breaking the structure.
I can envision a scene tree hierarchy with individual limbs branching off at necessary points (head, neck, torso, upper arm, lower arm, hand etc), I am aware that Skeletal Animation is a thing in G4, but as I understand it can only be imported as a pre-built skeleton and not created within Godot itself? Would I be able to build a skeleton externally with limb 'placeholders', import that, then attach different objects to different bones at runtime? Or would this break the system?
Or is it better to create a different system that doesn't rely on bones but instead relies on the relationships between nodes in the hierarchy and the various pivots & matrices, plus an animation-based node, to create movement and rotation? Would having multiple instances of mesh nodes be inefficient (I'd imagine 16+ for a human), would there be a better way of managing it from the top of the tree (in terms of efficient draw calls etc) as opposed to letting each 'limb' node manage its own mesh data?
Will any of the native 3d model formats support such a system? It's only the limb relationship structure I'm really interested in; I plan to manage materials etc manually.
It'd be good to hear how other people have approached this, I'm aware I may be over-thinking it a bit, I just like to have a clear picture before I start getting too bogged down in the implementation.
Thanks!