Paper Boats That Float

Key concepts and intentions

The project creates an experience that allows people to interact with one another by writing down their messages, folding into paper boats, and floating and receiving the virtual paper boats on the sea. In this project, people are a functionary and participatory part of the interaction itself, which in turn provokes a strong emotional and spiritual experience. Audio is used to enhance the experience as well.

Homepage: 1 line description + 1 button to start

Add info on paper + 1 button to fold

Folding + floating animation

Clicking on boats + a pop-up window displaying the info contained

Production decisions

Client 1

  • Detect user IP and click on a paper to "stamp/record user's location to the paper according to IP (stamp pattern/logo)

  • Fold a paper boat (animation)

  • Float the paper boat on the sea

  • Send the paper boat info to the server

Server

  • Receive the boat information

  • Some logic to "send" the paper boat around (i.e., when the next user asks for a boat, randomly or selectively send the info of a boat)

  • Send the client a boat information

Client 2, 3, etc (except for Client 1)

  • Do all the things that Client 1 does

Below is catching a boat from other clients

  • Receive a boat's information from the server (except for the info that the client just sent)

  • Display the paper with all the locations it has recorded (i.e., all IPs recorded)

  • Detect user IP and click on the paper to "stamp"/record user's location to paper based on IP (if applicable)

  • Fold, float, and send info to the server again

//Thanks to YG for the support of production planning

Major challenges and solutions

Fold page

Folding animation automatically plays after clicking the button

  • onclick="show();"

Automatically jump to the Float page after the animation ends

  • 'ended'

Float page

Load .glb 3D models into Three.js

Add boat into Three.js scene when users fold the paper boat

  • for loop + Class

Use raycaster to locate the boat position, add click event

Relevant references and resources

References

Built models

Animation and audio

Next steps

The project incorporates NeDB, Node.js, Three.js, and p5.js. A physics library would be applied as a next step. In addition to typing in the virtual form, users will write with a real pen and paper. These data will be uploaded in real-time to the virtual paper on the web page. Each boat will then be associated with a specific data string.

One more thing I would like to mention is in most cases, the deployed project fails to store the user's input to the database in real-time. However, I just noticed that the deployed database has new data stored on Line 14 and Line 16, but is missing a piece of data that existed prior to the deployment. I am not quite sure if this is caused by Glitch, and so far no solution has been found. Hopefully, someone will get it fixed in the future!

🎬 Video Documentation
✏️ Doc Documentation
👩‍💻 Presentation Slides
🔛 Deployed Project
💻 Project Code


🎫 Exhibited at ITP/IMA Winter Show 2021 & YORB Gallery
🙌 Made at NYU's IMA Low Res program with Yutian Wang

Previous
Previous

Expressive Spaces

Next
Next

The Cloud Collector