Tuesday, May 4, 2010

Pandas' two biggest wishes

Well, the first animation done by me! 80 hours of modeling, texturing, rigging and animating.



The story comes from a joke. Two pandas are sharing their wishes, one wishes to remove his black patches and the other wishes to have a nice color picture of himself.

I modified a bit to make it more suitable for the animation scene. I named the two pandas with "Bruce" and "Mulan". These two names are coined obviously from two well-know Chinese people -- "Bruce Lee" and "Hua Mulan". I guess this could be cool.

It's really funny to see "Bruce" without his black patches. Many people likes panda because of their "big" eyes. Actually panda's eye is not large, it's only because of their black pattern around the eye. I guess everybody who sees the panda without black patches can't help to laugh.

After the unbelievable painting performance by Mulan, Bruce wants to make a revenge. He took out the special camera and distorted Mulan's skin color. Mulan then transforms into a "cow".

I didn't do the voicing, maybe later I will add it.

Thursday, April 29, 2010

A puzzle game by j2me

Nearly no updates for nearly a semester! I have been rushing up all the assignments and projects for this semester and finally I have got something to present.

This is a puzzle game called "Linez", it's actually a clone of a popular traditional game: winlinez. The game rule is simple, just align at least five same pattern tokens in a line, either horizontally, vertically or diagonally to remove them. At the mean while, more tokens will randomly pop up on the board. So, please be hurry up to get more scores before the board is full!

This is the very old version of winlinez. I guess most of you have seen it.


Well, there are more features in my game. Unlike the traditional winlinez, my version has three difficulty levels. The difference is that for advanced levels, the token poping up number will increase if the player takes too long time to think a move!

Other wonderful features like a universal token which can replace any color; a bomb piece which can not only destroy a line but also all other same color tokens on the board.

This is my first game...really learned a lot of things, from writing UI, designing the tokens and logos, algorithms like path findings and token removing conditions, BGMs, fancy animation effects...etc.

I guess this game is not well optimized, I have tested it on my NOKIA phone, a bit slow and it's not supporting touch screen... I am considering reimplant it on iphone if I have time in future.

Please feel free to download the JAR file and test it.













Wednesday, February 17, 2010

Happy CNY to all the guests who are reading my blog.

Long time not updating my blog. Quite busy these time. At least I got some achievements last year. All my subjects got the highest marks. and I am quite proud of one of my projects finished last year.
It's an automatic scene categorizer which can automatically returns the scene type for the input images. The image dateset used in from the MIT indoor scene dataset: http://web.mit.edu/torralba/www/indoor.html. It contains 15620 indoor scene images and was divided into 5 main categories: shop, home, leisure, public spaces and working places. Those five categories were subdivided into 67 categories, for example for shop: bakery, grocery store, clothing store, deli, laundromat, jewllery shop, bookstore, video store, florist, shoe shop, mall and toystore.
I used matlab to generate the code. Local color moment was used to extract the infomation of the input image. A supporting vector machine is used to generate the model. I trained five models and for each input image I tested with all models and voted for majority. The result is not bad. For the best performer Casino, I achieved 73.6% accuarcy.
Steps for training part:
  1. Step 1: Image filtering and size normalization(for all training images) :
    • 60% of the whole image set were used to setup the training model;
    • Some of the images are grayscale and thus filtered;
    • All the filtered training images are normalized therefore either height or width is less than 300 pixel.
  2. Step 2: Local color moment feature extraction:
    • each traing image was segemented into 4x4 blocks.
    • for each block and each component (H, S, V), Local color moment feature was extracted in HSV color space. Average moment, variance and skewness were calculated.
    • concatenate 9 features in each block for 16 blocks to form feature vector, therefore 144 features for each image vector.
  3. Step 3: General class classification (5 classes):
    • Five main classes (store, home, leisure, public spaces and working place) were used for first level classification.
    • SVM was used to generate the main class model.
  4. Step 4: Sub‐class classification (5 independent groups):
    • For images belong to each main class, a sub class classification was done to further classify sub-class within each main class.
    • SVM was used to generate the sub-class models for each main class.

Steps for testing part:

  1. Step 1: Image filtering and size normalization(for all testing images):
    • The rest of 40% of the whole image set were used for testing.
    • Some of the images are grayscale and thus filtered.
    • All the filtered training images are normalized therefore either height or width is less than 300 pixel.
  2. Step 2: Local color moment feature extraction:
    • Each testing image was segmented into 4x4 blocks.
    • For each block and each component (H, S, V), Local color moment feature was extracted in HSV color space. Average moment, variance and skewness were calculated.
    • Concatenate 9 features in each block for 16 blocks to form feature vector, therefore 144 features for each image vector.
  3. Step 3: Decision level 0 (5 general classes):
    • First level decision for the five main classes.
    • SVM was used to test by using the training main_category_model ;
  4. Step 4: Decision level 1/2/3/4/5 (under the corresponding general class, do the sub‐class classification):
    • For images belong to each main class, a sub class classification test was done to further classify sub-class within each main class.
    • SVM was used to test by using sub-class models.