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

Solve skeletal inverse kinematic poses with constraints #70887

Closed
wants to merge 7 commits into from

Conversation

fire
Copy link
Member

@fire fire commented Jan 3, 2023

Main work will be in https://github.com/V-Sekai/many_bone_ik

Proposal for Godot Engine 4.x

Fixes: godotengine/godot-proposals#6039

Adds another option to #69752

Supersedes #63588

Part of V-Sekai https://github.com/v-sekai/v-sekai-game

A list of todos

  • Fully constraint test project from All inverse kinematic options in Godot 4 seem broken #69752
  • Add cone handle adjust radius and spherical surface position with a distance of 1 from the spotlight3d
  • Do a dance.
  • BETTER UIUX BLOCKER
  • Mark experimental
  • Delay painfulness parameter, but call it something else.
  • Fix increasing the cone count resetting the inspector

@fire fire changed the title Initial commit from https://github.com/V-Sekai/many_bone_ik Solve poses for full body VR tracking with Many Bone IK #6039 Jan 3, 2023
@fire fire changed the title Solve poses for full body VR tracking with Many Bone IK #6039 Solve poses Many Bone IK Jan 3, 2023
@fire fire changed the title Solve poses Many Bone IK Solve inverse kinematic poses Jan 3, 2023
@fire fire changed the title Solve inverse kinematic poses Solve skeletal inverse kinematic poses with constraints Jan 3, 2023
@fire
Copy link
Member Author

fire commented Jan 3, 2023

Wanted to sense the mood on the enhancement and if it's positive, try moving the custom code parts into the core.

modules/many_bone_ik/doc_classes/IKBone3D.xml Show resolved Hide resolved
modules/many_bone_ik/doc_classes/IKRay3D.xml Outdated Show resolved Hide resolved
modules/many_bone_ik/doc_classes/IKRay3D.xml Outdated Show resolved Hide resolved
modules/many_bone_ik/doc_classes/IKRay3D.xml Outdated Show resolved Hide resolved
@fire fire force-pushed the many-bone-ik branch 2 times, most recently from 1b7bdee to 7d6f1e9 Compare January 3, 2023 22:00
@Chaosus Chaosus added this to the 4.x milestone Jan 4, 2023
@Riteo
Copy link
Contributor

Riteo commented Jan 4, 2023

How is this supposed to work related to #63588? Will eventually both get merged at different times or will one supercede the other?

@fire fire force-pushed the many-bone-ik branch 2 times, most recently from 638a5e0 to 9f02c41 Compare January 6, 2023 17:06
fire added 6 commits January 8, 2023 09:06
We use quaternion axis angle because it is normalized.
… ids."

This reverts commit 1c2169f64fa3cddb0beb1f3342da452bef6ad2b7.
This reverts commit 4a98037d79d21cc32361a2e77f25b64d784c968b.
@Rabcor
Copy link

Rabcor commented May 2, 2023

How is this supposed to work related to #63588? Will eventually both get merged at different times or will one supercede the other?

Seems to me like this implementation is completely superior to the skeleton modification one, so it would probably supercede the skeleton modification system entirely.

I'm a bit sad that IK 3D wasn't given higher priority for 4.0's (and 4.1's) release, you can't really make a proper modern 3D game without inverse kinematics, it serves many critical roles. Yet 4.0 released with nothing but a completely broken SkeletonIK3D node implementation (thing cannot be used at all, it is broken beyond any sort of usability in 4.0.1, if they removed skeleton modification because it was broken, they should do the same for skeletonik3d, cuz it's broken too in just about every way. Hell, u even get an error just from adding the node, an actual error!)

I really wish this pull request would go through soon. I'm very new to the engine, and one of the contributing factors for me choosing godot was because I saw some very good IK implementations in videos about godot, but then I install the engine, start learning it and find out that IK is actually completely broken? It was very disappointing for me, it's critical for my project.

@TheoJao
Copy link

TheoJao commented May 15, 2023

How is this supposed to work related to #63588? Will eventually both get merged at different times or will one supercede the other?

Seems to me like this implementation is completely superior to the skeleton modification one, so it would probably supercede the skeleton modification system entirely.

I'm a bit sad that IK 3D wasn't given higher priority for 4.0's (and 4.1's) release, you can't really make a proper modern 3D game without inverse kinematics, it serves many critical roles. Yet 4.0 released with nothing but a completely broken SkeletonIK3D node implementation (thing cannot be used at all, it is broken beyond any sort of usability in 4.0.1, if they removed skeleton modification because it was broken, they should do the same for skeletonik3d, cuz it's broken too in just about every way. Hell, u even get an error just from adding the node, an actual error!)

I really wish this pull request would go through soon. I'm very new to the engine, and one of the contributing factors for me choosing godot was because I saw some very good IK implementations in videos about godot, but then I install the engine, start learning it and find out that IK is actually completely broken? It was very disappointing for me, it's critical for my project.

If you really need it, you can include this module into your project, however it's kind of hard to use without any documentation. You could also try an IK add on named Twisted IK 2 which you can find on itch.io. It's paid but you can download a demo to try it out before buying it.
I do hope an IK solution is added to Godot soon, it's been almost 2 years since IK got broken.

@fire fire closed this May 19, 2023
@fire fire deleted the many-bone-ik branch May 19, 2023 20:52
@fire
Copy link
Member Author

fire commented May 25, 2023

I accidentally deleted the branch as we're reworking in https://github.com/V-Sekai/many_bone_ik.

We have this idea of moving inverse kinematics to the animation tree. Still working on a proposal.

https://gist.github.com/fire/1953bd6bb0e9cc3b964796317d23c702 has a draft for splitting the work into defining a standard approach for inverse kinematics in Godot Engine and implementing the many bone ik animation tree functionality.

This proposal has consensus among the animation team that it is a better approach than the IK scene tree node.

@fire
Copy link
Member Author

fire commented May 25, 2023

#77469 has a fix for the broken IK node in godot engine 4.0

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

Successfully merging this pull request may close these issues.

Solve generalized skeleton poses with Many Bone IK
7 participants