More selected projects


ConstrainedBox is a projection-mapping work that simulates three-dimensional scenes and objects with two-dimensional primitives. Some variations and interactions of light and shadow are used by color gradients in Openframworks. 

produced by: Zhichen Gu


ConstrainedBox is a piece of fake three-dimensional project built out of all two-dimensional primitives. As a former architecture learner, I'm interested in structure and space. Meanwhile, Bot & Dolly: Box, a shared projection-mapping video on the week 8 class, inspires me to explore how to rebuild a magical and interactive three-dimensional world. Therefore, I try to create scenes and objects for displaying the spatial variation on lights, shadows, borders and linear perspective aspects. 

Colour gradients are the considerable parts of the project, forming a black and white optical illusion as the primary visual scenes. I liken that to consecutive boxes—stage, with transitions. Furthermore, the objects like bouncing balls, clock pointers and particles are all affected and constrained gradually by the boxes, and these limits enhance the variation at the same time.

Concept and background research

The shapes I choose to project on are three plain surfaces from the cubes' side, allowing for an internal interactive-visual concept I intended to express. Using the skills I gained from the last ten weeks, I experiment and gradually develop several scenes for expressing optical illusion and three-dimensional virtual space with two-dimensional tools. As three-dimension contains the z-axis, I opted to simulate the black and white colour changes according to the depth of field, and lights and shadows. Three rectangles following the laser lines are generated as my first scene and become lighter and lighter.

After the first scene, these triangles start to transform into stereographs within lights and shadows, and then the constrainedBox has formed. I want to create something that can be played in these boxes. Therefore I emphasise the importance of each boundary and opt bouncing ballsputing them into the following two scenes about clock pointers and particles. The final scene tries to display my ambition in work, three boxes include the time-sequence from right, middle to the left, and affect each other. You can see some balls get away from the left box and emerge from the middle in the next second. Simultaneously, the right box still waiting for the command so that it won't drop any balls. In all scenes, I set up a series of if procedural or timer to execute the corresponding function which helps me to accomplish the projection-mapping easily.

  • gallery-image
  • gallery-image
  • gallery-image
  • gallery-image
  • gallery-image

This work complies in C++ using Openframeworks with two extensional addons, ofxPiMapper and ofxJSON.

Due to the critical Covid-19 situation currently, the projection can't be projected physically on campus. So I project this work in a 2D render one according to a photo image. Although some vivid reflections have lost, a satisfactory resolution has remained,  which is also essential to my work.

Firstly, ofxPiMapper is a creative toolkit for projection-mapping work, developing custom FBO sources that are being animated by an advanced process rather than a plain video. And ofxJSON is an extension calculating the duration of each scene and switch them. Besides, I used ofMesh which is a beneficial procedure to simulate lights and shadows. You could use command "setMode" to switch from lines to triangles for drawing different forms of gradients. Moreover, I fall into stagnation when I develop the final scene of constrainedBoxes because I'm confused about designing a real depth of field of objects in this fake three-dimensional world. So I try to give each bouncing balls(objects)' respective maximum dropping-height and its size and colour are all affected by this parameter. Hence, I could display a more realistic position variation in the work. Finally, I create and render some models in SketchUp, a 3D design software, testing the probability of this work. This step helps me to further the sketch visually.

Future development

I feel satisfied with most work has arrived. Meanwhile, this project takes me a stride forward on included addons of Openframworks, like vec2f, ofMesh, ofPath, ofPolyline, etc. However, due to the time and ability constraints, I didn't finish some original ideas about the part of custom movement and combination in the canvas which could be furthered. Furthermore, this work is not allowed to use illegal addons because of course-rules. At the same time, I find several alluring extensions that might be feasible for this work, like ofxBox2d and ofxFlowTools. Overall, I would like to keep exploring more realistic and interactive spatial-forms in the future. 

Self evaluation

I feel happy and satisfied with the stage my work arrived though it just the beginning of my pathway. Meanwhile, this project takes me a stride forward on included addons of Openframworks, like Vec2f, ofMesh, ofPath, ofPolyline, etc. I could feel the before and after change when I struggled against debugs and forced me to keep going.  I'm looking forward to what I will learn from term two and I would like to do more related works.