stride3d / stride3d/stride

[Feature Request] Build-in IK / Inverse Kinematic Solver

Open
#103 15 comments 4 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

enhancement
Dominant language
C#
Stars
7.8k
Forks
1.2k
Avg merge
2d 17h
Merged PRs (30d)
49

Description

Original Content of this post:
beside to handle the character foot position, maybe this will be useful for 3rd person shooter game.

Added context from @anan1213095357 in issue #1698 :
Is your feature request related to a problem? Please describe.
Yes, my feature request is related to a problem. Currently, our software does not include an Inverse Kinematics (IK) solver, which can limit our capabilities in various animation and robotics applications. The lack of an IK solver may increase the complexity and the time needed to calculate the joint parameters that achieve the desired positions of the robotic manipulator or character.

Describe the solution you'd like
I would like to have an integrated Inverse Kinematics solver in our software. This solver should include support for different IK algorithms such as CCD, FABRIK, and Jacobian methods. It would be great if the solver could handle both single and multiple end-effectors and constraints.

Describe alternatives you've considered
An alternative could be to integrate an external IK library into our system, but this could lead to problems with compatibility and maintainability. Having a built-in IK solver will provide more flexibility and control over the feature.

Additional context
An IK solver is fundamental in various fields like computer animation, game development, robotics, and even biomechanics. It is essential for calculating joint parameters that would put an end-effector in a desired position.

  • What are the usecases? The IK solver can be used in character animation for game development, robotic arm manipulations, posture prediction in biomechanics, etc.
  • What kind of options/settings are expected/wanted? Options for different IK algorithms (CCD, FABRIK, Jacobian), single/multiple end-effectors, and constraints.
  • What would the (pseudo) code look like? Something like this: ik_solver.solve(end_effector_position, algorithm='CCD')
  • Is the feature affecting behaviour in the editor? Yes, it could come with visual representation of the IK chains and a user-friendly interface for parameter adjustment.
    • if so: how should this look in the editor? It could show the IK chains and allow users to select and adjust the parameters interactively.
  • Is there a component or datastructure? Yes, the IK solver could be a new component that uses data structures for the kinematic chain, joints, and end-effectors.
  • what kind of documentation is needed or needs to be updated? A complete documentation explaining the usage of the new IK solver component and its options, along with updates in the parts where IK solutions are applicable.
  • Should there be an example project? Yes, an example project showcasing the usage of the IK solver in different scenarios (robotics, animation) would be beneficial.

Last edit by @Eideren.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

No files, tests, or entry points are named. Start by surveying Stride’s animation, character, and editor systems, then define the solver scope and integration points before implementation. Done would require a working IK component supporting the requested algorithms, end-effectors, constraints, editor controls, documentation, and examples.

Written by the indexing model from the issue text.

Assessment

Tech stack
csharp
Domain
computer-graphics, game-dev
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
20/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.