A Virtual Reality application for monitoring 3D printers in real-time. Experience your 3D prints in an immersive VR environment with live toolhead tracking and G-code visualization.
- ๐ฅฝ VR Experience: Full WebXR support for VR headsets (Oculus, HTC Vive, etc.)
- ๐ก Real-time Monitoring: Live connection to 3D printers via WebSocket
- ๐ฏ Toolhead Tracking: Visual representation of nozzle position in 3D space
- ๐ G-code Visualization: 3D rendering of print paths and extrusion
- ๐ฎ Hand Controllers: Oculus Touch controls with blink locomotion
- โก Live Updates: Real-time printer status and progress monitoring
- Node.js 16+ with npm
- 3D Printer with Moonraker API (Klipper/Mainsail/Fluidd)
- VR Headset (optional for desktop viewing)
- Modern Browser with WebXR support
-
Clone the repository
git clone https://github.com/msitarzewski/nozzleverse.git cd nozzleverse -
Install dependencies
npm run setup
-
Configure your printer
cp .env.example .env # Edit .env with your printer's IP address -
Start the development server
npm run dev
-
Open in browser
- Navigate to
http://localhost:8001 - Put on your VR headset or use desktop mode
- Navigate to
Edit .env file to configure your setup:
# Your 3D printer's IP address
PRINTER_HOST=192.168.1.233
PRINTER_PORT=80
# Server settings
SERVER_PORT=8001
# VR display settings
VR_SCALE_FACTOR=0.1
TOOLHEAD_COLOR=red- Klipper with Moonraker API
- Mainsail
- Fluidd
- Any printer with Moonraker WebSocket API
- Connect your VR headset
- Open the application in a WebXR-compatible browser
- Enter VR mode when prompted
- Use hand controllers to navigate around the virtual print bed
- Watch your print progress in real-time!
- Use mouse to look around
- WASD keys to move
- Observe printer status and toolhead movement
- Blink Locomotion: Point and click to teleport
- Hand Tracking: Natural hand movements for interaction
- Real-time Updates: Automatic connection to printer
npm run dev # Start development server
npm run stop # Stop running server
npm run build # Run lint and config check
npm run lint # Check code syntax
npm run test-server # Test if server is running
npm run logs # View server logsnozzleverse/
โโโ server.js # Node.js Express server with WebSocket proxy
โโโ config.js # Configuration management
โโโ gcode.html # VR application frontend
โโโ js/
โ โโโ GCodeLoader.js # G-code parsing and visualization
โโโ gcodes/ # G-code files directory
โโโ .env.example # Configuration template
โโโ .nvmrc # Node.js version specification
โโโ eslint.config.js # Code linting configuration
โโโ README.md
graph TD
A[VR Client] -->|WebSocket| B[Node.js Server]
B -->|Proxy| C[3D Printer Moonraker]
A -->|Loads| D[G-code Files]
A -->|Renders| E[Three.js Scene]
E -->|Updates| F[VR Headset]
๐ Connection Problems
# Check if printer is accessible
ping 192.168.1.233
# Verify Moonraker is running
curl http://192.168.1.233/server/info๐ฅ๏ธ VR Not Working
- Ensure WebXR is enabled in browser
- Check VR headset connection
- Try desktop mode first to verify functionality
๐ G-code Files Not Loading
- Verify files are in
/gcodesdirectory - Check file permissions
- Ensure printer is actively printing
๐ Server Issues
# Check JavaScript syntax and style
npm run lint
# View server logs
npm run logs
# Test configuration
npm run check-config
# Check if server is running
npm run test-serverEnable debug logging in .env:
DEBUG=true
LOG_LEVEL=debug- Input validation for WebSocket messages
- Rate limiting for WebSocket connections
- SSL/TLS support for production deployments
- Multi-printer configuration support
- G-code parsing caching system
- Progressive loading for large G-code files
- WebSocket message throttling
- Optimized Three.js rendering pipeline
- Connection status indicators
- Automatic WebSocket reconnection
- Loading states and progress bars
- Printer status dashboard (temperatures, bed level)
- Print progress visualization on model
- Multi-language support
- Hand gesture controls for zoom/pan
- Layer-by-layer visualization controls
- Teleportation boundaries and safety zones
- Voice commands for common actions
- Haptic feedback for interactions
- REST API for printer management
- Database storage for print history
- Plugin system for custom visualizations
- Mobile app companion
- Cloud synchronization
- Docker containerization
- Kubernetes deployment manifests
- Monitoring and alerting
- Backup and recovery procedures
We welcome contributions! Here's how to get started:
- Fork the repository
- Create a feature branch:
git checkout -b feature-name - Make your changes and test thoroughly
- Follow code style: Run
npm run lint - Submit a pull request with detailed description
- Follow existing code conventions
- Add tests for new features
- Update documentation for changes
- Test with real printer hardware when possible
MIT License - see LICENSE file for details.
- A-Frame - WebXR framework
- Three.js - 3D graphics library
- Node.js - JavaScript runtime
- Express - Web application framework
- Moonraker - Klipper API server
- 3D Printing Community - Inspiration and feedback
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- Documentation: Wiki
Made with โค๏ธ for the 3D printing and VR communities