Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implement Bones as Nodes that are Children of Skeleton in the Scene Hierarchy (in 3D [and maybe 2D?]) #1767

Open
jejay opened this issue Nov 3, 2020 · 5 comments

Comments

@jejay
Copy link

jejay commented Nov 3, 2020

Describe the project you are working on:
3D human animation and vision research

Describe the problem or limitation you are having in your project:
No easy way to manipulate/edit/handle bones. There is something I call a "path to a solution" on the way: godotengine/godot#36409 but this still does not add gizmos (see #584)

Wouldn't skeleton-bone-nodes save (have saved) a lot of re-implementing (gizmos/handles/scene tree in the inspector)?

Describe the feature / enhancement and how it helps to overcome the problem or limitation:
Once you have bones nodes, you get free handles, gizmos, etc and a nice tree view in the scene hierarchy.

Even if godotengine/godot#36409 was finished and fully functional I still think bones in the scene hierarchy are less cumbersome and fit Godot better. There is no need to hide bones away in an inspector because in Godot you use scenes for abstraction. Put your character with the skeleton in its own scene, if you never want to see the skeleton again. Also, no one who uses skeletal animations will be afraid of seeing bones, there is no need for hiding them from beginners.

Describe how your proposal will work, with code, pseudocode, mockups, and/or diagrams:
Make skeleton bones nodes and thus part of the scene hierarchy.

If this enhancement will not be used often, can it be worked around with a few lines of script?:
No.

Is there a reason why this should be core and not an add-on in the asset library?:
No.

(Edit: yeah sorry, I have no clue how it works in 2D)

@Calinou
Copy link
Member

Calinou commented Nov 3, 2020

The issue with bones is that you can have a lot of them. If these were made to be actual nodes in the scene, performance would be severely decreased. Keep in mind that animated scenes are often instanced multiple times in a given scene too.

Also, I think 2D bones already work this way.

See also godotengine/godot#39353 and godotengine/godot#40347.

@jejay
Copy link
Author

jejay commented Nov 3, 2020

Okay I did not look at it from the performance perspective. And I did not know how it was done in 2D. So I guess it was on made on purpose this way in 3D for performance reasons? What exactly makes Nodes slow here? Is it about memory or speed? Is the addressing/referencing a problem? I am basically asking: is there a possibility to circumvent performance problems in a different way?

If people agree that this is the nicer way from the engine user's perspective I would actually be interested in investigating this as I'm interested for a while in contributing. But this is of course only worth it if people agree and also think that it's worth it at least to the level of the maintainer's time for merging it.

@fire
Copy link
Member

fire commented Nov 5, 2020

This proposal was rejected by the Godot Engine core developer team when it was suggested for 3d inverse skeletal animations 3-4 months ago.

I don't think anything has changed.

@jejay
Copy link
Author

jejay commented Nov 9, 2020

Ah okay too bad I did not know that and did not find anything about it here. Was it in the dev-irc? Or is it possible to read about it somewhere else, out of curiosity?

@GeorgeS2019
Copy link

GeorgeS2019 commented Apr 22, 2021

@jejay To address the performance, currently it seems the working approach is to:

  • Use Godot BoneEditor to manipulate the bones and save the Pose to AnimationPlayer as Animation as illustrated here.
  • Once U have done with the bone manipulation and pose key frame saving, U can remove the bones manipulators to avoid the performance issues.

JtTNjN2M2o

==> Keep making proposals on Godot 3D character :-)

Although we have an impressive looking option, for 4.0 and 3.3, the Bone Editor is working now and I use it on regular basis.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants