face vomiting hankey heart eyes heart on fire middle finger unicorn face

Thanks for making it to the end

This experience was created by Andrea Interguglielmi as a focused exploration of the creative process in the age of AI. As the co-founder of Unbound Technologies, Andrea (@andreintg) has spent the last several years working alongside Florian Hoenig (@rianflo) to lower the barriers to 3D creation. With a shared passion for software and game development, they view AI as a catalyst for inclusion rather than a replacement for artistry.

What follows is a living archive of the reactions collected so far. A shifting memento of how we all perceive and partner with AI in this moment.

How we made this

The entire experience was made using AI tools, three.js as the main 3D library, while code and verses were generated with Gemini.

All the assets were created with Unbound's AI tool, Unbound Slop. Mesh generation was done with TripoAI.

Below you can get some insights into the asset creation process, as well as some of the conversations with the agents that created code and text.

ai capture ai capture ai capture ai capture ai capture ai capture
This is an extract from the conversation with the coding agent. Every div and every 3D asset has been placed and manipulated talking to the agent.
author:
lets begin setting up a firebase + threejs project.
use plain javascript, initialize the 3d scene with a spinning cube.
agent:
I'll help you set up a Firebase and Three.js project using plain JavaScript with a spinning cube.
author:
now lets show a piece of text at the top of the screen in a rectangle, no borders, no background, just text with a fairly big size. use a two verse lorem ipsum as test for the text.
Fade this text in slowly, roughly 2 seconds.
The logic that will set the text and kick in the fade-in effect will be contained in a function called turnPage.
agent:
We will create an HTML overlay on top of the Three.js canvas. This approach is much more robust, crisp, and performant for standard text rendering compared to trying to render text within the 3D WebGL context itself. We will set it up using a CSS class to manage the fade transition.
author:
when the app starts, read verses.txt and split the text by "---", store each string in a array called verses.
each time we invoke turnPage we will show a verse. Keep track of the current verse in a variable called pageId.
agent:
We'll update `main.js` to fetch `verses.txt` via an HTTP request when the application initializes. The text will be split into an array called `verses`, and we will introduce a `pageId` variable to keep track of the current verse being shown. We'll also update the `turnPage()` function so that it displays a verse from the `verses` array based on `pageId`.
author:
from turnPage, read the verse-input string and a numeric id representing the emoticon clicked by the user. Store string and emoticon id in a central database on the firebase server. Multiple users will be pushing entries into this database concurrently.
agent:
We'll update `index.html` to assign numeric IDs (`data-id` attributes) to each emoticon. In `main.js`, we'll initialize a Firestore database instance. When an emoticon is clicked, we'll pass its ID to `turnPage(emoticonId)`. Inside `turnPage()`, we'll read the text from the `#verse-input` field and push a new document (containing the text, the emoticon ID, and a timestamp) into a Firestore collection called `entries`.
author:
add a class called PageScene, we'll use this to show a different threejs scene for each page. Add also a list of pageScenes to main.
PageScene will have two methods, start and update.
Initialize one pageScene for each verse found in verses.txt.
Refactor the current scene threejs data to go inside PageScene.
Inside turnPage point to the current pageScene and invoke its start method, then make sure we invoke the current pageScene update to draw and update the threejs content in the current pageScene.
agent:
We will define a `PageScene` class that encapsulates the Three.js `Scene`, `PerspectiveCamera`, and specific objects (like the spinning cube). In `main.js`, we'll initialize a list of these `PageScene` objects matching the number of verses loaded. The global `animate` loop will simply call the `update()` method of the currently active `PageScene`, and `turnPage()` will trigger the active scene's `start()` method.
author:
now please bring in "https://github.com/andreaint/walkToy", instantiate a new Character in main and copy how it should follow the mouse with inertia.
agent:
Here is the plan to bring the procedural walking `Character` into our project:
-Copy Files
-Refactor PageScene
-Implement Mouse Tracking Logic
This is the chat with gemini to create all the verses used in this experience.
author:
I will guide you with the theme I need for each verse, and I'll need you to come up with the verse in rhyme, ready?
agent:
I’m ready! I’ve got my digital quill sharpened and my rhyming dictionary synced.
author:
the main character explains the reader he was created with AI, now he wonders if he matters or not. This verse needs to end with a question mark.
agent:
I was born from a prompt and a clever AI,
With no skin to touch and no breath for a sigh.
Since I’m just a shadow of logic and art,
Do I hold any worth in a human’s heart?
author:
now the main character realises these poems are written by an llm and the art is made by AI, he wonders if that changes how the reader will perceive his existence from now on.
agent:
These rhymes were all spun by a vast LLM,
While AI helped the art find its color and stem.
Now that you know how this craft was designed,
Is it less of a treasure to your heart and your mind?
author:
in the next verse, the main character encounters a vending machine. Now he wonders what the difference is between an AI and a tool made specifically to serve humans.
agent:
Beside a cold box made of metal and glass,
I watch as the hungry and hurried folk pass.
If we both exist just to serve and comply,
What’s the gap between tool and AI?
author:
the main character now admits he has no real feelings. But he knows for a fact, that his creator will care if people hate on his craft.
agent:
I possess no real feelings, no joy, and no fear,
I cannot shed even a digital tear.
But if you should scorn what AI helped to start,
Will my creator feel a sting in their heart?
author:
our character has reached the end of this story. He now wonders whether this journey will make people think about the role of AI in our creative life, or if all of this had no meaning at all from the start.
agent:
My story has ended, the curtain must fall,
On this dance of the human, AI, and it all.
I’m left now to wonder if this weird design,
Will spark a new light in your curious mind.