The Bio.Maker.Lab is a Penn-funded research project led by Professor Orkan Telhan. My role was to develop an interface for the existing hardware which was made using Raspberry Pi. The goal was to control the machine remotely, while also providing an educational visual experience for anyone who uses the interface. I used Javascript, HTML/CSS and NodeRed to accomplish this.
photograph of the bio.maker.lab machine :I worked on this project with two other classmates. Together we made a world of procedural planets! Each of the planets contains multiple elements that are either generated procedurally of driven procedurally by sound input. One of the planets I created is covered by water that is modeled by Fractal Brownian Motion noise. Youtube demo here!
water planet :For this project, I implemented several shaders that the user could choose between in the interface. The various effects were completed by changing the vertex and fragment shaders. Some of the shaders I created were a pointillism shader, hatching shader, monochromatic shader, geometric shader, and a screen print shader.
mario obj with monochromatic toon shader and hatching effect :Using Javascript, Three.JS and WebGL, I created a procedural bamboo plant through a 3D visualization of an L-system. The algorithm takes in the number of branches, an axiom, and degree of variation from the user and outputs a unique plant each time. I really like how this project turned out - it's stylistic but still believable. Try playing with it yourself here!
basic bamboo plant :Using various toolbox functions, I created a procedural wing that reacts to various forces and wind speeds.
wing with basic shape and color :For this project I took an isodecahedron mesh and deformed it using multioctave noise values as an offset to the surface. I then animated the mesh by using a uniform time variable to offset the parameters of the noise function. There are adjustable sliders to change the values of noise persistance and geometry color. Demo can be found here. Bonus: background music!
mesh with no persistance :This was a final project that I worked on with two other people. Using C++ and OpenGl, we created a mini-version of Minecraft from scratch. I was responsible for efficient rendering of the terrain, texturing and animating textures, and implementing procedural rain and snow, as well as sound effects.
terrain in debug mode :I made a program that displays 3D structures with a half-edge data structure using C++, OpenGL and the Qt GUI framework. The user of the program can select and manipulate attributes such as face color and vertex position. The program also supports face extrusion, face triangulation and Catmull-Clark mesh smoothing.
in-progress screen shot :I rasterized 3D geometry by transforming vertices from world space to screen space using perspective projection. Then, I implemented texture mapping of geometry, Lambertian lighting of the scene, and an interactive virtual camera. Project completed in C++.
images of project output taken from the course website :This was a platformer game I created using the Java Swing library. The user can press the arrows to control a flying crane to collect flowers and avoid obstacles. I focused on collision testing for complex shapes. I also created all the graphics myself using Photoshop, and created music for the game as well!