The client-side code for chutvrc, forked from Mozilla Hubs, an online 3D collaboration platform that works for desktop, mobile, and VR platforms.
- Currently, only humanoid avatars made by ReadyPlayerMe or VRoid (with filename extension changed from .vrm to .glb) were confirmed to be compatible to this feature.
- Avatars made with other tool may not behave normally for now, and we will keep trying to improve the implementation to accommodate more kinds of full-body humanoid avatars.
- There may also be problems in Inverse Kinematics(IK) for full-body avatars, especially around wrists. We are planning for improvements.
- Currently tests are mainly done using Meta Quest 3, using controller or bare hand. Hand tracking implementation from other devices are planned for further development.
- Management of avatars to BitECS were implemented independent from Mozilla Hubs' official BitECS implementation.
- Migration of implementation with the Mozilla Hubs' BitECS implementation is planned.
- Feature for third-party WebRTC SFU solutions for environments hard to host and maintain performance with Dialog (Dialog is set as the default preference)
- chutvrc has implementation of Sora, a proprietary service provided by Shiguredou inc., currently available only for customers in Japan (Check their website for details)
-
Please register on your own and fill in the value of your Sora project id and Sora bearer token at the Server Settings in the admin page
-
You can also set them in Reticulum's secret file (e.g.
config/dev.secret.exs
) as follows:use Mix.Config config :ret, Ret.SoraChannelResolver, bearer_token: "YOUR_SORA_CLOUD_BEARER_TOKEN", project_id: "YOUR_SORA_CLOUD_PROJECT_ID"
-
If it is enabled at the admin page, Room manager can choose which WebRTC SFU to use for each room at room edit menu.
-
At the Server Settings in the admin page, admin can set the default SFU for all newly created rooms and the availability to switching SFU for every room.
- This feature is adapted to both Dialog and Sora.
- With this feature enabled, avatar transforms will be transmitted through DataChannel no matter you are using Dialog or Sora as the SFU.
- It is an experimental implementation considering it is logical to have body language and voice real-time communication transmitted within the same protocol.
Chutvrc is tested using the following repositories.
- client-side: chutvrc
- server-side: chutvrc reticulum
- WebRTC-side: chutvrc dialog
- editor-side: chutvrc spoke
Please check this gist for local build / development.
Build instruction are planned to be released soon.
Until that, you can refer to this instruction by albirrkarim.
- chutvrc is sponsored and developed for CHANGE Project, by a research team at the Virtual Reality Educational Research Center, The University of Tokyo.
- You can support this development through the GitHub Sponsor button which is linked to the UTokyo Foundation.
- If you want to support this project only, please write in the donation purpose "For Virtual Reality Educational Research Center, chutvrc related research/educational purpose."
- Please be aware that 30% of the amount of donation will be used by the university administration office even if you write the donation purpose.
Below is the original README for Mozilla Hubs, which most information are also useful for chutvrc.
It will be updated to migration information considering the current status of Mozilla Hubs, which is planned to shutdown at the end of May 2024.
If you would like to run Hubs on your own servers, check out Hubs Cloud.
If you would like to deploy a custom client to your existing Hubs Cloud instance please refer to this guide.
If you would like to contribute to the main fork of the Hubs client please see the contributor guide.
If you just want to check out how Hubs works and make your own modifications continue on to our Quick Start Guide.
Install NodeJS if you haven't already. We use 16.16.0 on our build servers. If you work on multiple javascript projects it may be useful to use something like NVM to manage multiple versions of node for you.
Run the following commands:
git clone https://github.com/mozilla/hubs.git
cd hubs
# nvm use v16.16.0 # if using NVM
npm ci
npm run dev
The backend dev server is configured with CORS to only accept connections from "localhost:8080", so you will need to access it from that host. To do this, you likely want to add "localhost" and "hubs-proxy.local" to the local "hosts" file on your computer:
127.0.0.1 localhost
127.0.0.1 hubs-proxy.local
Then visit https://localhost:8080 (note: HTTPS is required, you'll need to accept the warning for the self-signed SSL certificate)
Note: When running the Hubs client locally, you will still connect to the development versions of our Janus WebRTC and reticulum servers. These servers do not allow being accessed outside of localhost. If you want to host your own Hubs servers, please check out Hubs Cloud.
The Hubs documentation can be found here.
Join us on our Discord Server or follow us on Twitter.
Read our contributor guide to learn how you can submit bug reports, feature requests, and pull requests.
We're also looking for help with localization. The Hubs redesign has a lot of new text and we need help from people like you to translate it. Follow the localization docs to get started.
Contributors are expected to abide by the project's Code of Conduct and to be respectful of the project and people working on it.
- Reticulum - Phoenix-based backend for managing state and presence.
- NAF Janus Adapter - A Networked A-Frame adapter for the Janus SFU service.
- Janus Gateway - A WebRTC proxy used for centralizing network traffic in this client.
- Janus SFU Plugin - Plugins for Janus which enables it to act as a SFU.
- Hubs-Ops - Infrastructure as code + management tools for running necessary backend services on AWS.
Mozilla and Hubs believe that privacy is fundamental to a healthy internet. Read our privacy policy for more info.
Hubs is licensed with the Mozilla Public License 2.0