Some old university projects

Below is a collection of older projects I did during my time at Linköping University.

Real-time cloth simulation

Simulated cloth folding over head represented as a level set

This project was a part of the course "Animation and Modelling". I choose to implement a cloth simulator using spring-mass system with euler integration. The cloth is made up of the masses connected with three different spring types to simulate the different forces that appears in real cloth (stretching, shearing and bending).

A special thing with my simulator is that it uses level sets to represent rigid bodies. This makes it easy to detect and handle collisions with the cloth with very complex geometry. Collision detection of arbitrary geometry can be very complex using the traditional polygon based approach. Sadly levelsets is not a very memory efficient way to store geometry.

The program was completly developed in C++ and Linux using GLOW user interface.

Real-time illumination using HDR images

Teapot

...is the rather long name on a project I did in the course "Image Based Rendering, Lighting and Modelling". Our project used lightprobes, captured with HDR techniques, to shade an object. We used C# and DirectX and shaders written in HLSL, to calculate the lighting from the environment at each point on the object.

We captured the lightprobes ourself in a 24 hour cycle from the roof of one of the student dorms using the different exposure techniques. The images was then assembled in HDR Shop.

In order to use the complete dynamic range found in HDR images we also implemented a "bloom" filter. This filter simulates the lens effect that produces a "halo" around very bright objects which smears out over less bright objects.

eXtreme Inner City Golf

The purpose of the course "Software Development" is to expose the students to working with software development in larger teams. This is tested practically with a simulated project with fictious customer, in this case students from the programme for "Culture Society and Media production". The development project was to develop a multiplayer game, pc-to-pc via a server, and with characther information stored at the server. There was also to be mobile phone client where the users could improve the skills of their charachter by playing on their phone and then upload information to the server via the phones internet connection.

I was project manager for the group that would develop the mobile client, and had responsibility to organize and drive the different phases. This included time estimations, team coordination. I was also involved in all the phases of devlopment.

The game was coded in Java Wireless and used socket for communication with the server.

Balls, balls, balls

This project was completed for the course "Simulation and Modelling" in 2003 together with four other students. Despite the obviously funny name, this was a serious project. This was my first real exposure to C++ and OpenGL, yet I'm rather pleased with the result.

We set out to make a real-time simulation of an "ocean-of-balls" similar to those one can find at McDonalds where children can play. The complexity grows as the number of balls increase. Therefore this project mostly came to deal with optimization of the code and datastructures.

With the faster PC:s of the time we could simulate around 500-600 balls in real-time (25 frames a second).

Even if this was a relatively simple problem, collisions between spheres aren't exactly complicated, I learned a lot about omptimization and code efficiensy.

Visits

Flash visualization

In the course "Information visualization" each project group was handed a dataset which was to be visualized with methods from the course. In our case the data was tourism statistics from about 40 italian cities near Florens.

We choose to code our project in Macromedia Flash, mostly based on it's graphic capabilities. We attemted to use a technique called "Focus and Context", which means that the user has the ability to scale some regions of the map while keeping a picture of the overall data.