I recently finished my Master of Science degree in Media Technology and Engineering at Linköping University. On this page you will find a selection of my student projects.
My master thesis project done at Linköping University and as an industrial collaboration with Saab.
Abstract:
The aim of the thesis project was to solve the problem of fusing an arbitrary sequence of stereo measurements into a global 3D representation in real-time.
The proposed method involves an octree-based signed distance function for representing the 3D environment, where the geometric data is fused together using
a cumulative weighted update function, and finally rendered by incremental mesh extraction using the marching cubes algorithm. The result of the project
was a prototype system, integrated into a real-time stereo reconstruction system, which was evaluated by benchmark tests as well as qualitative comparisons
with an older method of overlapping meshes.
A small project made for the course SFX - Tricks of the Trade, TNCG13 (Autumn 2020). The purpose of the project was to create a scattering tool aimed to make the process of populating a scene with multiple objects less time consuming for 3D artists. The scatter point distribution is based on Poisson-disk sampling, and random rotation and scaling deviations. A Hierarchical Dart Throwing algorithm was used for a fast generation of Poisson-disk sample points, to make the tool more suitable for live applications. The result was a tool script implemented for the computer graphics software Autodesk Maya, using its python API together with the OpenMaya API.
This is my individual project for the course Artificial Intelligence for Interactive Media, TNM095 (Autum 2020). The aim for the project was to train a quadcopter drone to navigate through an obstacle course while performing a simple task using Reinforcement Learning. I investigated several available methods but ended up using an algorithm called Proximal Policy Optimization which is a deep reinforcement learning technique proposed by OpenAI researchers in 2017. The drone was a simplified 3D model in a game environment and is controlled by forces applied to a rigidbody. A simple PID-controller was used for controlling the altitude of the drone. The final result was implemented using the game engine Unity 3D and ML-Agents Toolkit.
A group project made for the course Information Visualisation, TNM048 (Spring 2020). For this project we got the opportunity to specialize in a specific field of information visualization. The aim was to visualize and understand the website Reddit by utilizing common text mining methods, hierarchical clustering and force-directed graph algorithms. The fundamental idea was to use the most frequent words as basis for measuring similarities and subjectively interpret the content of subreddits. Note that the colors and positioning of the subreddits are entirely generated based on hierarchical clustering and cosine similarities. The final result is developed with python (for text mining) and the JavaScript library D3.js. For more details, a technical report for the project can be found here.
This was an individual project made during the course Procedural Methods for Images, TNM084 (Autumn 2019). The project is an implementation of real-time procedurally generated ocean waves programmed with WebGL shaders. The water surface consist of a plane with 200x200 quads and is generated entirely by displacing the vertices and bumping the normals. The waves can be configured by tuning a set of parameters in the user interface. The 3D-environment is developed in javascript from scratch using WebGL and the GUI (HTML Page) is created with reactjs. The result can be viewed online on the link below. I recommend using Google Chrome instead of Firefox as the web browser when exploring the application.
A project for the course Advanced Global Illumination and Rendering, TNCG15 (Autumn 2019). This was an attempt of making a photorealistic global illumination renderer made from scratch in C++. Photorealistic means that the algorithms used are based on mathematical models derived from physically realistic assumptions, and given endless rendering time, a rendered image should be indistinguishable from the real counterpart (a photograph). The illumination model is based on path tracing with Monte Carlo integration and supports perfectly reflective/refractive surfaces aswell as Lambertian and Oren-Nayar diffuse surfaces. The example image is created with the renderer using the resolution of 1024x768.
This is the result of my Media Technology - Bachelor Project, TNM094 (Spring 2019). The project was developed by me and five other students and the aim was to produce a product based on specifications given by a customer. However, the intended learning outcome was to be able to integrate acquired knowledge from the studies; collaborate as a group and apply development methologies such as Agile software development and Scrum; be able to plan, research, implement and report a project from start to end; create, analyze and evaluate technical solutions. The final product was a social augmented reality game for android mobile platforms called Ant Warz. It is a team based game where the goal is to send ants to the opponents to destroy their sugar cube. We used augmented reality technology to create a physically shared playground to integrate a social aspect to it. The game was developed using the game engine Unity 3D.
This was one of the more ambitious projects made during the course Modeling Project, TNM085 (Spring 2019). The aim of the course was to apply the theory acquired from the course Modelling and Simulation, TNG022 (Autumn 2018), in a programming project. More specifically, the task was to create a graphical animation based on a mathematical model of a physical system. We chose to investigate the possibility of simulating a bouncing soft body by using a spring-mass-damper system. The final result is programmed in C++ with the open source graphic library OpenGL. A video of the result is available, note that each animation (bouncing ball) was computed with a different initial velocity before the real-time rendering.
This was a small project in the course Physics of Sound, TFYA65 (Autumn 2018). The specification for the project was that it should be connected to sound physics related to the contents of the course. Me and the group made a 2D game where the character is controlled only by the microphone input. The audio input stream is continuously transformed into the frequency domain by applying Fast Fourier Transforms. The strongest frequency of each iteration determines the direction of a velocity vector with the intensity as magnitude. The game is programmed in JavaScript with the open source framework Phaser and p5.js library.
The following project was a part of the course 3-D Computer Graphics, TNM061 (Spring 2018). Our goal for this project was to gain practical knowledge in computer graphics by working with a 3D environment. The result was a racing game where the task is to collect as many groceries as possible within a limited time frame. The player controlled shopping cart becomes slower for each item collected and at the end the player have to cross a busy road to secure the final score. The game was created with the game engine Unity 3D which is mostly coded with C#.
This was one of the earliest student projects that was a part of the course Communication and User Interfaces, TNM040 (Autumn 2017). The task was to design and implement a functional and user friendly graphical user interface for a target audience. The result was a facebook parody game targeted for teenagers and young adults. The game was built with the JavaScript library React js and is available online.
Copyright © Per Blåwiik 2020 - Template Inspired by Inovatik