Skip to content

IK Rig API Design Notes

SketchPunk edited this page Dec 8, 2021 · 1 revision
Testing Meshes
* Human ( Jinx, Tina, Nabba, Vegeta )
* TRex ( Tail, 3 Bone Legs, Several Bone Neck )
* CherobBot ( Tail, Wings, No Feet )
* LigerZero ( Prototype QuadrupedRig that can take in Human IK Pose data )

API Concept

import { BipedRig } from 'ossos';

const rig = new BipedRig( arm );

if( !rig.tryAutoRig() ){ log( missing parts ) }

rig.bind( tPose ); // If Arm is already in TPose, no need to bind

rig.get( 'armL' ).setdirectionTarget( endEffectDir, poleDir );
rig.get( 'armR' ).setPositionTarget( endEffectPos, poleDir | polePos? );

rig.updatePose( currentPose );       // Modify the pose using available IK Info
springs.updatePose( currentPose );   // Apply SpringBones after IK

boneView.updateFromPose( currentPose ) // See Results
arm.updateSkinFromPose( currentPose )  

Default Known Parts for BipedRig during AutoRigging

Need to come up with a way to streamline various IK Data (Point, Chain & ChainEnds)

.armL - chain
.armR - chain
.legL - chain
.legR - chain
.handL - Point
.handR - Point
.feetL - Point
.feetR - Point
.head  - Point | Chain ( Neck > Head )
.spine - ChainEnds?

IK Chain

  • LS Bind to a TPose

    • Keep the chains self contained, no need to keep around tPose.
  • Integrate IK Target & Solver into chain

    • Kind of clunky in previous version as separate objects.
    • Be nice to set the IK info on the chain then say resolve itself with the assigned solver
  • Chains will still have Alt Direction, But should it be only the root OR all chain items?

    • The Spine uses chain ends, So need at least two sets for Alt Directions for this.
    • Dont want to store more data then is needed, but doing so might over complicate things.
Clone this wiki locally