HarmonyXR is a project to implement real-time music performance in the virtual reality environment.
HarmonyXR is a project that uses WebXR. It builds a web server with Node.js, implements 3D graphics with Three.js, and implements real-time communication between users with WebRTC using PeerJS.
- Virtual Music Stage
- Real-time multi-user experience
- Real-time Voice Chat
- Cross platform (Any platform you can use a browser that supports WebXR.)
WebXR only supports HTTPS environment, so for testing, you need to issue an SSL certificate or enable #unsafely-treat-insecure-origin-as-secure
in the chrome flags page.
cd <project directory>
npm install
node server.js
It builds a web server using Nodejs and communicates with users using Socket.io to implement room functions and manage the user's connection status.
Then, real-time communication between users is implemented using WebRTC technology using PeerJS.
At this time, the real-time voice chat and location information are synchronized through user-to-user communication. This P2P communication is defined in /public/networking.js
.
HarmonyXR implemented 3D graphics using Three.js.
To implement various things, MusicRoom, Partner, Piano, Drum, Guitar objects, etc. were defined.
We also implemented collision handling between controllers and instruments using the Box3 object of Three.js.
The 3D models were used free resources from Sketchfab.
- Update human models
- Optimize animation and rendering, Improve FPS
- There is no wall. it would be better to add wooden or cementic wall would be better to added
- Add More Instuments
Beomgi Kim | chromato99@gmail.com
Doyeon Hyun | 118ssun@naver.com
Siwoo Lim | siwoo5530@gmail.com
Jaejun Park | jpark3971@gmail.com
3D Models from Sketchfab
Icons from Flaticon