• Home
  • Bio
  • Research
  • Blog
  • Photos

 

BLOG


Week 1 (5/24 - 5/28):

So far this experience has exceeeded my expectations in every way. Philadelphia is great; the architecture blows me away. Today I saw a 7Eleven with Victorian style arches. The lab that I will be working in all summer is quite impressive, and the people are really nice. In this research project we will be streaming real-time motion capture data to animate 3d models of our own creation. Therefore, the tasks of the week have been focuesd mostly on training over the motion capture system and MAYA.  In this first week I have learned how to use the motion capture system. I was able to put the suit on, perform an embarrassing rendition of Beyonce's All My Single Ladies, and clean the data. Through a number of tutorials, I have learned how to create both NURBS and polygonal models, paint, texture, and render 3d models in MAYA. I also have been introduced to  scripting and learned both basic MEL and Python for scripting in MAYA. In addition I have read several assigned papers covering free form deformation and retargetting motion each containing  a daunting quantity of mathematical equations far enough above my head that they may easily look down on me and mock the insufficencies of my simple brain. As a lab we are holding movie nights on Tuesdays during which we  watch a movie that  contains some form of interesting animation or CG effect.  However, movie picking privileges are already being revoked as this week's movie  was unanimously voted a flop. If you are ever offered a screening of the film Delgo, an appropriate response might be that you would rather clean the rotted, liquified potatoes out of your pantry, which I can personally testify to as being an accurate comparison seeing as how I also happened to have completed just such a chore this week. Subletting can be awesome. Overall, I have learned a great deal this week and if the rate of information being imparted to me remains constant, expect to come away from this program as a much more intelligent and sophisticated person.

 

Week 2 (5/31 - 6/4):

We got Monday off this week for Memorial Day, and I highly enjoyed my three day weekend. I played a 40 minute game of laser tag with my roommate and some of his friends, explored the city, and went for a picnic with some of the undergrads in the lab. As far as work goes this week, Kelsey and I each modeled a nonhumanoid character which we have begun to attempt to animate using the human motion capture data. Our first task is to attempt to sync a series of deformers with portions of our model to deform them in an appropriate imitation of the human motion. By studying the first couple of chapters of a textbook borrowed from Aline, we learned the underlying structure of Maya. The core of Maya is called the Dependency Graph which is comprised of nodes. Basically, everything in Maya is a node, and each node contains a compute function that uses the input attributes of the node to calculate the output attributes of the node. Tasks in Maya are achieved via a network of nodes. We learned about writing plugins for Maya in a combination of MEL and C++. So now we have begun to alter some code that Aline provided in order to create our own node with which to animate our characters. However, computer science will be computer science and frustration is at some point inevitable. I spent two and a half hours today trying to write some MEL variable content to a file. Strings were fine, but try to output a number, and all I could get were wingdings. Oh well, live and learn. Hopefully, by next week we will have some, at least roughly, animated characters. Also I had my first real culture shock the other day... no Blue Bell ice cream... in fact, Kelsey has never even heard of it! What? Shame!!!!!

 

Week 3 (6/7-6/11):

I will admit that this has been a more frustrating week. Progress has been slow; a misfortune fueled by a general lack of knowing what the heck is going on. At the beginning of this week, I had only a basic understanding of the internal node structure of Maya. However, even at the end of this week I am still struggling with figuring out exactly which transform node controls which coordinate attributes of which object shapes etc… I hope that sounds as confusing to everyone else as it has been to me. I have been completely stripped of my usual crutches of compiler and debugger. MEL is an interpretive language, so I have no idea if the commands I am writing have errors in them until mid-execution and then receive cryptic error messages.  Also I would kill for a debugger in Maya that would tell me exactly what Maya is doing step by subtle step. Basically, we are having a problem with coordinate system conversion. I finally found MEL commands to alter, specifically, the world coordinates of the Lattice points. However, I need to alter these coordinates using external data stored in C++ variables which don’t get along with MEL commands hence the need for the plugin, but I  cannot seem to find a node attribute to connect to the node we are creating in our plugin to feed the data through. Anyway on a more positive note as I am sure that none of that description means much to anyone else, I did finish the squash deformer which I think really gives some basic life to the character. I will post some video of the character with the squash deformer under the research tab.  
In spite of all the troubles, I still find that I have learned an immense amount this week ranging from math lessons to life lessons. First a life lesson: God punishes workaholics and overachievers. I was headed back to the lab Monday night after having left for a dinner and sanity break because I was feeling unaccomplished. The doors to the building I work in are those big overly heavy doors that imply that whoever designed them felt that only Olympians deserve admittance to the building. Absorbed in my own troubles, I managed to run straight over my foot with that bloody door and ripped half of my big toenail off. So there I was alone, bleeding profusely all over the place ten blocks from where I live without a clue what to do. I did have a phone however and therefore did the only sensible thing to do in such a situation… I called my mommy. She talked some courage into me as I walked the ten blocks back to my apartment with a large chunk of my toenail sticking awkwardly in the air, trailing blood, and wondering how I manage these things. I am fine now other than a mild grudge against and fear of a door (of all things) that had me pretty much refusing to use said door unless some chivalrous fellow obliged to open it for me. However, I have learned something else: there is a handicap button positioned a safe three feet from the door that opens it for me, so I can stand clear and then walk calmly into the building without any anxiety. As for the math lesson, I finally understand eular angles though I will refrain from proving it here. I will annotate only the one statement that made a light bulb click in my head just in case anyone reading this needs that exact same puzzle piece. Rotations can be thought of (and in graphics usually are) as a change in coordinate system hence the applicability of linear algebra… there that was not so bad was it… thank you Aline!
In spite of all, the week ended beautifully as Kelsey and I attended the Pennsylvania ballet’s production of John Cranko’s Romeo and Juliet. It was absolutely beautiful!

P.S. To whom it might amuse: The movie this week was Labrynth. Love me some David Bowie!

 

 

Week 4 (6/14 - 6/18):


Being so new to a program so vast and complicated as Maya has kept progress slow. One short lived success of the week was finally finding out how to retrieve data from other Maya nodes and store it in c++ variables. I have been searching for a way to do this for awhile now, but it turns out to be much too slow of a technique for use ubiquitously in a real time system since Maya has to traverse a series of nodes to locate data whereas c++ utilizes pointers. At the end of this week I have a small army of versions of lattice deformer nodes none of which work properly. I have attempted to animate the lattice several different ways each resulting in unique problems. Identifying the problem has proven to be a quite difficult task. I am currently attempting to move the specified lattice points by the difference between the global z positions of each foot and hip joint of the character model. After a lot of careful observation of the performance of the model with the code I wrote, I have reached a hypothesis that the locator nodes that I am using to calculate these global coordinates have a fixed axis and cannot rotate. Since the model is rotating, differences in the static z coordinate system suddenly change from moving the characters foot forward and backwards to side to side and eventually switch feet from left to right and vice versa. So my next plan of action was to manually rotate the displacements about the y axis. Unfortunately this too failed and after some more testing and observation it seems that the pivot points that I am using for this rotation do not match the root rotation of the motion captured model. I do not have a clue how to fix that problem so it looks like I will be starting over again. I do have another life lesson this week. I tend to get very angry at myself for the mistakes that I make and I do make an unnatural amount of them it seems… But this week I was reminded that mistakes are a much needed learning process and sometimes truly a blessing in disguise. I accidentally programmed a copy paste error into my code so that instead of subtracting the previous motion of the left foot from the current left foot, I was subtracting the previous right foot data from the current left foot, and suddenly my program was much more successful then it had been. I was led to an error in my logic that almost set my course perfectly straight other than the “slight” rotation problem. See moving the lattice point by the difference between the feet actually registered nice big motions whereas the difference between the current and previous for the same foot did not since the global coordinates are monotonically increasing by rather small values on a per frame basis… duh!
Aside from work things have been nice. I am getting into fierce shape by doing the Insanity work out videos with Kelsey…if only we could kick our ice cream habit. We have decided that when we reach a major break through and truly succeed with our work we will treat ourselves to ice cream cake. It is a good thing we did not reached this goal this week because we went to the grocery store the other day and ALL of the ice cream, ice cream cakes included were gone! I mean really that is quite curious! I feel like there was a story there that I would really like to hear. Is there an ice cream monster, did the freezer break, or does someone really walk in and say I would like to buy all of your ice cream… now. Saturday I was reminded why I do not enjoy expensive fancy dinners. Kelsey had a friend in town and we decided to treat ourselves to a nice dinner and went out for Italian food. First I wore white and ordered spaghetti. Then I remember that I am a terrible failure at eating pasta in anything resembling an elegant, publicly acceptable manner, and on top of it all I end up spending 20 dollars on a plate of food that I can actually eat in one sitting…. I mean is this America or what? But all ranting aside the meal really was good, and I am still highly enjoying my time here. Going to see Toy Story 3 was a must, and I give it two big thumbs up! It was wonderful and even made me tear up a little. Sunday we went to see Avenue Q, and I actually started to feel a little self conscious about how loudly I was laughing the whole time. Those of you who know me and know anything about avenue Q understand my predicament. The show was fabulously entertaining!

 

Week 5  (6/21 – 6/25) :


I must start with the most exciting news this week. On Wednesday June 23, 2010 my sister Krista got engaged to her high school sweetheart Garrett!!!!! Congratulations!
This week was actually full of excitement and progress.  First we discovered the constraint options in Maya and established that parent constraint does not move an object from its starting location to the location of the parent which is as it turns out a very important distinction. We also discovered that orientation constraint actually gives the locator a rotation value and allows it to rotate with the node. This information alone was enough to get Kelsey’s clusters working. Then Kelsey fixed my lattice by using spheres to track the joints instead of locators and also using a group to add a new transform node to track the root orientation. After some investigation and a few accidental discoveries, I realized that the locator has a world position which is apparently not the value that I wanted but is the value I was using and also a translate value which matches the sphere’s translate value. I know its madness! Anyway to make a long story short, we got that ice cream cake Thursday night though I am still of the opinion that Kelsey earned it much more than I did. It was delicious though, sweet sweet victory! Also we excuse ourselves for finishing an entire ice cream cake in 2 days with the fact that we start the max intensity videos for the Insanity work out program that we have been doing for the past month on Monday. Wish us luck; we will need it. On Friday we got to move on to setting up the networking to stream the packets from the mocap system to our Maya pluggin. I almost fixed all of the linking problems with this code myself which made feel a bit more useful. There is still a lot to do in this particular area, but the new challenges are an invigorating breath of fresh air after being buried so deep in Maya’s underworld for so long. Hopefully next week we will see some real time action. On Friday we went to see Dream Girls and it absolutely blew my mind. It was incredible! I feel that the word incredible is an unworthy failure of my vocabulary, but it turns out that Microsoft Word gives some pretty lame synonyms for the word incredible so it will have to do. On Saturday Aline and her husband took us to lunch and showed us a lot of Philly that we had not already seen. It was really cool to hang out with her more. On Sunday Kelsey’s mom took us shopping which was really fun. I bought the prettiest dress, but now I have to find somewhere to wear it. Also I am completely addicted to avatar the last air bender and have successfully recruited two other junkies, my roommate Olu and Kelsey. We are anxiously awaiting the arrival of the movie and in the meantime spend way too much of our free time watching the tv show.

 

Week 6 (6/28-7/2):

This week we were given the client code to stream the motion capture marker data, but I had to rework it a little bit to get what we wanted. Mostly the wrapper class that we were using did not have very many functions defined in it, and I had to implement several myself from other existing code and in general take a little time to familiarize myself with the code. I then had to tackle some of the same old demons to get the lattice working again with the streaming motion. Using the streaming data we have only marker positions so a lot of the work from the past couple of weeks had to be redone because they used joint rotations and other segment data that our system is not capable of streaming… I tried. The real name of the game this week was orientation. Since we are no longer receiving root rotations and translations, we now have to calculate them by hand. After a refresher course in calculating surface normals and transformation matrices from Aline, I was able to make the character follow the orientation of the hips. I actually got all of my cross products correct the first time too, a proud moment for me no doubt, but overall not my most successful or exciting week at work.  My family came in for the Fourth of July weekend. It was really great to see them, and we had an amazing time! We walked for miles and miles, but it was very nice to get plenty of exercise while having an amazing time. We hit up all of the tourist attractions which we secretly love. We saw the Liberty Bell (which was quite a bit smaller than all of those wide angle brochure photos make it look), got the best history lesson I have ever had, ate all the ice cream we could for five dollars for lunch, and contemplated the fate of Washington’s horse at Valley Forge. We also saw the Goo Goo Dolls live, for free! My sister and I managed to shove pretty close to the front of the pack and ended up about 3 rows of people from the front of the gate!  The fireworks were pretty snazzy too.  We did the ultimate philly cheesesteak taste off. We had Pat’s, Geno’s, and Jim’s and surprisingly unanimously picked Jim’s as our favorite. I didn’t realize just how much I missed my family until I had such a great time with them…

 

Week 7 (7/5 - 7/9):

This week I modeled a new character, Gumby. I really enjoyed experimenting more with modeling. For the first time in a while I found myself so engrossed in my work that I completely forgot about eating dinner (an impressive feat no doubt). After more of my favorite past time: trial and error, I realized that given a more articulated character with thin limbs makes all of the unhandled mistakes more pronounced and everything harder in general. The lattice was especially useless on Gumby. It was impossible to place a lattice over his body that separated his limbs. Applying a lattice to each limb is not currently a viable option because it causes the limbs to move rather disjointly from the body. One option that I have considered though have yet to have time to attempt to implement is trying to apply a lattice per limb but applying an offset to each row of points to create a smooth interpolation of the movement of the end effector across the entire limb. I spent the rest of my time at work this week attempting to use clusters to achieve a plausible motion. As something else new to me, painting cluster weights took a good deal of time. The question now is should I just rig the character?
This weekend I went home with Kelsey to New Jersey. I thought that I had solved most of my orientation problems last week at work, but I guess that overestimating my abilities by basking in my successes is often the source of my failure. We went to six flags, but on the way we got incredibly lost. My pride will not even allow me to admit how far out of the way we went, but the preferred quote of the weekend was “does that sign say welcome to New Jersey?”  Once we got there though, the rain had ceased, it was overcast, and there were no lines at all. We rode one ride five times in a row without even getting off! Also I got Kelsey to ride Kingda Ka twice. Taking off at 128 mph, rocketing 450 feet into the air and spiraling back down in 15 seconds: my idea of a good time! On Sunday we went to the beach. It was such a beautiful day, and we only got minimally sun-burnt. The waves were huge and honestly a bit scary for me. It was Kelsey’s turn to be the brave encouraging soul. She taught me how to dive under the big waves so that I would stop getting tumbled all the way back to the shore. I have become evermore grateful for and aware of the underappreciated fact that big waves are nicely frothy and opaquely white seeing as how I nearly completely lost my swimsuit to one of them… that would have been embarrassing. Overall another great weekend!

 

Week 8 (7/12 - 7/16):

We decided that joints and inverse kinematics are a better approach to driving the animation of our characters given the human motion capture marker position data. Nothing is ever as simple as it sounds though, and we had several problems getting the IK to work properly. Mostly weighting the mesh vertices to the joints took some practice, and finding a way to globally translate the character with the joints and IK handles applied was tricky. We had a big problem with the global translation being applied twice to the weighted vertices since the skin is attached to the joints but not all of the character’s vertices are attached to joints so moving both the joints and the character meant that the vertices attached to the joints were translated twice. I found a way to solve this problem by creating a root joint and attaching the entire mesh to that joint, leaving the spline curves for the IK out of this group, and parenting all of the other joints to this group. I was able to then translate the root and move everything globally without deforming the character.
This week inspiration hit me: a way to pull all of our new knowledge together and produce something worthwhile… However, this plan is a bit ambitious and most likely impossible to complete in our remaining time here. I drew up a schematic including node and command design for a system in which a user would be able to model a character mesh and then designate the vertices of that mesh that should be associated with appropriate human limbs. Ideally the user would with a few button clicks be able to have a nonhumanoid character interactively rigged and skinned and being animated in real time via the motion capture system. I would also like for the system to appropriately move the character based off of the character’s initial pose. For example, a character with a really wide stance would not have his feet pulled inwards and a stooped character would not be forced to walk standing upright. Ideally a character with extra limbs such as a dog or spider would also be able to move naturally. I am happy to have a quiet weekend to rest and more importantly make some important headway on this system. We will see how much we can get done in the next week…

Week 9 (7/19 - 7/23):
            Well many things are nearing an end but the one thing that I can count on to be consistent is having an orientation problem… apparently. Our newest orientation problem is quite a doozy too. While body rotation in all three directions worked with the pre-recorded motions, it came to our attention at the end of this week that in real time we actually have quite a daunting problem with rotation order. In the prerecorded motions the body did not rotate all the way around 180 degrees. Kelsey put on the motion capture suit and upon turning around backwards, the characters started doing flips. I freely admit that Maya has me completely stumped on this one, and after four separate attempts at a solution and meeting failure at the end of each of those roads, I not only do not know how to fix the problem but am actually more confused than I have been since the start of this project. The beginning of our week was not much better. Figuring out how to use the spline ik proved a rather more difficult and arduous task than we anticipated. Thankfully the relative option the clusters apparently has a magical ability to apply ignore one level of the transform hierarchy which, take my word for it, is a very useful thing. I also spent a good deal of time working on the code for the system that I described in last weeks blog. I currently have outlined all six of the classes I originally described as well as completed two of the four commands and can get as far as applying the joints to the mesh. However, I am now uncertain that I will be able to finish this system before I have to leave. In good news though we fly out tomorrow to attend Siggraph in L.A. and I could not be more excited!!!!!!!!!!

Week 10 (7/25 - 7/29):
            SIGGRAPH!!!!!!!!!
This week we got to travel to Los Angeles to attend Siggraph. We had an amazing time! We attended talks over all of the latest movies including How to Train Your Dragon, just about every aspect of the making of Avatar, and the not yet released Tangled as well as Pixar’s short Day & Night. We listened to plenty of technical talks that I am happy to say did not soar as far over my head as they would have at the beginning of the summer. My favorite part was the course over Hair rendering which I though was very thorough and educational. We also got a great introduction to all of the latest software and hardware and the most cutting edge technologies on the market. We were able to make new friends and contacts. We learned so much and had a lot of fun too. I had sushi for the first time and probably ate my body weight in food in general. One night we went to Santa Monica with some guys from DreamWorks and played spoons on the beach. Overall one of the best educational experiences I have ever had. Siggraph comes highly recommended. I loved it!!!!

 

Week 11 (8/1 - 8/6):


            This is my last week in Philly, a bitter sweet occurrence, full of stress and triumph, joy and sadness. This week there were a lot of loose ends to tie up. After all, the project had to not only get finished but well documented. I modeled a new character to serve as the epitome of our project. I modeled a spider so I could map the motion of my own right and left leg to every other leg on the spider demonstrating our ability to animate a character with a very different topology. However, we were not able to achieve complex mappings of the motions and the differences between the actual style of human motion and completely noon-human creatures became apparent very quickly. Problems with this very basic mapping from human legs to spider legs are most noticeable when turning around. A spider has a more limited range of twisting motion so in order to turn around the spider would have to push off its legs and pedal in a circle using a lot of foot movement. When I turn around in basically one step, the result is the spider gliding across the floor as he turns. I also had many difficulties rigging the spider. I found that I needed to use a regular inverse kinematic handle which came with its own unique set of challenges to sort out. However, I felt the culmination of my acquired Maya knowledge and quite accomplished in my ability to complete this task, nuances included, in two days. Wednesday was a really fun day though. We got to see the results of all of our hard work. Kelsey and I took turns wearing the motion capture suit and taking videos controlling the characters we modeled with our own motions. I made the spider walk with all eight legs, Gumby dance, and Cousin It walk around all using my own body. That night Kelsey, Olu, and I learned how to juggle which was very exciting and fun. I really do love learning new things! On Thursday all of the undergrads had to give a presentation over the work accomplished over the summer. There were about seven presentations which were judged by the faculty, and the winners were awarded a generous gift certificate to Amazon. Kelsey and I won!!! This was very exciting after all of the hard work we exerted this summer towards producing a working project utilizing vast tools that we had never seen before. Considering the shear amount of material we had to learn to accomplish what we did, I am actually concerned that my ego might be growing a little but it is nice to feel intelligent every now and then.  Unfortunately, we had to leave the project a bit unfinished; there are so many other things I would like to try, but we were ultimately very pleased with the outcome of our project. Friday I had to write a final report, comment a lot of code, and organize a bunch of files before leaving Penn and Philadelphia, the land of the TasteyKakes.  I will definitely miss my dual monitors, the lab, and the research but mostly I will miss tv nights with Olu and Kelsey. I am looking forward to vacationing with my family, eating a big bowl of Blue Bell ice cream and going to Whataburger, but I will miss Philly very much and hope to get to come back sometime!

 

Copyright © Website name all rights reserved. | Terms of use