Projects

Jellyfish Simulation

Final Project Write-Up

I worked in a group to create a simulation of jellyfish movement underwater as part of a final project for CS184: Foundation of Computer Graphics. Our project was to render an animated simulation of jellyfish movement in water based on a cloth simulation approximation. For our jellyfish cloth, we wrote a translucency shader featuring silhouette enhancement. Through triangle sorting and interpolated alpha blending, we achieved a semi-transparent jellyfish through which the ocean background is visible. For the jellyfish model, we created a spring-mass frame consisting of point masses and structural, shearing, and bending springs. Force vectors on the spring-mass model simulate jellyfish muscle contraction and modified gravitational forces simulate water buoyancy.


Forest Fire Simulation

Forest Fire Repository

Inspired by the forest fire seasons in California, I simulated how fire spreads through forests. This simulation uses the idea of cellular automata as each cell in the 2D image has four possible states: vegetation (green), empty land (brown), burning (orange), and burnt (gray). At each time step, the simulation uses three probabilities: density of vegetation, chance of ignition, and chance of becoming burnt to determine the next state for each cell in the forest. These probabilities would be different for each forest based on the humidity, type of forest vegetation, etc.. The simulation follows the ideas discussed in "Rodolfo Maduro Almeida and Elbert E N Macau 2011 J. Phys.: Conf. Ser. 285 012038 https://iopscience.iop.org/article/10.1088/1742-6596/285/1/012038/pdf".


Glade of the Gray


Glade of the Gray Game Link

Glade of the Gray is a deck-based dungeon crawler where the player’s party of misfits will battle to complete quests. Each member of the party will have their own deck of unique skills they can use in battle. By traversing the dungeon, the user can pick up items, interact with change fortunes, and encounter enemies. For this game, I worked with a team to create this in Unity. I coded the logic for dungeon traversals by randomizing enemies, items, and creating dungeon maps. I also created interactables such as fortune tellers, slot machines, and item chests for the dungeon.


Planetary Simulation Plots



I processed simulation data of the atmosphere's of Jupiter and Uranus. I ran many experiments with different parameters such as cooling rates and simulation grid size to converge on realistic conditions. Additionally, I created plots and videos to analyze the atmospheric simulations and compare the outputs to expected behavior. These plots observed pressure, temperature, velocity, potential temperature, and more over time. Above is an example video of the horizontal velocity of Uranus atmosphere over time.


Water Cycle


UCBUGG Course Website

I animated this 3D short along with three other teammates. The concept for the story is a water droplet comes to life after a rainstorm. The droplet is fascinated by the nearby waterfall and wants to go into the waterfall. Through the phases of the water cycle, the droplet fulfills its dream as it rains into the waterfall pond. This short was created using Maya 3D animation software. I modeled the cloud, rocks, and many of the background objects such as the flowers and pond. I also did a lot of the lighting and animation.


Brown Dwarf Database


Brown Dwarf Database Repository

For a summer research project, I compiled a database of brown dwarfs likely to observe polarization. I researched characteristics that would allow for high quantities of polarization. Some variables I looked for were high rotational velocity, low surface gravity, and young age. I looked through past research findings for brown dwarf polarization candidates. I also wrote functions to query large astronomy databases such as Simbad to fill in missing characteristics and filter for more candidates.


Game of Chess


Chess Repository

Game of chess that follows the usual rules. I created an in-terminal chess game that two players can compete against each other. The game will prompt the player to enter a move and only accepts valid moves given the piece type and current player. The chess game will also calculate each player's total points and captured pieces so far. This was created in Python for fun.


Farm Stampede


Farm Stampede Repository

Move and jump to dodge the farm animals charging towards you! The longer you survive, the higher your score will be. You can also collect coins to increase your score. This game was created in a pair as part of the Game Design and Development course. Everything was made in Unity.