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.



Monday, November 16, 2009

an enhanced mesh viewer

Quite busy recently and nearly no time to update the blog.


Rushing for two new assignments. One is the enhanced version of mesh viewer which has replaced OpenGL lighting code based on the empirical illumination equation. It's also replaced OpenGL texture coordinate generation with three different mapping methods: plane mapping, sphere mapping and cylindrical mapping.

The five images are 'texture used', 'no texture', 'plane mapping', 'cylindrical mapping' and 'sphere mapping'.




For detailed C++ code, please download here.

Wednesday, October 21, 2009

no title

Maybe I should write down something, or not.
I only know my ex-girlfriend got married this month.
I happen to see the wedding photos today.

I don't feel comfortable, but I still collected all the photos, well, those without the guy.

It's not a piece of memory to me, they're a lot of pieces.

I wish all the happiness to her, from the bottom of my heart, truely, faithfully.

Wednesday, October 14, 2009

endless learning

As marching to my dream career of technical artist, mastering of commercial software is a must. Since Maya is a excellent software of doing animation, 3D modeling and visual effects, I started self learning this software.


I used "Learning Autodesk Maya 2009: Fundation" for self study. Too sad I have to start from the fundation. This book contains five projects and each project contain several lessons. I schedule to complete one lesson every three days. Too bad I don't have enough time, I need to attend lectures for my master study at the nights and work during the daytime.

I began to self study Maya at the middle of September this year and I never know when I could finish this book, the thing even worse is this is only the fundation and there're still plenty of books like: animation, modeling and special effects...Okay, still, I have to start from the "fundation".
This is the first scene I completed, took me almost ten days. Well, I follow the book completely. It is project 1 in the book. It's a amazing software and it's so complicated.

At the first time when I looked at the content of advanced computer graphic subject I took this semester, I felt it was too theoretical, It was flooded by all the mathematical theories used in computer graphics. It covers little OpenGL and of course nothing related to commercial software, as the lecturer said, "this is a master level course and you have to self study the rest...". However I felt better when I discover that the node names (Phong, Blinn, Lambert etc) of Maya node used are the same as the different illumination model names. Okay, based on mathematic formula the specular reflection on each illumination model surface is different. here are beautiful formula:




Maybe someday I can write my own models :).





A simple mesh viewer..



Well, this is a project assignment for one of the subjects for my master course -- advance computer graphics. It's a mesh viewer, it simply displays a model with several options like camera control, transformation, grid and boundary box, and rendering scheme etc. It was written in OpenGL, Glui and Glut was used here as the interface.
I am not a good programmer, or frankly speaking, I am not a programmer at all. I only studied C programming in my first year of uni, eh that was 6 years ago. However, after 15 hours fighting, I figured out this product. I began to feel good. This is my first real program.
I spent three hours on a stupid error: I added a return-type before a function name when I called this function inside main. The compiler didn't indicate either an error or warning. This was a strong memory since I would never commit it for lifetime.
I started doing this project on 9th, Sept and completed on 21st, Sept.