Posts

Inverse Kinematics

Image
After a busy few weeks back into the semester aswell as a week long battle with fresher flu, i'm finally feeling better and ready to settle back into the lab. I left off continuing down the psuedo mirroring pathway and had gotten to the point where I could manipulate one of the model hands based on leap data. (The idea of separating the leap motion "magic" and a visual model). Currently the way I do this is by just manipulating the transform of each of the game object points to match the leap points that I have. However as mentioned previously I currently only have the points for each finger tip, palm position and wrist position so by just using these points and updating the model each update frame it means that only the tips of the finger, palm and wrist move and the rest of the hand stays at its original place which creates a rather "spastic" looking hand. I think this could be on the right track but I need to work out how to move all the points in the hand...

Psuedo Mirroring

Image
Current State: So currently I have the new system functioning the same way the old was with the ability to have four hands using mirroring (by mirroring the frame) as well as a left hand mirror, right hand mirror mode. Also added in a four handed mode where the left controls the left and the right hand, the right etc. These are at the moment controlled by key board pushes (so that eventually the system can be run from by an "administrator" or something, rather than in VR) The rigged hands still are looking the same as before with a few of the polygons flipped or something (the problem we discussed at the last meeting) however because the system is now desk mounted the "drifting" issue is eliminated. Psuedo Mirroring: As far as psuedo mirroring goes I haven't gotten much further than last week. I started by seeing how easy it would be to gain information about the hands (I know that it would be in the code somewhere buried deep) and it tu...

14th of Dec

Things to try: putting controllers under one hand parent, would this affect the transform? having just one set of handmodels start building the scene Look into why mirrored rigid hands are so muddled up

Leap points to Unity space

Image
Post Holger & Tobi meeting: Work on leap to unity conversions Visualize the interaction box/sensor frustum/ even potentially rift viewing space?? Move on to the decoupling hands from data Step 1 have hands just in front of you Step 2 mimic movement for chris Leap Point to Unity  So what I now know is that when leap returns a position vector, the point is relative to the origin of the leap controller rather than an absolute point. To convert this I followed the following steps: Divide the vector by 1000 to convert from mm to m Negate the Z value to change from rh to lf coordinate system Find the unity position of the leap controller's origin Add the origin to the vector   Drawing Bounds This proved to be more of a challenge for me then I expected. I was struggling to work out how to draw these straight lines at run time using the GL library. GL is a basic graphics tool which can be used to draw lines and triangles (potentially more I'm ...

Table mounted version PT II

Image
Just a short update post today :) Note: I'm not sure if what I've done today is correct but this is the path that I went down that seems to be working. So because I couldn't work out how to change the origin point (set (0,0,0) to a specific point in the real world) I used the HMD to chose a point. I did this by putting the HMD in a specific point in the real world and checking the position of the center eye camera. Not sure if the centre eye camera is the best one to use though as I'm not sure where exactly on the HMD it was located. Anyway as a starting point I went with this and took the position  as (0,-0.4,0.24). Using this I attempted to account for the location of the camera by subtracting half of the HMD height which left me with a real world position (x marked on my desk) and it's Unity coordinates. Using this point I measured the position of the sensor away from the point and placed a gameobject representation of the sensor in the scene. The main is...

Table Mounted Leap pt 1

Image
A majority of the next few paragraphs I now realise are wrong, this was a post I was writing before meeting with Holger and Tobias, the new info starts a bit further down.  I'm currently working on a table mounted version of the leap motion system. Getting the controller to allow this was relatively trivial however the bigger challenge was to create the real world coordinate system so that I could place objects in the scene relative to where things were in the real world. I did a little bit of research into how this could be done using the Oculus Virtual Reality extension which provided an interface to the hardware. This looked familiar and I remembered that I'd seen Sam use it in his demo and after revisiting Sam's demo it looks like he used it primarily to generate the bounds of the scene. I got as far as locating the position transform of the Oculus sensor at runtime which I thought I could use to base everything else around it. My thinking behind this was that I wo...

Breakdown of Leap Motion classes

Image
This blog post isn't really for reading, it's more about me trying to understand what everything in the classes do so that it will be easier to write my own classes when it comes to decoupling them. It's mainly a break down, line by line of how the bottom two classes, which deal with the actual frames/data work.  Leap Service Provider Order of method calls in Unity. Start() checkShouldEnableHeadMounted() This checks to see if VR is enabled and whether or not head mounted is enabled and logs an error if both are true. This is because by default they enforce that you use head mount when in virtual reality. This is an important thing to note for when I go to implement a table mounted version of the system. Would have to disable this check.  Returns true if we should enable head mount, false if not necessary createController() " Create an instance of a Controller, initialize its policy flags  and subscribe to connection event" - Leap Motion Create...