Welcome

Welcome to my website. My name is Jonas Koperdraat and this is my portfolio website.

As is customary for portfolio sites, this one too is probably not up to date ;)

Posted in General | Leave a comment

Simulating the World

As part of the course Simulating the World one assignment was to create a virtual world using fractal subdivision, L-systems and particle systems. In this assignment I was responsible for creating the world using fractal subdivision to create interesting looking terrain.

I decided to write the program such that it could import a 3D object in VRML format (exported from Blender) and then subdivide the surface of that object. To be able to apply the subdivision algorithm I implemented a modified version of a winged-edge datastructure.

The fractal subdivision algorithm incrementally adds detail to a surface by subdividing its faces and perturbing the newly created vertices along their normals. The following image shows the process on a (initially) flat surface.

An animation of fractal subdivision of an initially flat surfaceThe following animation shows a world created using two cubes as starting objects, one for the land surface and one for the water surface. Fractal subdivision is applied a number of times.

An animation of fractal subdivision used in a project during the seminar Simulating the World.

I wrote this implementation in C++ and using OpenGL.

Posted in Portfolio | Tagged , , , | Leave a comment

Game Engine

Game Engine - Screenshot 1

As a final project of the course Game Engine Programming, together with Gwen Ferdinandus I designed and wrote a Game Engine. Ofcourse, there was not enough time to create a full-fledged Game Engine, but it is a beginning. As a theme we decided to take a new approach to the classic RTS Red Alert which we called Tesla Terror.

Game Engine - Screenshot 2

A few screenshots show an overview of a base being constructed and a tank that has just been created at a warfactory. I created the base structures and units in Blender and exported them to a format useable in the graphics engine.

Game Engine - UML diagram

The engine is written in C++ and is based on the Ogre3D graphics engine, irrKlang sound engine, CEGUI gui system and pugixml parser. A high-level UML diagram can be seen on the left (click for a larger view).

Game Engine - Tank xml descriptionA lot of effort was put into keeping the architecture well structured and keeping the various components as isolated as possible. By using scripting we where able to dynamically change the unit definitions, allowing (future) gameplay balancing to be done without the need to recompile. A sample unit definition file can be seen on the right.

The code is available on request as it is quite a large archive containing all the required libraries and the code.

Posted in General, Portfolio | Tagged , , , , , , , | Leave a comment

Multi Agent Systems – AppleWorld

During the course Multi Agent Systems I worked together with Vincent Kreuzen and Gwen Ferdinandus on a number of assignments using the Java Agent Development framework, JADE. These assignments where exercises on agent interaction in multi agent systems in which agents had to compete or cooperate with each other. The final excercise, brought together a number of these aspects when we implemented a world in which a agents had to compete and cooperate to survive in a world with limited resources; AppleWorld.

A screenshot of a running simulation (click for a larger image)

In this world apples are the resources providing agents with the energy needed to survive. The apples appear with a certain chance at a random place in the world. The agents can sense apples within a certain range and decide to go to the apple to pick it up. Every action (including doing nothing) costs the agent energy.  When an agents energy reaches zero, it dies. Eating an apple increases an agents energy.

To add another dimension to this simulation, agents also had the opportunity to trade apples amongst each other. We designed four kinds of agents, each employing a different strategy to survive and/or make as much money as possible.

During this excercise I implemented the world for the agents to interact with and created the interface with which to control the simulation. Everything is written in Java and requires the JADE framework to run. The source files are available for download.

Posted in Portfolio | Leave a comment

Scarabaeus curve

During the course 3-Dimensional Modeling, together with Bart van Greevenbroek I wrote an application that can:

  1. draw a Cardinal spline
  2. draw a Scarabaeus curve
  3. approximate the scarabaeus curve with a cardinal spline by sampling the scarabaeus curve with regular intervals in theta.

A screenshot of the application

Here you can find a full description of the assignment, an applet version of the application and the source code.

The application was written in Java.

Posted in Portfolio | Tagged , , | Leave a comment

Marble run

As part of the course 3D modeling I created this animation of a marble machine. The assignment was to create an animation using multiple animation techniques as opposed to just using keyframe animation. In this sequence I relied heavily on physics based animation.

 

 

The animation is made in Blender.

Posted in Portfolio | Tagged , , | Leave a comment

Contour reconstruction

A screenshot of the contour reconstruction application initialized with a set of points

During the course 3-Dimensional Modeling, together with Bart van Greevenbroek I wrote an application that attempts to reconstruct the contour of an object represented by a set of points. The application is an implementation of a two-dimensional version of the algorithm described by Biosonnat in his paper Geometric Structures for Three-Dimensional Shape Representation.

A screen shot of the coutour reconstruction application after the final iteration

Downloads:

This application was written in Java.


Posted in Portfolio | Tagged , | Leave a comment

3D Modeling

During the course 3-Dimensional Modeling I created a rendering of my electric guitar. The assignment was to create a model of an interesting real-world object in either Blender or Maya. I used Blender to create this scene.

A 3D model of my guitar and amplifier

We also had to include the text “gametechnology” in the scene and write a report about the modeling process.

Posted in Portfolio | Tagged , | Leave a comment

Dwergpop

A timelaps movie of the building of the Dwergpop festival in 2006

I was the terrain coordinator that year, responsible for designing the layout of the terrain and coordinating the building crew. Everybody working at Dwergpop was a volunteer.

Posted in General, Portfolio | Tagged | Leave a comment

Hello world!

This is the first post to this blog. Yes it is a modification of the original first post that comes with a fresh WordPress installation. I could have thrown it away and created a new post, together with a new title, but I think for a computer scientist the title ‘Hello world!’ is quite appropriate for a first post in a blog. So I kept it.

This website is not intended as a blog. I found that when applying for a job or thesis-project it is often required to have a portfolio of things I’ve done in the past. That is the main reason for setting up this website. I will be filling it with articles about previous projects showcasing my skills in various areas of computer science.

The dates mentioned with the articles do not represent the publish date of the post but they represent the point in time at which the item was made or occurred. Also, at some point in time I will see to it that the front-end of this site will get a facelift :).

Posted in General | Leave a comment