I am a computer scientist developing algorithms for 3D geometry processing. My main research area is the generation of high-quality maps between discrete surfaces (with a particular focus on their topological aspects) using numerical and combinatorial optimization methods. Other interests are reconstruction and approximation using spline or subdivision surfaces, automatic shape matching, and real-time rendering and simulation.
I received my PhD from RWTH Aachen University at the Visual Computing Institute, advised by Professor Leif Kobbelt. I now work at Autodesk.
This page showcases some of my professional and personal projects.
TinyAD is a C++ library for automatic differentiation, targeting optimization problems where the objective can be split into a sum of small per-element terms (as is common in FEM and many geometry processing applications). It computes per-element derivatives using forward-mode differentiation and automatically assembles gradients and sparse Hessians.
This work won the best paper award at SGP 2022.PDF Video Code Project Page
Surface Map Homology Inference
We propose a new method to infer topological descriptions from (potentially low-quality) input maps. We robustly extract a purely combinatorial encoding of the given map topology, represented by a homology map (which maps classes of cycles between surfaces). Inferred homology maps may then be used to guide compatible surface decompositions for the construction of high-quality surface homeomorphisms.
This work won the best paper award at SGP 2021.PDF Video Code Project Page
Layout Embedding via Combinatorial Optimization
We present a reliable algorithm to compute embeddings from a given layout template into a target surface with prescribed layout vertex positions. Unlike previous greedy approaches, our method employs a systematic branch-and-bound search to find an optimal sequence of edge insertions that produces a short and natural embedding. Applications include chart-based parametrization, re-meshing, and the initialization of surface maps.
This work received honorable mentions for the Günter Enderle Best Paper Award at Eurographics 2021.PDF Video Code Project Page
Inter-Surface Maps via Constant-Curvature Metrics
This work introduces a novel representation for continuous maps (homeomorphisms) between discrete surfaces: While vertex images are specified explicitly, the images of edges and faces are fully defined by geodesics within a constant-curvature metric on the target surface. This encoding facilitates continuous (e.g. distortion-minimizing) map optimization for surfaces of arbitrary topology.Project Page
Distortion-Minimizing Injective Maps Between Surfaces
Traditional parametrization methods find low-distortion maps between a surface and the plane. In this work, we represent maps between two surfaces (of disk topology) by computing their overlay in a planar intermediate domain. Instead of only computing two individual parametrizations, we jointly optimize for the end-to-end intrinsic distortion of the composed map in an injectivity-preserving way.Project Page
Geometry Lab Exhibits
For the Geometry Lab art exhibition, we created a series of small exhibits that demonstrate different optical phenomena related to reflections and projections, e.g. a cylindrical mirror anamorphosis of a 3D object (inspired by the work of Jonty Hurwitz). Together with a colleague, I wrote programs to compute the distorted shapes which were then manufactured using 3D printing.
Vanishing Points Demo
An interactive demo teaching classical one-point, two-point, or three-point perspective constructions, created for the Geometry Lab art exhibition. Users can place vanishing points on the image plane or at infinity and observe how the perspective on a 3D scene changes in real-time.
Spline Surface Fitting
For my Master thesis, I developed methods for the approximation of 3D meshes using polynomial tensor-product patches. For a given polygon mesh with an embedded quad layout, we construct a spline surface with global G1 continuity (generalizing biquadratic uniform B-splines). The control points of this model are then optimized for a smooth and accurate reconstruction.
We developed an extension of this spline model to allow non-uniform (G1) joints also across regular patch boundaries, which improves approximation quality for control grids with uneven spacing.PDF
During my work as a student assistant at Visual Computing Institute, I developed algorithms to generate models of 3D buildings from OpenStreetMaps data. The system handles complex buildings with different levels and arbitrary footprints and incorporates metadata (where available) like height, roof shapes, or facade and roof materials.Project Page
VR Roller Coaster
Excited to try out one of the new Oculus Rift dev kits, a friend and I developed this roller coaster simulator using a custom C++ engine and OpenGL renderer.
It comes with an editor where users can create custom tracks, which are represented by B-spline curves. The realistic motion of the roller coasters is simulated in real-time.Video Project Page
GPU-Based 3D Fluid Simulation
An interactive fluid simulation implemented as a university project for a game programming course together with a fellow student. It is a real-time GPU implementation of the grid-based Stable Fluids approximation of the Navier-Stokes equations.
Special features are solid-fluid interactions based on GPU rasterization, and rendering with self-shadowing using volume ray casting.
Real-Time Rendering of Procedural Facades
For my B.Sc. thesis, I worked on a rendering technique that assembles building facade textures based on procedural grammars which are evaluated on-the-fly in a GLSL fragment shader. I extended this system to also allow the dynamic instantiation of detailed 3D objects on the facade, which is implemented entirely on the GPU side.
Together with my thesis advisor, we later published a paper on this technique, which was presented at Eurographics 2013.Project Page
Space Arcade Game
An arcade-style racing game developed by our institute's game programming club (roughly 10 members) in a custom-written C++ game engine. We presented the finished game at our university booth at the Gamescom trade fair in 2012.
I wrote the game's audio system, based on OpenAL and some of the gameplay code.Project Page
Portal Game Engine
A 3D puzzle game engine developed in C++ as a group project for a university lab course. Our team of 3 students implemented a custom OpenGL renderer while other teams contributed gameplay code and level design tools.
Besides the (recursive) rendering of portals, our engine featured a deferred lighting system, particle systems, cubemap-based reflections, transparent objects with faux refractions and various screen-space effects.
My solo competition entry for the 14th Ludum Dare 48 hour game programming contest, with a very literal interpretation of the theme: "Advancing Wall of Doom".
Uses the Ruby/Gosu library with a few extensions to create full-screen post-processing effects using GLSL fragment shaders.Code
A user interface AddOn for World of Warcraft I developed back in 2006 using the built-in Lua scripting engine. I later re-created this AddOn for the game's re-launch in 2019, where it has been installed by more than 100,000 users.Code
A fast-paced jump-and-run sidescroller where the player must race through a procedurally generated cave while avoiding various perils and obstacles.
I created this game within 48 hours as part of the 5th Ludum Dare game programming competition where it won first place in the "fun" category. It uses the Ruby/Gosu library.Code