Immersive 3D interface with VR/AR support using Three.js and WebXR API. Experience cutting-edge web technologies in a fully interactive 3D environment.
Note: Simplified version of interface developed for decentralized OS prototype (2023-2024).
Note: GitHub Pages deployment is not currently configured. To view the project, please clone the repository and run it locally (see Quick Start section). =
- Desktop Navigation - WASD + mouse controls with pointer lock
- VR Support - Full WebXR VR with Oculus Quest, HTC Vive, and other headsets
- AR Support - Mobile AR experiences with hit-testing
- 60 FPS Performance - Optimized rendering with real-time stats
- Interactive Objects - Click/hover interactions with visual feedback
- GLTF Model Loading - Support for 3D model imports
- Responsive Design - Mobile and desktop optimized
- Advanced Materials - Phong, Lambert, and custom shaders
- Dynamic Lighting - Directional, ambient, and point lights with shadows
- Performance Monitoring - Real-time FPS and mode tracking
- Modular Architecture - Clean, maintainable codebase
- Cross-browser Support - WebXR polyfill for unsupported browsers
| Platform | Movement | Interaction | Special |
|---|---|---|---|
| Desktop | WASD keys | Mouse click | Pointer lock for look |
| VR | Controller joysticks | Trigger press | Hand tracking (optional) |
| AR | Touch screen | Tap to place | Device motion |
- Three.js r150 - 3D graphics library
- WebXR Device API - VR/AR browser API
- GLTF Loader - 3D model loading
- Node.js - Server runtime (≥14.0.0)
- HTTP Server - Static file serving with CORS
- ES6 Modules - Modern JavaScript architecture
- Chrome 79+ (Desktop VR)
- Firefox 85+ (WebXR support)
- Safari 14.1+ (iOS AR)
- Edge 79+ (WebXR enabled)
- Mobile browsers (AR support)
- Node.js ≥ 14.0.0
- Modern web browser with WebXR support
- VR headset (optional)
-
Clone the repository
git clone https://github.com/lucien-vallois/webxr-3d-interface.git cd webxr-3d-interface -
Install dependencies (if any)
npm install
-
Start the development server
npm start # or node server.js -
Open in browser
http://localhost:8000
python -m http.server 8000webxr-3d-interface/
├── index.html # Main HTML file
├── app.js # WebXR application logic
├── styles.css # UI styling
├── server.js # Development server
├── models/ # 3D model assets (GLTF)
├── assets/ # Project assets (images, etc.)
├── package.json # Project configuration
├── README.md # This file
├── LICENSE # MIT license
└── .gitignore # Git ignore rules
WebXRInterface
├── Scene Management
├── Renderer Setup
├── Lighting System
├── Object Creation
├── Controls (Desktop/VR/AR)
├── Event Handling
├── Performance Monitoring
└── Model Loading- Scene Setup - THREE.Scene with optimized camera and renderer
- Lighting - Multi-light setup with shadow mapping
- Interactions - Raycasting for object selection
- XR Integration - WebXR session management
- Performance - Real-time stats and optimization
npm start # Start development server
npm run dev # Start development server (alias)
npm run serve # Python HTTP server alternativeThe project uses CDN-hosted dependencies for optimal loading. No build process required for basic deployment.
- VR Testing: Use browser developer tools WebXR emulation
- AR Testing: Use mobile device or browser AR emulation
- Cross-browser: Test on multiple browsers for compatibility
We welcome contributions! Please see our Contributing Guide for details.
- Fork the repository
- Create a feature branch
- Make your changes
- Test across browsers
- Submit a pull request
- Target FPS: 60 FPS on modern hardware
- Draw Calls: Optimized for < 100 objects
- Memory Usage: < 50MB for basic scene
- Load Time: < 2 seconds initial load
- Compatibility: 90%+ modern browser support
- Server implements path traversal protection
- CORS headers configured for local development
- No external dependencies for core functionality
- Static file serving with security checks
This project is licensed under the MIT License - see the LICENSE file for details.
- Three.js community for excellent documentation
- WebXR Device API specification authors
- Open source contributors to WebXR ecosystem
- Issues: GitHub Issues
- Discussions: GitHub Discussions
Lucien Vallois
- GitHub: @lucien-vallois