Close

MAGIC VR MUSEUM

Unity · VR Prototype

Demo

Project

Magic VR Museum

Project Details

Tools Used

Unity · C# · URP · XR Interaction Toolkit · Blender · Modular Asset Generation

About the project

A VR "museum of magic" built in Unity, where players walk a procedurally generated hall, pick up a wand, and cast elemental spells by drawing gestures in the air. The player explores a hex-shaped museum with a central entrance hall and five themed elemental rooms (Fire, Water, Earth, Air, and one more), each holding a glowing grimoire on a display podium. Picking up a grimoire attunes the player to that element; drawing a recognized shape with the wand casts the corresponding spell, complete with a projectile and impact VFX.

Development Time: 2026

Project Role: Solo Developer · Gameplay / Tools Programming

Team Size
1
Engine Used
Unity 6000.3.22f1 (URP)
Genre
VR · Magic Museum
Platform
VR

Notable Engineering Work

Modular Assets in Blender

  • Modeled a modular asset kit in Blender — walls, pillars, archways, lamps, and display podiums — designed to snap together and be reused across every room.
  • The kit feeds the procedural map generator, so the whole museum is built from a small set of source meshes.
  • Topology was kept clean for in-engine use; see the topology screenshots in the gallery.

Idempotent World-Building Tools

  • The museum layout and the spell/wand prototype are each generated by a single editor menu command that tears down and rebuilds its root object from scratch.
  • The whole map can be regenerated at any time without manual cleanup.

Layout Persistence Across Regeneration

  • A save-slot system captures every generated object's transform (and manually toggled lamp on/off state) into a ScriptableObject asset.
  • Layout is restored automatically after each rebuild, so hand-tuned placement survives regenerating the procedural map.

Gesture-Based Spellcasting

  • Wand movement is sampled into a point cloud, resampled and normalized, then matched against a template library using the $P recognizer.
  • Recognition is gated by which grimoire (element) the player is currently holding.

Spline-Based Corridor Geometry

  • Corridor walls are generated by extracting the floor mesh's outline, simplifying it, and fitting Catmull-Rom splines.
  • Result: smooth curved walls and hard corners without hand-placed geometry.

Static-Batching-Aware Interactables

  • Diagnosed and fixed a Unity rendering bug where procedural static batching baked pickup items' visual mesh position at build time.
  • The rendered mesh had silently decoupled from the interactable's actual grabbable transform.

Tools & Technologies

Unity
Blender
  • Engine — Unity 6000.3.22f1, Universal Render Pipeline (URP)
  • VR — XR Interaction Toolkit 3.5.1 (XRGrabInteractable, near/far interactors), XR Interaction Simulator for headset-free testing
  • Gesture recognition — from-scratch $P Point-Cloud recognizer, pure C#, no ML or third-party packages, classifying gestures drawn in 3D space
  • Blender — modular museum kit (walls, pillars, archways, lamps, podiums) modeled for clean, reusable topology
  • Procedural generation — custom editor tooling building the floor, curved corridor walls, pillars, archways, wall lamps, display podiums, and post-processing volumes from a small set of source meshes

Status

Playable prototype: locomotion, grab/pickup interactions, procedural map generation, gesture-based spellcasting, and elemental VFX are all functional and covered by an automated EditMode test suite.