VIVERSE World Explorer is a browser-based 3D Earth explorer built for the HTC VIVERSE spatial platform. At its core it does something deceptively simple — let you fly around the real planet in 3D — but the technical depth required to make that work smoothly in a browser is substantial. The experience uses Google's Photorealistic 3D Tiles API, which streams real-world 3D mesh data captured by satellite imagery and aerial photogrammetry, reconstructing the Earth's surface in extraordinary geometric and photographic detail.
The first render mode is straight photorealistic: you see the world as it is, with satellite-accurate textures draped over the photogrammetric geometry. Flying over mountain ranges, coastal cities, or desert terrain in this mode has a genuinely vertiginous quality — the fidelity is high enough that the brain registers it as real.
The second render mode is where the project becomes something genuinely original: a real-time Minecraft-style voxelisation of the incoming 3D tile data. As tiles stream in, the geometry is converted on the fly into a voxel grid — each voxel sized and coloured to approximate the underlying mesh surface. The effect is remarkable: you're looking at photorealistic Google Earth data, but rendered as a procedurally-generated block world. Fly over Manhattan and you see the city reimagined as an infinite Minecraft megabuild.
VIVERSE deployment was handled via viverse-cli, integrating the experience into the platform's world system with spatial audio and avatar presence. The result is a project that works as a solo browser experience and as a shared social space — you can explore the planet in a voxel block world with other people.
The 3D Tiles specification is complex: a hierarchical LOD system where each tile can contain thousands of sub-tiles, each with its own geometric and texture data, all streamed asynchronously based on camera position and screen-space error metrics. Claude wrote the majority of the tile loading and management system — the priority queue that decides which tiles to load next, the tile cache that prevents memory exhaustion by evicting distant tiles, and the transition system that fades tiles in as they load to avoid pop-in artefacts.
The LOD management logic in particular required careful thought: determining when a parent tile can be replaced by its children (more detailed), and when to revert to a parent tile when the camera moves away. Claude designed the screen-space error calculation that drives these decisions, producing a system that maintains consistent geometric detail regardless of altitude.
The real-time voxelisation of incoming 3D mesh tiles was the most technically challenging feature of the project, and it was designed collaboratively with Claude over multiple sessions. The core problem: take a triangle mesh with photorealistic textures, and convert it in real-time to a uniform voxel grid with representative colours, without blocking the rendering thread.
Claude's approach used a spatial hashing scheme to bin each triangle's vertices into voxel buckets, then a colour sampling pass that reads average texture colour for each occupied voxel. The whole operation runs asynchronously in a Web Worker so the main rendering thread remains smooth. The colour quantisation — mapping continuous texture colours to a discrete Minecraft-palette — was also iterated with Claude, producing a palette that feels authentically like the game without requiring manual colour selection.
A TypeScript and Three.js stack with Google's 3D Tiles API at its heart, deployed to VIVERSE via CLI tooling.