-
-
Notifications
You must be signed in to change notification settings - Fork 45
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.