Saturday, June 3, 2017

Inverse Kinematics Checkpoint

For the final project, I'll be working on an inverse kinematics system.

So far I have modified my joint system that I created in CSE 169. It involves a hierarchy so that moving the parents affects the children. It takes in a file containing joints, sizes, and poses and creates a skeleton hierarchy that creates a box for each joint.

offset: Distance from the parent joint
boxmin: Lower corner of the box
boxmax: Upper corner of the box
rot*limit: Limit on rotation.
pose: Rotations required to get to a certain position, in radians.

Here's an example file:

balljoint hip_r {
offset 0.1 -0.3 0
boxmin -0.05 -0.3 -0.05
boxmax 0.05 0 0.05
balljoint knee_r {
offset 0 -0.3 0
boxmin -0.05 -0.3 -0.05
boxmax 0.05 0 0.05
rotxlimit -2 0
rotylimit 0 0
rotzlimit 0 0
pose -3 1 2
}
}


The file results in this skeleton.

Earlier, the project was written using old openGL, so I spent time converting it to new openGL by loading a cube obj and using some shaders. From here all I need to do is figure out the various methods for inverse kinematics.

For the final I want to get an inverse kinematic system working in two ways. Analytically, for a two joint system and numerically for a 4 joint system. I also want to animate the joints reaching their appropriate positions, so I am also planning on adding either a simple lerp or rotational velocity to smoothly move the joints into position.

I want to import the Oculus and Touch controllers and be able to specify target points in 3d space that way. If there's time, I want to have a simple sword fighting system, where it will attempt to block your attacks.

No comments:

Post a Comment