Virtual Reality Art Installations

Exploring the human condition through immersive digital environments that respond to movement and emotion.

🚀 View Development Process

Crafting Digital Worlds

This project explores how real-time physics simulations and motion tracking can create emotional experiences in virtual spaces. The result is an evolving art installation where visitors become part of the artwork.

The Creation Process

Motion Tracking

Using WebXR and Intel RealSense cameras, the system captures spatial interactions to influence the virtual environment. Each movement alters gravity and lighting in real-time.

Environmental Storytelling

The installation tells stories through dynamic landscapes that evolve based on visitor interactions. Emotional states are mapped to visual and auditory elements to create personalized experiences.

Code Example

// WebXR motion tracking
const session = await navigator.xr.requestSession('immersive-ar');
session.requestReferenceSpace('unbounded');

const frameOfRef = await session.requestReferenceSpace('local');
session.requestAnimationFrame((time, xrFrame) => {
  const pose = xrFrame.getDevicePose(frameOfRef);
  updateEnvironment(pose.position);
});

This snippet demonstrates how movement data from WebXR is used to dynamically alter virtual environments based on user proximity.

Installed Experiences

Emotional Landscapes

Environments that shift between calm and chaotic states based on collective viewer engagement.

🔍 View Technical Overview

Memory Halls

Navigable archives of digital memories where users can contribute and discover stories from others.

🔍 Explore Installation

Gravity Dreams

Physics-defying spaces where visitors can alter gravity and create floating structures.

🔍 View Neural Simulations

Solving Real-Time Challenges

The biggest technical hurdle was maintaining 120fps while handling hundreds of physics simulations alongside motion tracking. We achieved this through:

  • Web workers for offloading physics calculations
  • GPU-accelerated particle engines using WebGL
  • Selective rendering based on viewer attention metrics

Performance Optimization

By implementing occlusion culling and spatial partitioning algorithms, we reduced rendering overhead by 38% while maintaining visual fidelity.

// Occlusion culling
function updateCulling(camera) {
  const visibleObjects = spatialIndex.query(camera.frustum);
  scene.children.forEach(obj => {
    obj.visible = visibleObjects.includes(obj.id);
  });
}

Want to Experience These Works?

These installations have been showcased at international art festivals. If you'd like to host or experience one, let me know.