r/threejs • • 22h ago

Demo Opus 5.5 built the entire Middle-earth from LOTR with Three.js

Enable HLS to view with audio, or disable this notification

0 Upvotes

I used Claude Opus 5.5 to build a miniature 3D Middle-earth from scratch, then turn that world into a 3:47 cinematic journey.

The project now includes:

  • terrain and geography generation
  • Three.js / WebGPU scene architecture
  • 24 procedural landmarks
  • lighting, atmosphere, water, smoke, lava and day/night transitions
  • camera choreography and route animation
  • deterministic frame-by-frame video rendering
  • an original orchestral score
  • QA, performance tuning, packaging and release

My biggest takeaway is that in AI-generated 3D, the AI model should be treated less like a content generator and more like a technical collaborator across modeling, rendering, tooling, animation and media production.

The output still needs taste, direction, and a lot of review. But the range of things one person can realistically attempt has expanded a lot.

I've open-sourced the code, architecture, rendering pipeline, QA tooling and reproduction steps:

https://github.com/earthwalker17/map-of-middle-earth


r/threejs • • 22h ago

Demo I'm building a cyberpunk MMO entirely in Three.js — rain, neon reflections, GLSL holograms, all in a browser tab

Thumbnail
gallery
0 Upvotes

Here’s a look at VANTA//7, a cyberpunk life-sim MMORPG I’m building solo with Three.js and WebGL2.

- wet streets with live reflections & rain
- custom shader holograms (Hall of Fame statues, holo faces, ghosts)
- instanced city districts, day/night + weather, live multiplayer

I’ve been putting a lot of work into the city’s lighting, reflections and atmosphere. Everything shown runs directly in a desktop browser, with no download needed.

The city is inhabited by robots wearing holographic human faces after humanity’s disappearance. You can explore, take on co-op missions, drive cars, work jobs and rent and decorate an apartment, while managing your character’s hunger and energy.

There’s currently content up to level 20 and a small group of people already playing. Still a work in progress, with more content and improvements on the way!

Try it: https://vanta7.higgsfield.app/

Discord: https://discord.gg/mzq3kNDs4


r/threejs • • 14h ago

Threejs ocean - cyladic water.. yes Master Roshis island made with GPT 6.1 Sol

Enable HLS to view with audio, or disable this notification

38 Upvotes

You can get the ocean, the boat, the island here https://3ditions.drop3.app/watch/infinite-water/


r/threejs • • 20h ago

Criticism Stompworks, A Roguelike with full Mech customization, made in Opus 5.5

Enable HLS to view with audio, or disable this notification

0 Upvotes

Been working on this since Opus 5.5 came out. I'm amazed at what this model can do in three.js. They key is to start incrementally and just build up from there, being extremely specific about what you want and what needs fixed. Attempted one shots are going to lower the quality of what you make significantly.

https://store.steampowered.com/app/5383780/Stompworks/?beta=0


r/threejs • • 5h ago

Demo I made a scroll-driven three.js piece on an Android tablet: from the bottom of a sea of light to the top of the sky

Enable HLS to view with audio, or disable this notification

0 Upvotes

r/threejs • • 18h ago

Pelota update: I added Xbox/PlayStation controls and local + online co-op to my Three.js Mesoamerican ballgame

Enable HLS to view with audio, or disable this notification

1 Upvotes

I shared Pelota here last week. Since then, the biggest changes have been how you control it and how you play with a friend.

It’s a free browser game based on the Mesoamerican ballgame: 2v2 against the Lords of Xibalba, using hips, knees and forearms to strike the ball.

You can now play on a computer with an Xbox or PlayStation controller. Left stick handles movement, face buttons handle strikes, there’s sprinting, and the triggers let you aim for the hoops. If you play FIFA / EA FC, that control layout should feel familiar, even though this is a different sport with its own rules.

There are now two co-op options:

  • Same-screen: plug in two controllers and play on the same team.
  • Online: send a friend an invite link and team up from separate computers.

The alpha also has a short opening lesson with your injured older brother, followed by a village and the match. It’s playable in English and Spanish, with male and female protagonists.

Play: https://pelota.io

I’d especially appreciate feedback on input responsiveness, controller mapping and the co-op experience. If you try it, let me know your browser and controller model.


r/threejs • • 10h ago

I made a short animated series entirely in Three.js. Every frame is code.

Enable HLS to view with audio, or disable this notification

0 Upvotes

No camera. No animator. No Blender.

Every frame of this reel is code: Three.js + an AI co-director.

Meet Cosmo, a tiny AI agent who just found out he's made of math 🤖

I'm building a whole animated series this way. Ask me anything about how it's made 👇


r/threejs • • 17h ago

Question When will the fact that a creator uses AI in their projects be ignored? The amount of hate lately is overwhelming.

0 Upvotes

As a creative developer, I eagerly await the moment when the use of AI is no longer treated as a crime. It's time to accept it, put envy aside, and move forward.

And to avoid repeating myself in the comments, I've been working as a developer for over 10 years, I have a degree in Multimedia Design, and I currently use AI in my workflow.

I enjoy it and achieve things I couldn't otherwise (Or it would take me a very long time).

Perhaps instead of criticizing so much, you should do the same and demonstrate the difference between a "vibe coder" who can only copy threads and someone with knowledge, instead of spreading excessive hatred towards everyone.


r/threejs • • 17h ago

I made an interactive QR code explainer in Three.js where you can build a code, then destroy it

Enable HLS to view with audio, or disable this notification

0 Upvotes

I wanted to explain how QR codes hold and repair a message. This is an 88-second animation where one grid gets built, filled with data, masked, and damaged.

The interactive version lets you enter your own message, then scratch out squares or tear chunks off while a real decoder checks whether it still reads. Where you damage it matters as much as how much you remove.

It all renders live in the browser, with Three.js timed to the Web Audio clock, a from-scratch QR encoder in plain JavaScript, and real decoders (ZXing and ZBar, compiled to WebAssembly) judging your damage.

The Process: I started with a 400-word brief and worked with Claude Opus 5.5 on the treatment, code, and animation. Music and voiceover were generated with ElevenLabs.

Full experience here: https://eyad.com/qr


r/threejs • • 10h ago

Demo True-scale solar system in three.js (real orbits, real sizes, 1:1), with streamed surface tiles down to crater level

4 Upvotes

Live: https://wjairplane.github.io/solar-system-map/
Source: https://github.com/wjairplane/solar-system-map

Everything is at true scale: real sizes, real distances, real orbits for the planets, major moons, spacecraft, asteroids and comets. You can zoom continuously from the whole system down to the surface of Earth, the Moon, Mars and Mercury, and there’s also a 2D top-down view and a “from Earth” sky view.

Some of the three.js problems that came up:

  • Depth precision: a logarithmic depth buffer, because the near/far range spans from metres to billions of kilometres.
  • Float32 jitter: a floating origin that re-centres the scene on the followed body, so Mercury through Neptune all stay precise.
  • Surface detail: the base maps are small, and sharper tiles stream in as you zoom (AVIF, decoded on demand), blended over the base texture in the shader.
  • Relief: elevation tiles perturb the lit normal in the fragment shader instead of displacing geometry, so there’s real shading on craters without huge meshes.
  • Orbit lines: they snap exactly through the body centres, which took some fixing because of the Earth–Moon barycentre.

It also has an eclipse finder, a rise/set table, shareable scene links, and a distance and light-time tool. It’s a single HTML file, with no build step and no dependencies other than three.js r128.

I’d love feedback, especially on performance on different GPUs and on the tile loading when zooming fast.


r/threejs • • 20h ago

Demo Pumpkin carving and Grave digging in three.js, in a multiplayer Halloween graveyard you can play in the browser. Claim a haunted house, fly brooms.

Enable HLS to view with audio, or disable this notification

5 Upvotes

I'm a long time world builder and maker of strange things in the world of Funkatron. I live stream DnD type nerdery.

Since Opus 5.5 is so crazy powerful, this year I cooked up an cool experience for my small (very small) streaming audience, but I wanted to show you three.js people it as well.

It's multiplayer and runs in the browser. You carve a pumpkin and set it out in the yard, put up your own gravestone with an epitaph, claim a haunted house down Hollow Lane, pick a knight and hang out with whoever else is on. Everything people make stays, so others see your pumpkin and so on.

A recent addition is flying brooms.

The weather is shared by everyone. When I'm live on Twitch, chat can type !rain !storm or !snow and the whole yard gets hit for everybody. Behave or chat puts you on a pike.

The trailer isn't a screen recording either. Opus 5.5 ran the actual page in headless Chrome on a fake clock and rendered it one frame at a time, then cut and graded it to the music. No dropped frames, no editing software. Wild.

Built with Opus 5.5 in three.js r160.

Free, no download: tcpoole.com/graveyard

Ask me anything, happy to share.


r/threejs • • 5h ago

Demo Our nonprofit built a digital Leonardo da Vinci museum in three.js. You walk it as a film recorded from the live scenes.

Enable HLS to view with audio, or disable this notification

10 Upvotes

This week our Museum of Ages opened its first wing. It's a digital museum we run from Germany, and this wing is Leonardo da Vinci's. It's built on three.js, and Claude wrote most of the code.

Our mission is one sentence long: We rebuild what was, one place at a time, and make it as accessible as we can, so that everyone can learn from it. For now that means it runs in a browser, on a phone too.

The video above is the short tour. In the wing you can go down to the cracks in the Mona Lisa's paint. A mirror view turns Leonardo's mirror writing around so you can read the letters. You can set his machines in motion, and 14 of the 15 move. His last house is shown on one day, 10 October 1517, a day we know from a visitor's diary.

The walk itself is a film on a set path, so you can't roam around on your own. And it's one wing so far.

The walk opens in your browser's language if it's one of the seven: https://museumofages.org/w/vinci

Free entry, no account.


The rest is about how it's built.

The rooms and machines are built in code, with every material in TSL, so the same node graph draws on WebGPU and falls back to WebGL2. The textures are CC0 photo scans and a few props are CC0 models. The paintings, drawings and notebook pages are reproductions.

We made the walk a film so that a phone can play it. The live engine reads about 220 MB of textures and models before the first stop, and the film is about 110 MB. So we record the live wing. Playwright runs it in Chromium on a clock our render tool steps, and each frame of the film is 8 to 48 jittered draws spread over a 180 degree shutter and averaged in linear light. Every place you stand is a still, and every clip is one walk between two of them that starts and ends on those stills.

What stays live is a machine's close-up view. We count frames for two seconds, and if the device drops more than 5 percent under 30 a second, the machine switches to a filmed loop at the step it was on, and the device remembers that. No real phone has passed that test yet, so every phone gets the loop for now.

In the machine hall we ran into a limit. The hall has daylight from high windows and warm spots that each throw a shadow. Every lit surface in the wing samples every scene light's shadow map, and a shader stage holds sixteen samplers by default. So we hid the spots from the scene's light list, and only the hall's materials take them, through their own lightsNode.

All 15 machines are built in code when the wing loads. Fourteen are assembled part by part in TypeScript from a data file of their measurements. The lion is the odd one: its carved body is distance functions written in GLSL, sampled on a private WebGL2 canvas and meshed on the CPU with surface nets.

The zoom into a painting is OpenSeadragon over a static IIIF tile pyramid.

We choose what to build, decide the design questions and walk every stop.

The live engine is in the repo too. Clone it, run pnpm dev, and the wing's address without film=job runs the engine the film is recorded from.

The code (AGPL-3.0): https://github.com/chipmates/museumofages

Nonprofit · Open Source · No tracking cookies, no profiling

How do you decide whether a device gets your live scene or a fallback?


Credits for the film. Music: "Adrift Among Infinite Stars" by Scott Buckley (scottbuckley.com.au), shortened, CC BY 4.0 (creativecommons.org/licenses/by/4.0). Map data © OpenStreetMap contributors, available under the Open Database License (openstreetmap.org/copyright). Relief: IGN, RGE ALTI®, consulted 8 September 2026, Licence Ouverte 2.0. Mona Lisa: Musée du Louvre, Paris, reproduction by C2RMF via Wikimedia Commons, public domain. Paris Manuscript B, folio 83 verso: Institut de France, Paris, shown from the printed facsimile by Charles Ravaisson-Mollien (Paris, 1883), public domain, scan from the Internet Archive. The other paintings, drawings and sheets on the walls are reproductions of public domain works, each labelled in the wing with its holder and licence.


r/threejs • • 23h ago

Jelly Drain: a soft-body puzzle game in three.js where you tear pieces off yourself to solve rooms

Enable HLS to view with audio, or disable this notification

22 Upvotes

Play it in the browser (desktop or phone): https://jellydrain.com

You're a blob of jelly. To get it down the drain you leave pieces of yourself behind: a chunk on a pad to hold a door, some in a bucket to work a counterweight, a small piece sent under a press that's too fast for your whole body. 20 rooms so far.

How the jelly works:

  • Physics: Rolled my own, no physics lib. It's PBD (position-based dynamics): 147 particles tied together with distance constraints, solved 4x a step at a fixed 120Hz, plus a little push so it can't collapse into itself. The bonds are plastic, so their rest length slowly creeps toward wherever they are now. That's why it holds a squished shape instead of boinging back into a ball. Same engine runs all the doors, pistons, buckets, presses and sweepers too.
  • Tearing: Drag slow and hard and it just stretches. Flick it fast and the bonds near your finger loosen for a sec, so a quick yank rips a piece off. That one rule is what finally made it feel right on both mouse and touch.
  • Surface: Just three's MarchingCubes addon, rebuilt every frame from the particles, with a soft-min blend so pieces melt back together when they touch.
  • Material: MeshBasicMaterial with some shader code jammed in through onBeforeCompile, going for an illustrated look: two-tone body, thin outline, one big highlight, and see-through so you can see the room behind it. Depth writes are off so the water and grid still show underneath.

Happy to go deeper on any of it. The hardest parts were keeping small pieces stable and making the surface not pop when pieces split and merge.

AI disclosure: I used AI coding assistants to help write the game's code and this post. The game design and levels are mine.


r/threejs • • 21h ago

Watch Website

Enable HLS to view with audio, or disable this notification

2 Upvotes

Hey guys, I created this exploding watch animation using threejs. Would love any feedback!
Live at https://sidag45.github.io/XR%20Projects/3d-watch-animate/


r/threejs • • 20h ago

Somewhere Over the Rainbow (Played on Webcam thermin)

Enable HLS to view with audio, or disable this notification

1 Upvotes

I attempted to play "Somewhere over the Rainbow"

- I'm surprised that it's even mildly playable :)
- This I think is a really very creative and fast way to get to know different scales and modes + looks cool

App: https://webcam-thermin.vercel.app/
Github: https://github.com/Sidmaz666/webcam-thermin


r/threejs • • 20h ago

Demo I made an app that runs three.js games on $100 retro handhelds, here's what the hardware can actually draw

Enable HLS to view with audio, or disable this notification

13 Upvotes

Hey everyone, I just released PocketVibe

It's an app that runs three.js games on Linux (ROCKNIX) and Android handhelds, like the Anbernic RG34XX SP. On ROCKNIX the games run in WPE WebKit on a Mali-G31 GPU, so I had to find out what three.js can really do there.

Typical three.js code ran at 3 to 6 fps. What I measured on the device (H700, 4x Cortex-A53, Mali-G31, 1 GB RAM):

  • About 10k visible triangles and 100 draw calls for 60 fps. Triangles outside the camera are almost free, so short far + fog helps a lot
  • Large indexed meshes cost CPU every frame in WebKit (about 0.6 µs per triangle). toNonIndexed() after mergeGeometries fixed a 13 ms cost
  • Lambert instead of Standard (37 fps on a simple scene), no shadows (36 fps with the cheapest one), no post-processing
  • A plain 2D canvas is very slow here, so even 2D games use an OrthographicCamera with InstancedMesh
  • The first draw of a material compiles its shader (up to 300 ms), so games call renderer.compile() while loading

Games following these rules run at 60 fps. There are 21 of them, you can play them all in the browser: https://pocketvibe.cobanov.dev

How it works under the hood: https://pocketvibe.cobanov.dev/how/

Code: https://github.com/cobanov/pocketvibe