NOC – Week 9 Spring, Shirley


For this assignment, I wanted to combine want we learned about spring this week and sine waves. So instead of drawing a line between two points directly, I used translation and rotation to draw a sine wave in-between. The amplitude of the wave depends on the k value of the spring; and the frequency is adjusted by the length each time when the user drags it.

When I was coding this program, I ran into a lot of issues with pointers and object initialization in c++, as I was trying to pass the balls to the constructor of my spring class. But I think it was a good practice of coding and helped me to learn more about openFrameworks. The code is attached below.


NOC – Midterm The Aurora, Shirley

Here is my Aurora. It turns out better than I expected and I am really surprised with what sine wave and noise can do. In my final version, I managed in making it 3D. So the users can change the angle and the position of the camera, and see the aurora from the perspective they like.



In general, I added many layers of sine and noise to make my particles move naturally back and forth. First I made a wavy line in 2D using sine and noise by changing the y position of each particle. Then applied a similar formula to height, width, color and z position in 3D.


At the beginning, I was trying to draw the gradient effect by drawing millions of dots and manipulate the color manually using some math. But as I talked with Prof. Moon, I realized I need to find some other way that let GPU handle the gradient color, otherwise it may slow down the performance significantly. Thankfully I was writing the program with openFramworks, and in openGL the shader can render a gradient line by default if the two vertices of that line have different color value. So for my debug mode, I just have the two vertices showed on the screen. Below is the code.

Next Step

I am thinking of make a web version of this program with three.js. However I’m not sure if the OpenGL gradient trick will still work or not. I am also planning to add multiple layers of the line strips.

Week5 – Rolling Ball + Photogrammetry

For the photogrammetry I tried several other objects, but they all seem to be hard to recognize by the photo scan software. It might because of the lighting conditions indoor also the objects I chose  did not have enough details. Finally I found a phone on the wall and it works.


I also modified the mesh a little bit in blender, and reduced the polygon count as well.

photo-phone photo-phone2

This is how it looks in my rolling ball unity scene.


NOC – Week5 Bubbles, Shirley

It is much harder than I thought to create these blobby bubbles. Basically each bubble has 20 particles next to each other and connected with a line. Each particle will give its neighbors attraction and repulsion to the rest. And in this way they can balance as a circle. I tried to modify the numbers for thousands of times and finally I got this.

NOC – Week5 Inspiration, Shirley

My inspiration for this assignment is from soda. The program will simulate the bubbles inside a glass of soda. It is pretty simple, but I’d like to make it as realistic as possible.

For each particle,

  1. it will grow from a small size to large.
  2. it will move from the bottom to top.
  3. when it is moving, it will collide with others or merge with other particles as a larger one.
  4. when it moves to the top, it will stay for a while and pop in the end.

NOC – Week4 Planet, Shirley

Since we were creating planets, I played a little bit with gravity and collision besides resistance. I made two type of planets which one is earth and the other is ocean. For earth type planet, it has a gravity that can constantly attract the particles, and allow the particles to bounce and stay at its surface. For ocean type planets, it is just water so it can slow down the particles by applying the resistance when they are passing through.


[Updated Mar.29] Shirley’s Capstone Progress (Greenspan)

Interactive Project

On the current stage I am working on the interaction. So far these are done:

Paper plane modeling & rigging

The time I spent on the model and the rig is much longer than I thought. As I was actually folding a plane using armature in blender, faces are easily clipping into each other. So I had to be extremely careful with the weights and the position of each vertex.



Plane mouse control moving 

Basically the plane will fly to where the player points at.


WebCam texture mapping (Mar 6)

I had a lot of issues on the UV map when importing the model to Unity, but finally they are all fixed.


testing the script with the built-in webcam.


The texture maps nicely that the model in the game looks almost the same as the real one.


Visual Concept (Mar 10)


I realized it would be nice to have a visual reference for me to make other assets. So I quickly drew a sketch of the visual concept. In general, I’d like all my game objects made out of paper. Looks nice.

Cloud Models and Animation (Mar 27)

I got inspired by some origami wind chime and I decided to hand my clouds in the sky like this. Animation is done by script in Unity.


Unity-Kinect Communication

(will update this part in detail later)


Music (Mar 29)

Taking a break from coding, I spent a whole afternoon composing a background music for the game in GarageBand.


Here is a sample of the soundtrack.



Research Paper

For my research I would like to look back into how the design on game controllers were made in the past, and provide a picture of the growing process of input methods from controllers to modern input methods such as motion tracking. And to reveal the potential of new technologies as input method that enhances game engagement and enjoyment according to different game scenarios.

The current sources I have are several scholar works on the history traditional controllers, and journals about analysis on using natural controllers/motion tracking/etc vs traditional controllers and how they affect gameplay in video games. I’m still reading and gathering other sources.