TransceiVR is a package that enables asymmetric communication within Unity VR projects, turning them into collaborative virtual environments. External users can navigate through the VR scene and place depth corrected annotations in the VR scene. This package uses the Unity Render Streaming package and WebRTC.
- Two external users
- Depth corrected world based annotations
- Object selection
- Scene navigation
- Place target points
- C# server to handle input from Web Client
- Unity Render Streaming Package [https://github.com/Unity-Technologies/UnityRenderStreaming]
- Works with Unity 2019.4 or 2020.3, or any version compatible with Unity RenderStreaming
- Open Unity Project (VR enabled optional) and Unity Package Manager
- Import
Unity RenderStreaming
from the Unity Package Manager in the editor (You may have to selectShow preview packages
under theAdvanced
tab)
- Download this Github repository (web app and Unity package)
- Import the TransceiVR unity package (Assets > Import Package > Custom Package)
- Install the Newtonsoft.JSON package from the package manager by selecting (+ > Add package from git URL) and entering https://github.com/jilleJr/Newtonsoft.Json-for-Unity.git#upm
- Install and import the Quick Outline package from the Unity Asset Store: https://assetstore.unity.com/packages/tools/particles-effects/quick-outline-115488
- Open the TransceiVR folder and navigate to the
Prefabs
folder - Drag and drop the
TransceiVR_Utilities
prefab into your scene - Select the
AnnotationLayerQuad
prefab and add a new layer calledAnnotationPlaneLayer
- Position the External User Cameras in proper locations in your scene
- In the Hierarchy, move the
AnnotationWindow
gameobject under the hand controller (this can be placed anywhere)
- Launch the web server (webserver.exe) and copy one of the urls in the launched windows in the Signalling URL in the 'RenderStreaming' gameObject. (For example: http://127.0.0.1/)
- Navigate to the Signalling URL in a compatible web browser (such as Chrome)
- Run the scene in Unity and then start the client.
The Client Manager Should look like this
For further details on the Render Streaming package and server refer to the Unity Render Streaming documentation [https://docs.unity3d.com/Packages/[email protected]/manual/index.html]
Each instance of the web client is assigned an ID with a respective camera.
Tools | Description |
---|---|
Annotate | Places a world space annotation drawn by an external user |
Select | Outlines the selected object (Requires Asset) |
Place Target | Places a target point where an external users clicks |
Annotate Window | Places an annotation on the 'annotation window' gameObject view |
Switch View | Switch between the external camera (only make changes on the client view |
Annotation Window
Navigate with WASD keys and use Q and E to go up and down. Hold the right mouse button to orbit the camera view. Tools can only be applied with respect to the coreresponding camera and client.
If you edit the web client files, make sure to re pack the folder to create the new webserver.exe
file.
npm run build
npm run pack
If you run into issues with the web client refer to the official Unity documentation here: [https://docs.unity3d.com/Packages/[email protected]/manual/en/webapp.html]
Cyrus Vachha, Bala Kumaravel