Matiss Abolins

BSc Computational Science & Engineering student at ETH Zürich

   

Projects

LiDAR Simulation

During my time at AMZ Racing I created a standalone LiDAR simulator allowing us to create realistic point clouds completely virtually
learn more


Accelerating Inverse Optimization

For my BSc thesis I accelerated the inverse design loop of acoustic relief creation by 100x using neural surrogates
learn more


Terminal Rendering

Created several ray tracers which render their output to the terminal using ASCII characters
learn more

Education

LiDAR Simulator

An application simulating a LiDAR sensor and generating realistic, virtual point clouds was the missing piece to complete the closed-loop simulation of our autonomous Formula Student car at AMZ Racing.
I developed this standalone simulator alongside my thesis and coursework at ETH Zurich. It features:

Accelerating Inverse Design of Acoustic Reliefs via Neural Surrogates

For my Bachelors Thesis I replaced a computationally expensive numerical solver by training several AI models (including a CNN, Vision Transformer, and Fourier Neural Operator) on HPC systems to predict acoustic wave diffusion of a given acoustic panel.

The models learned prediction is then used for inverse optimization: Instead of asking how well a panel diffuses, we ask the model to shape a panel such that it diffuses well.

Because AI models are easily exploited in inverse optimization, I implemented advanced regularization techniques including Large Steps and neural reparametrization to stabilize the optimization landscape.

The acoustic optimization was also combined with a differentiable renderer and a vision model, allowing the panel to not only perform well acoustically but also physically resemble a user-provided target image.

The result was a functional inverse design tool that gives architects the freedom to create highly efficient acoustic panels with custom aesthetics. It accelerated computation times by 100x compared to the previous method and earned the highest attainable grade for my thesis.

Ray Tracing in the Terminal

When I was younger, I got interested in 3D graphics and wanted to understand how a virtual 3D world becomes a 2D image.

A bit of research led me to ray tracing, which I decided to implement myself. Because I didn't want to rely on existing graphics engines, I chose to render the output directly to the terminal using ASCII characters.

Over the years, I've built several ray tracers in C++ and Rust, rendering primitives like spheres and planes, and eventually exploring voxel ray tracing.

While my coding standards and architectural knowledge have evolved significantly since I wrote these, they were valuable learning experiences teaching me the importance of codebase structure, design patterns, build systems, testing and so on.