Projects - Overview

Personal and school projects

The Emoji Bar github-img

This project seeks to create a novel interface to augment in-person and/or remote communication and collaboration. As an answer to this, we created a novel interface capable of allowing users to remotely communicate through emojis that correspond to the user's expression and pose. Users can emote in real life and the corresponding caricature will be shared, facilitating communication seamlessly and without the use of one's direct likeness.

The Water Clock github-img

This project seeks to create a physical prototype that solves an everyday problem. The problem we chose to focus on was the common issue of dehydration during long work days. As computer science students, we spend a lot of time at our desks in front of screens, and while trying to meet deadlines and becoming immersed in daily tasks, it can be difficult to remember something as simple as drinking a glass of water. This behaviour can lead to dehydration, and uncomfortable headaches.

Exercise lock screen github-img

This project revolves around creating a novel replacement to the “slide to unlock” style lock screens common to modern smartphones that still resists accidental activation. This specific replacement does not stray far from the traditional design as it still has an emphasis on touch or multi-touch based interaction. Though, as a requirement of the design process, the replacement lock screen should have a side benefit to the user in terms of self-betterment or the encouragement of healthy habits. The 10+10 design method was put to use for this project to narrow in on a final design with useful and intuitive features.

OCR Lockscreen github-img

This project revolves around creating a novel replacement to the “slide to unlock” style lock screens common to modern smartphones that still resists accidental activation. This specific replacement does not stray far from the traditional design as it still has an emphasis on touch or multi-touch based interaction. Though, as a requirement of the design process, the replacement lock screen should have a side benefit to the user in terms of self-betterment or the encouragement of healthy habits. The 10+10 design method was put to use for this project to narrow in on a final design with useful and intuitive features.

The "Me" Button github-img

This project revolves around "interesting" interactions with an application utilizing a single button as an interface. Through the design of this button, a gamified, reflex based interaction with auditory feedback was at the forefront of concerns. This project was completed with HTML, CSS and Javascript. The Howler.js library was used for audio output and jQuery was used for animation and DOM manipulation.

3D Boid Flocking github-img

A simulation of emergent flocking behaviour of boids (bird-oids) within a 3D environment. Each boid has three distict radii of awarness, which dictate forces to separate from, align with, and match velocities with neighboring boids. Forces are accumulated, and positions ar updated adhering to a semi-implicit eulerian integration method. A 3D grid data structure was implemented as a caching solution to optimize the O(n2) algorithm. This optimization allows for the simulation of up to two-thousand boids with a stable frame rate.

Mass Spring Systems github-img

A collection of four mass spring system simulations. This simulation utilizes a semi-implicit integration method to update positions and velocities of each point mass. This integration is performed after the spring, damping, gravitational and collision forces are accumulated for each mass, applying Newton's second and third laws of motion. This series of systems aims to portray the relative simplicity in designing complex mass spring simulations once numerical stability is ensured by correctly applying semi-implicit integration. Across all four simulations, only the initial spring and mass configurations are altered along with a few constants. All systems are simulated by the same algorithm after these initial parameters are set.

Roller Coaster Animation github-img

An animation of a roller coaster and track represented by a cubic hermite spline. The spline was parameterized in terms of arc lengths along the curve using a look-up table. With this construction, each frame, the distance travelled can be trivially calculated through kinematic equations. The orientation of the track and cart geometry is calculated at each point on the spline through the use of a Frenet Frame. This frame ensures the geometry is oriented such that the centripetal forces due to the track's curvature are cancelled out by the cart's normal force and experiential "centrifugal" force.

"Fan Nap" Blender Animation

A simple animation consisting of objects modelled, rigged, keyframed and rendered in Blender. The objective of this animation is to personify an everyday object using common animation principles such as squash and stretch, ease-in-ease-out and anticipation. To portray these principles, the object was rigged with a skeleton consisting of many "bones", where each "bone" governs the transformations of model geometry adjacent to it. Fine tuning of bone geometry was performed through Blender's "weight paint" heat map. The resulting animation was rendered with Blender's Eevee rendering engine.

Top Shopper github-img

A 3D arena combat focused driving game developed by a five person team as a term project for CPSC 585: Games Programming. This project was developed with C++, using libraries such as OpenGL and Nvidia PhysX. The rendering engine was a responsibility of mine during development, porting boilerplate code from previous University assignments to fit this project's scope. The rendering engine included OBJ file loading, shadow map rendering and text rendering with full texture support. Significant optimizations for the rendering were a constant concern as the pipeline needed to keep up with the fast-paced gameplay. A distinction between static and dynamic objects, deferred rendering and baked-in shadow textures were utilized in this project.