-
Notifications
You must be signed in to change notification settings - Fork 8
Ik modifier 3d #48
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
Ik modifier 3d #48
Conversation
9590571 to
331143d
Compare
442385e to
19b07e2
Compare
|
Yay the ik is passing cicd. |
bc0b91c to
3018b3d
Compare
|
@TokageItLab How does chainik3d work? |
|
I plan that ChainIK3D works to process no-branched chains but uses ManyBoneIK solver info struct, and I think we can define BranchIK3D with extending ManyBoneIK for multi-effector to organize intersection set of the joints. I am currently implementing TwoBoneIK, and once that is complete, I will attempt to implement BranchIK3D. |
|
The basic idea behind Eron's decomposition algorithm is: From each effector, traverse down to the skeleton root to find other effectors. As you do this maintain a list of bones_encountered, and current_weight 1a. Check if the bone is an effector other than this one. If it is, multiply current_weight by 1-effector_opacity of that effector. 1b. If current_weight is 0, stop descending for that effector. 1c. Otherwise. Add the bone to the list of bones_encountered and continue to its ancestor bone. You now have a list of effectors, each containing a list of the bones that solve for them. 2b. Find any subsets of identical runs of bone sequences among the lists. Consolidate these into effector-groups, which contain the sequence of bones common to the origin bones_encountered lists, as well as the effectors those origin bones_encountered lists were for. You now have effector-groups. Which are sequences of bones that all solve for the same effectors, and those bones all know how much to prefer each of the effectors they solve for. Create an array of effector-groups, reverse sorted by the distance of the rootmost bone of each list from the skeleton root. Create a solve_order array by traversing through the effectorgroups array, and appending each of its bones to the solve_order array. You now have a solve_order array containing the bones in the appropriate order in which they should be solved, and with a constant set of effectors per run which you can use to minimize branching when solving, since you'll know that you're always solving for the same number of targets |
0ee4228 to
f384755
Compare
…e_smallest_things Fix "SpriteFrames" editor not fully hidding the bottom panel
Move Skeleton3D init process (for dirty flags) into `POST_ENTER_TREE` from `ENTER_TREE`
Fix Wayland build with OpenGL disabled.
…copy Fix Resource duplicate calls `ImageTexture::set_image` with an invalid image.
Update class reference contribution link.
…w-local Document CanvasItem `draw_*()` methods using local coordinate space
…-fix-xrreferencespacetype-url Fix MDN link for XRReferenceSpaceType in WebXRInterface class documentation
…regression-fix Fix status bar visibility issue after keyboard hides on Android
…ks-2 Update links to the contributing section of the docs to the appropriate new sections.
…e-store-libraries AnimationTree: Fix `libraries` is stored
…d-for-crashlytics added build id link flag for firebase crashlytics support for android
a3dda7d to
bb14f83
Compare
See the release page for details: https://godotengine.org/releases/4.5/
Update `GODOT_CPP_BRANCH` after Godot v4.5-stable release
bb14f83 to
5442f4d
Compare
|
Superseded by #54 |
For review