Futuroscope
Type
Tech Stack

2020 óta én készítem a Budapesti Metropolitan Egyetem (METU) végzős Média Design hallgatóinak online 3D-s kiállítását. A Futuroscope névre hallgató éves projekt a diplomamunkák digitális archívumaként szolgál. A koncepciót évről évre finomítom és új funkciókkal egészítem ki, így biztosítva a folyamatosan fejlődő és izgalmas virtuális élményt. A legújabb verzió már egy teljesen új motorra épül, amely lehetővé teszi az összes korábbi tárlat integrálását és a rendszer folyamatos bővítését, valamint jelentős UI/UX fejlesztéseket is tartalmaz.
🎯 A projekt célja
A METU Média design szakán végzett hallgatók diplomamunkáit bemutató virtuális kiállítás létrehozása, ahol a látogatók egy interaktív 3D térben fedezhetik fel a kreatív alkotásokat – anélkül, hogy fizikailag jelen kellene lenniük.
A Futuroscope célja egyszerű volt: „Hogyan hozhatunk létre egy emlékezetes, modern és könnyen hozzáférhető élményt, ami méltón reprezentálja a hallgatók munkáját?"
🧠 Az ötlettől a megvalósításig
A kihívás
A hagyományos diplomakiállítások problémája, hogy:
- Korlátozott időintervallumban elérhetőek
- Földrajzilag behatároltak
- Az online alternatívák (galéria, PDF katalógus) nem adnak valódi „kiállítás-élményt"
A megoldás
Egy valós épület digitális rekonstrukciója, ahol a látogatók szabadon mozoghatnak, felfedezhetik a hallgatók állványait, és egyetlen kattintással megnyithatják a portfóliókat.
🛠️ Technológiai Stack
Frontend
Technológia | Célzottan használt funkciók |
|---|---|
React 19 + TypeScript | Komponens alapú architektúra, típusbiztonság |
Vite | Villámgyors fejlesztői környezet és build |
React Three Fiber + Three.js | A 3D jelenet megjelenítése és interakciói |
@react-three/rapier | Valósidejű fizikai szimuláció (ütközések, gravitáció) |
@react-three/drei | Előregyártott 3D segítő komponensek (kamera, szöveg, textúrák) |
Zustand | Könnyűsúlyú állapotkezelés |
TailwindCSS | Gyors és rugalmas UI stílusok |
react-i18next | Magyar és angol nyelvű felület |
Radix UI | Akadálymentes UI primitívek (dialógusok, tooltipek) |
3D modellezés
Eszköz | Felhasználás |
|---|---|
Blender | A kiállítótér teljes 3D modellezése, UV mapping, animációk |
gltfjsx | GLTF/GLB modellek React komponensekké alakítása |
Design
Eszköz | Felhasználás |
|---|---|
Figma | UI-tervek, vázlatok, komponens-tervezés, vektoros elemek |
Photoshop | Textúrák, borítóképek, avatárok |
🏛️ A 3D tér felépítése
A kiállítótér a METU egyik valós épületének átdolgozott modellje, amelyet Blenderben készítettem el. A modell több rétegből áll:
1/models/2├── futuroscope-model-2024.glb # Fő épület model (~2.8 MB)3├── futuroscope-model-2024-canvases.glb # Kiállítási állványok4├── futuroscope-model-2024-collisions.glb # Ütközési mesh5└── futuroscope-model-2024-metu-statue.glb # METU szobor
Miért külön fájlok?
A teljesítmény optimalizálás érdekében szétválasztottam:
- Vizuális elemeket – amit a látogató lát
- Ütközési mesheket – amivel a fizikai motor dolgozik (egyszerűsített geometria)
- Interaktív elemeket – amihez a portfóliók kapcsolódnak
Ez azt jelenti, hogy a fizikai számítások nem a részletes, magas poligonszámú modellen futnak, hanem egy jelentősen leegyszerűsített változaton – így a weboldalon is gördülékeny marad az élmény.
🎮 Karakter mozgásrendszer
A látogató első személyű nézetből fedezi fel a teret. A mozgás rendszer több komponensből áll:
Irányítási módok
- Billentyűzet + Egér (asztali)
- WASD vagy nyílbillentyűk a mozgáshoz
- Egérhúzás a körbenézéshez
- Mobil érintés
- Virtuális joystick a mozgáshoz
- Érintéses kameravezérlés
- Automatikus séta – Kattintásra a látogató odasétál a kiválasztott ponthoz
Fizikai rendszer
A karakter egy RigidBody + CapsuleCollider kombinációval mozog a térben:
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>
Ez biztosítja, hogy:
- A látogató ne sétáljon át falakon
- Természetes lassulással álljon meg
- A gravitáció reálisan hasson rá
🖼️ Portfóliók megjelenítése
Minden hallgató munkája egy-egy vásznon (canvas) jelenik meg a térben. Amikor a látogató közel sétál egy vászonhoz:
- A rendszer érzékeli a közelséget (collision sensor)
- Megjelenik egy lebegő címke a mű nevével
- A vászon „felizzik" (emissive lighting animáció)
- Kattintásra megnyílik a teljes portfólió
Portfólió típusok
A rendszer többféle médiatípust támogat:
- YouTube videók – Beágyazott lejátszó
- PDF dokumentumok – Interaktív olvasó
- Képgalériák – Optimalizált WebP formátumban
🌍 Többnyelvűség
A kiállítás magyar és angol nyelven is elérhető. A react-i18next segítségével minden szöveget külön JSON fájlokban tárolok:
1/locales/2├── hu.json # Magyar szövegek3└── en.json # Angol szövegek
Ez nemcsak a UI elemekre vonatkozik, hanem a hallgatók munkáinak címeire és leírásaira is.
📱 Beágyazhatóság
A kiállítás beágyazható más weboldalakba is (pl. az egyetem honlapjára) egy egyszerű JavaScript modul segítségével:
1<div class="futuroscope-embed" data-year="2024"></div>2<script src="futuroscope-embed.js"></script>
Ez automatikusan létrehoz egy iframe-et és kezeli a fullscreen módot is – így bármely partnerodalon megjeleníthető.
⚡ Teljesítmény optimalizálások
Textúra betöltés
- Custom
TextureLoadera lazy loading-hoz - Kompresszált JPG borítóképek
- Fallback képek betöltési hibák esetén
3D jelenet
lazy()komponensek a Scene-ekhezSuspensewrapper animált betöltéssel- A
Canvasframeloop-ja leáll, amikor portfólió aktív (GPU kímélet)
Model méretezés
- Blenderben optimalizált mesh-ek
- Draco compression a GLB fájlokon
🎬 Összefoglalás
A Futuroscope projekt egy izgalmas példa arra, hogyan lehet a modern webtechnológiákat ötvözni a 3D vizualizációval és a fizikai szimulációval.
A cél az volt, hogy a hallgatók munkái ne egy unalmas PDF-ben jelenjenek meg, hanem egy emlékezetes, interaktív élményben – és úgy gondolom, ez sikerült.
Ha hasonló projekted van, vagy szeretnél egyedi 3D webes élményt létrehozni, keress bátran!