Project #6 - Math 155B - Student: Allen Ding
Comments
Here is my project :) (Download)
I decided to try and create a pair of virtual hands that would type input
that matches that from the users keyboard. I realize visually it isn't much
to look at, but it is a little more fun when you can try it out
- Just use a-z and space to make the hands 'type'
- Use '[' to slow down, and ']' to speed up.
- Left mouse + drag rotates.
- Right mouse + drag zooms.
- You do require high performance timer support.
- Make sure CAPS is off.
The implementation basically uses the Damped Leased Squares IK scheme, along
with 1,2, and 3 DOF joints. (1 3DOF, 5 2DOF, and 9 1DOF joints)
The damping constant is set to about 0.7, which gives it pretty good behaviour.
I did try out the Jacobian transpose method to see how it would worked for
this situation, but it was pretty slow and lacked stability, though
the code was simpler ;). The split between implementation of the IK scheme and
modeling, and fudging was about 40-30-30. I used Professor Buss' VRMath package
and it was excellent, although there was a little of a learning curve.
I did use very little of one of my early CSE169 projects (for the joints),
but it is very heavily modified, especially since I had to modify everything to
use column order, and some other gritty details.
The project took about the 18-20 hours recommended.
Some comments:
- Trying out multiple keys at a time is where the scheme is really useful.
(Try sliding qwertyuiopasdfghjklzxcvbnm :)
- Not having constrained joints (minimum/maximum limits) can cause the joints to
become 'dislocated' compared to a human hand. This doesn't happen that much
in the executable because the setup and fudging :)
- Would the extra constraints would make the scheme much more complicated
since it would not be solving only equalities? Anyway, I would like to add this
later to make sure the fingers don't behave badly.
- I wish I had prettier graphics, maybe some letter textures on that keyboard.
List of figures