-
-
Notifications
You must be signed in to change notification settings - Fork 21.1k
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
Add BonePicker and simple auto mapping to BoneMapper #63854
Conversation
0d64447
to
9add25a
Compare
844fc07
to
ca08193
Compare
Will be providing models and such to tokage. |
30abd4c
to
63b6e4c
Compare
86c5073
to
f537819
Compare
f537819
to
288e772
Compare
Enum list generation is too heavy (not related to this PR), I will send improvement later. |
7d88f34
to
c0cf792
Compare
Added BonePicker as Section 6 of godotengine/godot-proposals#4510. |
1dcda8b
to
d151aad
Compare
@TokageItLab I don't know which one caused it to fail, but it no longer happens with the updated commit. Is it still relevant to know? Now it looks like it autodetects everything for group Body except upper chest and root, while nothing is detected for the head (model has eyes but no jaw) or for the hands. This is an example of how the fingers are named: Maybe you can send me a message on the discord server if you need any more info about the model. As for general usability feedback, it would be nice if it was possible to keep the bone picker open, for example replacing the scene tree in the left view. This would drastically reduce the amount of clicking per bone one wants to map. It would also be nice if the skeleton was drawn on top of the model while working with the Skeleton3D, similar to how it looks in Unity, with the currently selected bone (in the picker) being highlighted of course. |
@JohanAR Thanks, finger0, finger1 are indeed undetectable cases as I expected.
We discussed with @lyuma the same thing about it, but it is hard work and has been put on the back burner for now. |
@TokageItLab would it be possible for the bone picker popup to at least remember which tree nodes were expanded the last time, so it doesn't collapse the entire tree every time it is opened? |
92984e0
to
aad8a18
Compare
@JohanAR Okay, I made it recording the folding state. |
@TokageItLab Awesome! Feels much quicker to manually assign bones already :) Another minor suggestion: Make double clicking a bone in the popup select it, so I don't have to press the ok button. And maybe make it possible to double click the circles in the in the group illustration, so that opens the picker for the selected item. |
aad8a18
to
abb21f5
Compare
@JohanAR Fixed. |
So far, I consider sequential number naming such as finger0, finger1 is a corner case. The reason for using such numbers for fingers is that in some of the models I have seen, there are some cases where the fingers are merged. For example, there are models that bind the thumb as finger0 and the other four fingers as finger1. In other cases, there are models that bind the thumb as finger0, the index and middle fingers as finger1, and the ring and little fingers as finger2. In these cases, it would be correct to treat finger0 as the thumb, but for the other fingers, there is no clear name because they are merged. In other words, auto-mapping cannot make the correct decision. It would be correct to map each bone from thumb to little finger if finger0-finger4 existed as an extension of that. However, for now that is pretty much a corner case that only the proprietary Biped system in 3dx max might generate. Auto-mapping is just an assist tool, and its accuracy is not guaranteed for all cases. Manual mapping and reusing BoneMap resources should be sufficient for those cases IMO. |
abb21f5
to
6ab0e76
Compare
As a subplan for cases where finger detection cannot be done by generic name, I added a string sorting of the bone names containing "finger" to perform the assignment. This should probably work for 3ds max Biped models @JohanAR. This means that it could break if there are 4 sequentially numbered fingers and one accessory name containing "finger" is on the palm, but I think that is a extreme-extreme corner case. |
081dbf0
to
e7b234f
Compare
Needs rebase. |
e7b234f
to
0ca5041
Compare
0ca5041
to
76c9d75
Compare
Co-authored-by: K. S. Ernest (iFire) Lee <[email protected]>
76c9d75
to
c7e4eeb
Compare
Thanks! |
Co-authored-by: K. S. Ernest (iFire) Lee [email protected]
Section 6 and 7 of godotengine/godot-proposals#4510.
Closes godotengine/godot-proposals#4510.
Bones are estimated based on commonly used bone names and parent-child relationships. They are based on my experience and data collected by @fire.
Note: For now, this only works if you use SkeletonProfileHumanoid, which is the default preset for SkeletonProfile in Godot and it is for the most part hard coded.