Futuroscope
Type
Tech Stack

Since 2020, I have been creating the online, 3D exhibition for the graduating Media Design students of Budapest Metropolitan University (METU). This annual project, called Futuroscope, provides a digital archive of their diploma works. Each year, I refine the concept and implement new features, ensuring a continuously evolving and engaging virtual experience. The latest iteration utilizes a brand-new engine, enabling the integration of all past exhibitions and facilitating ongoing expansion, along with significant UI/UX enhancements.
🎯 The aim of the project
Creating a virtual exhibition showcasing the diploma projects of METU Media Design graduates, where visitors can explore creative works in an interactive 3D space without having to be physically present.
Futuroscope's goal was simple: "How can we create a memorable, modern, and accessible experience that truly represents the work of the students?"
đź§ From idea to implementation
The challenge
The problem with traditional diploma exhibitions is that:
- Available for a limited time
- Geographically limited
- Online alternatives (gallery, PDF catalog) do not provide a genuine "exhibition experience."
The solution
A digital reconstruction of a real building where visitors can move around freely, explore students' stands, and open portfolios with a single click.
🛠️ Technology Stack
Frontend
Technológia | Célzottan használt funkciók |
|---|---|
React 19Â +Â TypeScript | Component-based architecture, type safety |
Vite | Lightning-fast development environment and build |
React Three Fiber + Three.js | Displaying and interacting with the 3D scene |
@react-three/rapier | Real-time physical simulation (collisions, gravity) |
@react-three/drei | Pre-made 3D helper components (camera, text, textures) |
Zustand | Lightweight state management |
TailwindCSS | Fast and flexible UI styles |
react-i18next | Hungarian and English language interface |
Radix UI | Accessible UI primitives (dialogs, tooltips) |
3D modellezés
Eszköz | Felhasználás |
|---|---|
Blender | Complete 3D modeling of the exhibition space, UV mapping, animations |
gltfjsx | Converting GLTF/GLB models into React components |
Design
Eszköz | Felhasználás |
|---|---|
Figma | UI designs, wireframes, component design, vector elements |
Photoshop | Textures, cover images, avatars |
🏛️ The Structure of 3D Space
The exhibition space is a reworked model of one of METU's actual buildings, which I created in Blender. The model consists of several layers:
1/models/2├── futuroscope-model-2024.glb # Main building model (~2.8 MB)3├── futuroscope-model-2024-canvases.glb # Exhibition stands4├── futuroscope-model-2024-collisions.glb # Collision mesh5└── futuroscope-model-2024-metu-statue.glb # METU statue
Why separate files?
For performance optimization, I separated:
- Visual elements – what the visitor sees
- Collision meshes – used by the physics engine (simplified geometry)
- Interactive elements – linked to portfolios
This means that physical calculations are not performed on a detailed model with a high number of polygons, but on a significantly simplified version, ensuring a smooth experience on the website.
🎮 Character Movement System
Visitors explore the space from a first-person perspective. The motion system consists of several components:
Control modes
- Keyboard + Mouse (desktop)
- WASD or arrow keys to move
- Mouse drag to look around
- Mobile touch
- Virtual joystick for movement
- Touch camera control
- Automatic walk – With a click, the visitor walks to the selected point
Physical system
The character moves in space using a combination of RigidBody + CapsuleCollider:
1<RigidBody2 type="dynamic"3 mass={1}4 position={[27.75, 6, 8.4]}5 enabledRotations={[false, false, false]}6 friction={1}7 linearDamping={0.5}8>9 <CapsuleCollider args={[0.5, 0.25]} />10</RigidBody>
This ensures that:
- Visitors should not walk over walls
- Stop with a natural deceleration
- Gravity should have a realistic effect on it
🖼️ Display portfolios
Each student's work is displayed on a separate canvas in the space. When a visitor walks close to a canvas:
- The system detects proximity (collision sensor)
- A floating label appears with the name of the work
- The canvas "lights up" (emissive lighting animation)
- Click to open the entire portfolio
Portfolio types
The system supports multiple media types:
- YouTube videos – Embedded player
- PDF documents – Interactive reader
- Image galleries – Optimized in WebP format
🌍 Multilingualism
The exhibition is available in Hungarian and English. Using react-i18next, I store all text in separate JSON files:
1/locales/2├── hu.json # Hungarian texts3└── en.json # English texts
This applies not only to UI elements, but also to the titles and descriptions of students' work.
📱 Embeddability
The exhibition can also be embedded into other websites (e.g., the university's website) using a simple JavaScript module:
1<div class="futuroscope-embed" data-year="2024"></div>2<script src="futuroscope-embed.js"></script>
This automatically creates an iframe and handles fullscreen mode, allowing it to be displayed on any partner site.
⚡ Performance optimizations
Texture loading
- CustomÂ
TextureLoader for lazy loading - Compressed JPG cover images
- Fallback images in case of loading errors
3D scene
lazy() components for ScenesSuspense wrapper with animated loadingCanvasframeloop stops when portfolio is active (GPU saving)
Model scaling
- Meshes optimized in Blender
- Draco compression on GLB files
🎬 Summary
The Futuroscope project is an exciting example of how modern web technologies can be combined with 3D visualization and physical simulation.
The goal was to ensure that students' work would not appear in a boring PDF, but rather in a memorable, interactive experience — and I think we succeeded.
If you have a similar project or would like to create a unique 3D web experience, feel free to contact us!
Let's Create
Something Great
Have a project in mind? Whether it's a web application or visual production, I'd love to hear about it.