-- LinhPham - 31 July 2009
The symposium is today... it is also the last day... so, to conclude this internship, I will just post a video of the end results.. enjoy.
-- LinhPham - 28 July 2009
So today I am trying to do the 3D hand model... =/
Good luck man!...I know you've been working extremely hard in Howe basement.
-- LinhPham - 24 July 2009
So yesterday we went on a field trip to a usability lab and the science center. It was interesting. The food was really good. I ate so much for dinner I didn't eat breakfast today. Today I worked on improving the hand model... or tried to... I don't know if it is really demo-able... I think I will just work on making a cool demo with kens water.
-- LinhPham - 22 July 2009
Today I was able to incorporate Kens water with my code. What I have right now is you are able to control a ball with your hand.
However... the frame rate is horrible. I thought it was just my crappy laptop, but I tried it on one of the desktops, and it still is
slow. Hopefully Ken can help me remedy this problem.
And to Hamadi... sorry... but this water isn't the famous sexy water that Ken is known for. This is just simple crap water he made quickly for us to
use. When his nice water interacts with other things, the frame rate slows down dramatically... so it would have probably made my laptop explode...
-- LinhPham - 21 July 2009
Today I wasn't able to find out why the depth in the palm is very different from the depth in the fingers... so I just decided to move the
whole hand based on the depth of the palm. Doing it this way will limit what I can do with the motion of the fingers... but right now
its just a sacrifice I have to make. Also I tried incorporating Ken's water.... and had 1953 warnings... I will just wait till he gets here so
I can get his help.
I hope when you demo your project at the end of year symposium, I get to see this infamous water. I've heard alot about it and it has been hyped to a great extent, but we have never gotten the chance to see it. You aren't going to deprive us are you? Lol.
-- LinhPham - 20 July 2009
Today I found an error in my code. I didn't know why when I drew cubes for the fingertips in OpenGL they were so far apart from each other.
What I didn't do was put each and everyone of them in their own push and pop matrices. Once I did this the cubes we in their proper positions,
but they still didn't fit on the screen, so I had to scale them. I also added a cool feature to highlight a specific cube and get the location of it.
This will make it easier to debug my code in the future.
-- LinhPham - 17 July 2009
Today I worked on a different approach. Ken gave me some openGL code to start with yesterday... so i ended up making a grid and a cube that I can
move with a marker in that grid. Now even though this is nothing new... what is new is that I am trying to make the movement as realistic as possible.
I ended up taking 28 of the points in history, adding them up, and using these points as the current point. This helped dampen all the jittery movement
due to the Z-Cam's inability to properly get a constant still images. The depth information from the camera though is still a little spotty. I cant seem to get
it to work. I am hoping to be able to take this and apply it to Kelly's code... hopefully getting a more natural movement.
If you're looking for a way to filter out noise (smooth the motion of the cube) you may want to look into using a Kalman filter. They are very good at that.
-- LinhPham - 16 July 2009
So today I added depth into my code.. that took... let me count... 1..2..3..4..5..6..7..8..9..10..11..12..13..14..15..16..17..18..19..20..21.22..
I think about 22 lines of code... and it worked the first time a ran it... which is nice.
I didn't know 1 came after 10...haha i'll fix it.
-- LinhPham - 15 July 2009
So just a quick blog today.... I fined tuned my code, tried to combine it with Kelly's code... didn't work... now I have no Z-Cam...
-- LinhPham - 14 July 2009
Today I got each finger to display in the openGL windows with the appropriate color on the markers. I also fine tuned the
range for the pinky, making it more responsive. Ken helped me fix the openGL window to display the cylinders better. I
also mirrored the images displayed so that it would be easier for the user to associate which finger is which. I would say
today I just spent fine tuning my code.
-- LinhPham - 13 July 2009
I just wanted to post up some pictures of what
our poster will contain. I've had a lot of posts that have just been straight up text, so I think a
visual post has been long overdue.
looks very cool
-- LinhPham - 10 July 2009
Today I was able to add my FingerHistory class. The purpose of this class is to maintain a history of previous locations of the fingers. I had coded
this in a seperate solution to test, and when I basically copy and pasted it in my code, it worked, so I was happy about that. I was also able to draw 5
cylinders based on these points. The problem I have now is that there is no way to differentiate which finger is which. Even though I have 5 cylinders,
they are just 5 random cylinders. They are not unique to each finger. I don't know where to go from here. Song told me to integrate Joshes calibration
code, and I was thinking after I did this, I could use markers to help. However, when I did this, it did not work properly. It would either find the hand, or
the marker, not both at the same time. Hopefully Song can help us find our way.
Not to make you feel like you ruined our study, but we had to throw your data out. I'm actually a little surprised that our grad mentor had never encountered a problem with eye drops before and didn't think to not let you apply them before the study. Don't worry about it, we'll still have plenty of data. I think instead of having 7 subjects we're going to have 6. No big deal.
-- LinhPham - 9 July 2009
When I went back to my apartment yesterday, I was wondering why I cant ever draw a point on the middle finger. I thought about it for a while and
I realized it might be the first point I work with. To further explain, basically I had this:
for( int i = 1; i < numberOfPoints-1; i++)
I did this because to find the angle between 2 lines, you need 3 points, so starting at i = 1, I would compare it with points 0 and 2. The problem
with this is with the current loop, it would stop at numberOfPoints-1, and it would miss comparing 2 points, because one involve having point 0 in
it, and the other would involve numberOfPoints in it. Both these values are unreachable, so what I did was i changed i < numberOfPoints-1 to
i <= numberOfPoints, and introduced 2 if statements to handle these 2 points. Only one of those points matter though, since the other point would
be the webbing of the hand, but I am a picky coder and I wanted to do the whole hand. Now I have 5 dots on the contour, 1 for each finger. However,
if I turn my hand upside-down, it draws points on the webbings. The reason is I am using arctan to find the angle. If its negative, its a finger. But if
you turn your hand upside-down, now the webbings are negative. Ken said yesterday this would work, so I hope when he gets in he can point out
what I did wrong.
please look at the email Pam sent and sign up for our study
-- LinhPham - 8 July 2009
I wasn't able to find any spline code to work, so I decided to focus on a different approach. I was going to us a function cvFindDominantPoints()
to find the dominant points of the contour. When I used this function, it kept throwing me memory errors. I spent alot of time debugging this,
eventually getting help from Brett. What the problem was is that if the contour was too small and the function tried to find dominant points, I
guess it would throw an error. The solution was just to call the function within an if statement that made sure the area of the contour was above
200 units. This solved the issue, however, the results I got were pretty much useless. The dots I plotted were not even on the contour. Now I have
no idea if its the function's fault or how I am using it, because there is very little documentation online about this function, and people have had
questions about it, but these questions were posted in 2005 with no responses. Maybe Brett can figure it out, but if he cant, I have to hope that
Jim can get a hold of NLIB for me so I can see if splining the contour will help.
-- LinhPham - 7 July 2009
Today I got to work and found some spline code I could implement. I downloaded the .c file, and made a .h file for it. I then
encountered a problem using it, because the functions it contained used a struct for points. I basically had to go through
and convert CvPoints into points, which wasn't hard, but I kept encountering memory errors. I realized I had this same error
before when I tried to access a contour that was null, so this was remedied with a simple if statement. I got as far as getting all
the points, and splining them. I was working on getting the points back into a the CvSeq format, but then I had a meeting with Jim Oliver
around 11 and he told me I needed to search for NURBS global curve approximation. I guess what I did earlier has gone to waste,
but I did learn about some interesting openCV functions which let me convert CVseq into an array and vice-versa.
You've met the person responsible for taking Transformers 2 away from us? Did you mention our petition? Did he laugh?
-- LinhPham - 24 June 2009
I woke up late for work today... =\ ... there is not much to do now... I am basically waiting for Josh to finish his part of
the code so I can have a go at it. Josh is trying to get the 5 fingers to show up on screen and control them using 5
different colored markers. When he does that, I have to implement the twisting and turning of the hand... =O ... I
did not really know how to approach this until I cleared it up with Song yesterday. The approach he wants me to take is
to determine the velocity and acceleration of the hand, and if it goes off screen, assume the current trend. I think this
will be the hardest to implement... but when I do it, I will actually be proud of it. I know how to go through the calculations,
but the tricky part is getting the data. I can already find distance... but I need to figure out time. Once I do that then I need
to figure out how to implement it so it looks real. Hopefully I can do this, but its probably going to be a lot of if statements...
I'm glad you finally found something that interests you You and Josh might try doing some paired programming (one of you codes for an hour while the other watches, asks clarifying questions, comments and then you switch). It's supposedly a very effective way to write good code.
-- LinhPham - 17 June 2009
So today, I worked on editing Joe and Brett's code to rotate a cube with the Zcam. I wanted to post this, so I found a free screen capture program... so here it is.
As you can see, my hand is moving when the block moves.
With this new program, I thought I would re-record Tic Tac Toe.
Nice, great work with the cube and getting some nice YouTube videos made.
-- LinhPham - 17 June 2009
Well its been a week since my last blog... WHOOPS! Yesterday we voted for the best program, and we won. Honestly, it wasn't that hard to make.
I think the reason why it looked impressive was because of the flashing colors, the sound, and it was in 3-D. I didn't even intend to make it 3d...
At first I disabled the mouse when I started coding. When I finished, Josh asked what it would look like if I enabled the mouse. When I did, I realized
it did work in 3-D too... so HAHA!
Today I'm working on rotating a cube with my hand. Lets see what I can do...
With only a week, most of the projects were fairly simple. Your group had the advantage of having a lot of additional bells and whistles plus interactivity. With the movie, you might want to try some screen capture program (the only issue is most of the ones I know of don't work with 3D--at least not well).
If PJ, Bella, and Ivan had gotten shadows working, that would have been impressive--that was the most ambitious graphical effect that any team tried (it's non-trivial and usually isn't covered in intro. graphics classes, the rest is all pretty well covered in most graphics courses).
-- LinhPham - 10 June 2009
Today we did more OpenGl . I dont really know if I am learning, because all I am doing is altering someone else's code.
hahahaha nice!!! i wish umbc was more like this...
-- LinhPham - 5 June 2009
Today we started learning some OpenGL . I was able to write my initials on the screen in red and circle it in yellow. I look forward to see what else I can do with OpenGL .
Enjoying OpenGL a bit better than the programming course from last week?
-- LinhPham - 5 June 2009
Today I started learning some OpenCV . I am trying to familiarize with the library by reading a tutorial. This is boring, but it must be done.
OpenCV is poorly documented but (thankfully) there is a book on it now. It's powerful though and very useful.
-- LinhPham - 4 June 2009
Today we worked on finishing up the tic tac toe game. We put all our files together, and when I ran it, there was a small error that took me a good 20 minutes
to find. It turned out I had an "=" where it should have been an "==". I fixed that and everything is working fine. All I need to do now is comment and we will be
done.
3D tic-tac-toe being a cube and the rules vary depending upon how complicated you want to make it. You can either do one large game of the entire cube where three pieces aligned anywhere in 3D space can win it for you or do each 3x3 grid as its own game and then at the end juxtapose them all and have bonus points if there are additional alignments in 3D space.
Another alternative might be larger grids, but that's simple changes so a 5x5 with 5 lined up to win. Implementing some AI (if you don't already) would also make it more of a challenge/more interesting.
Those "=" and "==" errors are sometimes the worst. If you do a lot of programming in VB for awhile (or another language that does comparisons with a single "=") and then go back to C++ or Java then you get a lot of them. Not fun. You could always add a graphical front end to Tic-Tac-Toe (or do 3D tic-tac-toe) if you want to make things more interesting.
Linh how can you come in and just turn an assignment in so easily?...STATE-OF-THE-ART!!!
-- LinhPham - 3 June 2009
I slept in today... it was AMAZING! I got breakfast, was aight... then I walked to Howe hall with Taylor. When I got here, I did the assignment, then
started working on coding the tic tac toe program. I was pretty much done, all I had to do was the winning function, but then it was time to eat. At
the dining hall, they had Kiwi, OMG! Ima try to start my diet today, so I ate salad for lunch. I got back, finished my part of the code, and now Josh is
no where to be found...
-- LinhPham - 2 June 2009
Breakfast was AMAZING again today. When I got to the lab, I started working on the assignment. I did it all on my own, then realized that Eric gave us the actually files, and we just needed to alter them. I did it again real quick, then tried to work on compiling the ZCam code. It still wont compile, but I will keep working at it.
Task: The user wants to sell his van
What's wrong: The potential buyer cant reach the tabs to rip off with the all the information.
What would be better: The paper should be outside the van.
Brief analysis: This is not a very effective method to sell the van because the contact information is not easily accessible to the buyer.
Task: The user wants to wash his hands
What's wrong: The faucet is not far enough out. The sink top will get wet, and when the user wants to wash his hands, it might overflow the
sink top and get him wet.
What would be better: The faucet should be further out.
Brief analysis: This is not a very efficient faucet. It wastes water and spills all over the top. The user would have a tough time washing his hands.
If you're having trouble with the ZCam, the local experts are Andrew Koehring and Joe Holub (that might have been why he was at your station today though).
LOL!
-- LinhPham - 28 May 2009
Today we talked about 2 articles we were assigned to read beforehand. Both focused on Social Networking Services (SNS), such as Myspace and Facebook. One article focused on how SNS can affect student grades. The other article focused on how the relationships between students and faculty can be affected through Facebook. I personally found no interest in these articles.
lol... it seemed like it.
...I can edit your blogs?
--Mina
Please add the comment code to each blog entry (just copy and paste it) that way it's clearer when Mina comments in the future
-- LinhPham - 29 May 2009
Today the Affinity Research group came and we participated in a discussion about what research is, basically defining the subject. This lead to us discussing our own research projects, the tasks, and milestones. It also gave us the opportunity to meet with our mentor and get some background information on our project. I felt this was actually productive, but it should not have lasted so long.
I am finding it hard to stay awake through some of these presentations. I need to fix my sleeping schedule.
-- LinhPham - 01 June 2009
Today I woke up at 8, ate breakfast at Hawtorne Market... AMAZING! I ate while i was walking to work with Curtis. Got lost. Showed up to work late, but actually early since we didn't have to be there. Facebooked a little, then started working on my tic tac toe project. Went to lunch, ate an AMAZING sandwich. And now im blogging. AMAZING!
I knew Pam told the females they had to go to that one meeting, but did she forget to tell all the males they didn't have to be here until the programming course? Nice sarcasm throughout, btw. It amuses me.