Volume Renderer With GUI

Visualization of 3D data (Python, PyTorch, MatPlotLib, Vectorized Implementation)

In this project, I developed a volume renderer from the ground up using Python and PyTorch. Volume rendering is a crucial technique for visualizing and interacting with 3D data (volumes). A transfer function determines the color and opacity of the samples. I designed a GUI for easy testing of my implementation, and I believe the results turned out fantastic.


GitHub Link

Visulization of MRI 3D Data Based on One Example

Deep Learing (Python, PyTorch, Vectorized Implementation)

Visualizing volumetric data is a key tool for effective communication, with the transfer function playing a pivotal role in deciding what aspects of the volume to display and how. However, in MRI volumes, the data values can vary significantly due to factors like manufacturer differences and patient-specific details. As a result, a transfer function designed for one volume may not be effective for another. In this project, our TTF method is employed to optimize and visualize brain MRIs based on examples. By providing a reference volume and its transfer function, the method can visualize new, unseen MRI volumes.


GitHub Link
Link to the paper
Link to the thesis

Automated Transfer Function Generation for Tracking Shock Waves in Volumetric Data

Deep Learing (Python, PyTorch, Vectorized Implementation)

Visualizing volumetric datasets through volume rendering can be challenging, as each volume in the dataset typically requires a unique transfer function. In one of the applications presented in this work (TTF paper), we visualize 50 time steps of an asteroid blast shock wave in water, where the user provided only a single transfer function. Our method automatically generated the subsequent transfer functions, optimizing them to track the shock wave. Despite the shock wave losing strength and expanding in size over time, our method effectively tracks it across all time steps my modifing pressure (scalar) opacity and gradient opacity functions.


GitHub Link: To be available soon
Link to the paper
Link to the thesis

Mass-Spring System

Simulation & Animation (C++, OpenGL)


In this project, I developed a mass-spring system to simulate various behaviors, including chain, cloth, and jelly cube dynamics. I utilized the semi-implicit Euler method to ensure the simulation remains stable within bounds. To enhance realism, I incorporated air damping and spring damping. For collision handling, I implemented two types: boundary collision, as seen in the jelly cube and cloth on sphere models, and self-collision, to prevent the models from folding and colliding with themselves.

The code for this project is not public. To receive the code for this project please send me an email.


GitHub Link

Silhouette Rendering

Rendering (C++, OpenGL, GLSL)

In this project, I implemented Silhouette Rendering, a non-photorealistic rendering technique that produces artistic and visually appealing results. This implementation detects and renders only the edges where one surface is visible while the adjacent surface is hidden, effectively outlining the silhouette of the object.


GitHub Link

2D Tone Based Mapping

Rendering (C++, OpenGL, GLSL)

In this project, I implemented Attribute-Based Mapping based on the paper "X-Toon: An Extended Toon Shader." This approach utilizes 2D tone mapping (tone texture and tone detail) to achieve effects such as abstraction, backlighting, and near-silhouette enhancement.


GitHub Link

Birds Flocking Simulation (BOID Algorithm)

Simulation & Animation (C++, OpenGL)

In this project, I implemented boids algorithm to simulate birds flocking behavior. The rules applied in this simulation are separation (to avoid vrowding local flockmates), alignment (steer towards the average heading of local flockmates), and cohesion (steer to move towards the average position).

The code for this project is not public. To receive the code for this project please send me an email.


GitHub Link

Physically-Based Roller Coaster Simulation

Simulation & Animation (C++, OpenGL)

This project involves a fascinating physically-based roller coaster simulation that I developed. The simulation operates on the principle of energy conservation, except during the lifting phase where a motor is assumed to lift the carts to the top. Beyond that point, the sum of potential and kinetic energy remains constant. The roller coaster track is designed using Catmull-Rom splines, and the tracks automatically adjust their banking to keep the carts securely on the track while counteracting centrifugal force.

The code for this project is not public. To receive the code for this project please send me an email.


GitHub Link