Graphics and Artificial Life
To get source code, email me. Click here
[ My Publication ] [ My Resume ] [ Other work ]

I am currently working with Prof. Demetri Terzopoulos in Graphics and Artificial Life (Alife), an emerging subject that cuts across several fields including computer science, biological science and behavioral science. Research in this field attempts to model living biological systems through complex algorithms. Our current interest is to model and simulate behaviors of human characters especially human pedestrians. In the following, I list some of the work I have done toward this goal.

Animating Autonomous Pedestrians: (VC++, OpenGL, DI-GUY, 2003~)
HyperTexture: (VC++, 2006)
  • I used the amazing Perlin Noise to generate all kinds of surface and volume texture and shapes.
  • Wanna see some pictures?
Realtime Motion Analysis and Synthesis: (VC++, Maya SDK, 2002~2004)
  • Given a motion clip, our system can automatically detect constraints and extract atomic motions.
  • After analysis, a library of motions can then be transformed into a composite network structure.
  • In the synthesis phase, heuristic search is used to find, in this network structure, motion sequences with certain properties.
  • After a set of constraint modification, the sequences are pieced together to create the target motion.
  • Animation demo -- The annoying bees
    Original data (5MB) Synthesized result (18MB)

Simulation Library (VC++, 2003~2004)
  • The library gives a convenient framework for visualizing simulations based on OpenGL.
  • A easy-to-use class of real time flat surface shadowing is included.
  • The library also provides useful classes for simulation of rigid body dynamics and character animation.
  • Animation demo (may require 3ivx codec):
    1. Dynamic shadows and a character playing skiprope (3ivx, 2MB)
    2. Interlocking diamond-shaped frames (plain-avi, 5MB)
    3. Objects hung on rubberbands (plain-avi, 24MB) (3ivx, 2MB)

Simulating Humans (VC++, OpenGL, 2001~2003)
Report Version 4.0 Version 5.0
  • In this application, you could see different kinds of people: male/female, young/old, tall/short, strong/slim, with high/low walking speed.
  • You could ask one or several of them to go to a place or go to several places in order. They will try their best to find a good route to attain the purpose and at the same time avoid all the obstacles and avoid bumping into each other.
  • A group of virtual humans will form a queue if all of them want to enter a house. They can also do leader following. And they can cross a busy street as cleverly as real humans do.
  • Wanna see some pictures?
  • Animation (require 3ivx codec): crossroad (6MB), countryside (11MB).
Simulation of Rigidbody Dynamics: A Maya Plugin, (VC++, Maya SDK, 2002)
  • A real time animation system for simulating rigidbody dynamics in Maya modeling environment.
  • For animations, Click here.
A General Joint Component Framework for Realistic Articulation in Human Characters (VC++, Maya SDK, 2002, Honda Research Institute USA, Inc)
  • This is a general joint component framework model that is capable of exhibiting complex behavior of joints in articulated figures. Highly-articulated complex joints such as the human spine and shoulder have been successfully modeled using our joint framework.
  • Cover page and paper at ACM Interactive 3D Graphics 2003 (with Victor Ng-Thow-Hing) -- A General Joint Component Framework for Realistic Articulation in Human Characters [ pdf ]
  • Paper at International Society of Biomechanics XIXth Congress (with Victor Ng-Thow-Hing) -- Modular Components for Detailed Kinematic Modelling of Joints [ pdf ]
  • U.S. patent No.10/425,122 filed on April 25, 2003 (co-author Victor Ng-Thow-Hing)

Artificial Fish: (VC++, OpenGL, 2002)
  • This is an upgraded version of the artificial fish made by Dr. Tu, Xianyuan in 1996.
  • Application has been manually ported to Windows from IRIS with the help of toogl and OpenGL Porting Guide from SGI.
  • Use rendering of polygons instead of nurbsurface to improve frame speed.
  • Multi-processor support speeds up the numerical computation of the physical simulation of fish swimming motion and thus makes the animation even faster.
  • Dynamic computation of smooth surface normals has been added for photo-realistic rendering even in detailed scale.
  • Caustic effects of water using multipass-rendering and dynamic texturing.
  • Shadows of fishes and seaweeds are casted on the seabed.
  • Interactive user interface with translucent directive help panel at hand.
  • Multi-camera view and on-fish camera view are implemented.
  • Stereoscopic version gives you a 3D virtual reality fish pond.
  • Wanna see some pictures or animation: [plain-avi ~18MB]; [3ivx ~1MB]?
Simulated Robo-soccer Team Eleven: (C++, 2001)
  • This project is about Distributed Artificial Intelligence and Autonomous Multiagent System. However, this is actually not about graphics, at least not currently.
  • Simulated robo-soccer game has been held every year since 1997. The team Eleven is what I did for a course instructed by Peter Stone and hopefully for the RoboCup Simulation Competition 2002.
  • The code of this project is based on the team ATTCMUnited written by Peter Stone et al.
  • My Eleven is actually a very good one -- it is the Champion of the final tournament of that class. For details, check my report or simply try gaming with it!
Muscled Facial Animation: (VC++, OpenGL, 2001)
  • This is a facial animation system based on muscle movement. A skull, a jaw, a full set of teeth, two eyes, facial skin and a bunch of muscles has been modelled and implemented in the current version.
  • Expression changing can be realized by providing an expression data file which gives the setting values of the muscles and the jaw.
  • Want to see some pictures? Click here.
Action Generator (VC++, OpenGL, 2001)
  • This is a smooth action generator, which uses traditional key frame animation technique. When supplied with a mesh data file, several key frames and a sequence configuration file, it could give you a smooth animation.
  • Want to see animations? Click here.
A Running Man (java, 2001)
  • This is an applet using pure java 2.0. I coded all the computation in rendering pipeline which is usually handled by hardwares. This is an upgrade of another project. And this version has much better visual effect. It is a pity that I did not find time to improve the control interface. But if you follow the directions on that page, you will find it not so bad. Enjoy!
  • For animation, click here ~0.5MB.