Creative Technologist & Developer
Three.js · GLSL · JavaScript · Vercel
"Not just a gallery — the world felt still."
This project was my intro to creative tech, solid three.js fundamentals applied creatively. I wanted to create a world with strong visuals and photography, all displayed in an immersive world.
I had just completed Chapter 2 of my three.js journey when I decided it was time to build my first three.js project. My skill level is basic, but I know all the foundational skills to build a scene- light, geometry, textures, materials, etc.
Mapping out my vision was easy because I knew I wanted to replicate the feeling of being inside nature- a common theme in a lot of my art. So, naturally, I decided to make this not just a walk-through gallery in a 3D space, but to provide the experience of human presence in something more vast.
I started by building a board on FigJam. Adding and subtracting photos to create 3 distinctive mood boards, along with Pinterest saves for the world I wanted to build. Here, I chose my photography, in what order, and came up with all 3 scene names- 'Ethereal Reality', 'Textures: A close look', and 'My Tribute to Fall'.
Planning came naturally as I had already been sharing my photography on my Instagram page @chasingmistry. But building a three.js scene around it with basic three.js coding was a challenge I was excited to take on.
init and destroy to render one scene at a time.
I was quickly humbled to know that basic techniques could not re-create my vision right away. So I learned, I needed to make it exist- before I could make it better. The GUI tool was especially helpful with this. Tweaking fog density, object placement, lighting, or even turning my scene around- all slowly got me to my final result.
Seriously, at one point I was quite unhappy with my scene until I spun it around and realized, my scene is great, I just had to re-select my photography.
Especially keeping performance in mind, afterall I was to display high resolution photography straight out of my Fujifilm camera, which holds a lot of data on its own.
That said, I did use some more complex elements with the help of Claude - treating them like plugins- to still maintain the integrity of the concepts I had envisioned.
main.js and render them together.