A cross-reality framework for seamless collaboration between different AR/VR users.
View Demo
·
Report Bug
·
Request Feature
Table of Contents
CrossWarp is a framework that unifies mobile AR devices (Android and iOS) and desktops into a single collaborative ecosystem. It not only ensures seamless transitions between the physical and virtual worlds but also provides a device-independent architecture designed to maximize interoperability. The system enables co-present users, such as two people using AR-enabled smartphones, to manipulate shared objects in real time while preserving their state and context, regardless of the platform used.
To get a local copy up and running follow these simple example steps.
Unity 2022.3 or later must be installed, to install it you can use Unity Hub.
- Install Photon Fusion following the instructions on the Photon website (https://doc.photonengine.com/fusion/current/getting-started/sdk-download).
- Add your AppID in the Photon Fusion configuration
- Install CrossWarp via the Unity Package Manager by following these steps:
- Open the Package Manager.
- Click on "Add package from git URL".
- Enter the following URL: https://github.com/isislab-unisa/CrossWarp.git?path=/Assets/CrossWarp
After importing, some parameters need to be configured in Project Settings:
- In XR Plugin Management, enable ARCore or ARKit, depending on the target platform.
- In XR Plugin Management, run Project Validation to detect and fix any configuration issues.
- In Player → Other Settings, disable the Vulkan Graphics API.
- In Player → Other Settings, change the Scripting Backend to IL2CPP and enable ARM64 support.
Once the installation is complete, you can use the components provided by CrossWarp to develop Cross-Reality experiences. The package includes example scenes demonstrating the core components, including the integration of interactive objects with physics mechanics. These examples can be imported and used as a foundation for building new collaborative and immersive applications.
By examining the HouseScene included in the package, you can see how to configure the environment for Cross-Reality experiences. The key components are:
- AR Scene Objects: XR Interaction Manager, AR Session, XR Origin
- Photon Configuration Objects: Prototype Network Start, Prototype Runner
The House object contains all the static elements of the house structure that do not interact with CrossWarp. In contrast, objects like SofaDouble, SofaArmChair, TableRectangleShort, and LampTall are designed to be transported between different realities.
To enable an object to be transported between different realities, you need to configure specific components within it:
- AR Anchor
- Outline
- Collider (customized based on the object)
- Network Object
- with AllowStateAuthority set to true
- Movable Object
- Transition Manager
With these components configured, any type of object can seamlessly transition between the two worlds.
- Support for Head-Mounted Displays VR/AR
- ContainerObjects
- Physical objects prefabs
See the open issues for a full list of proposed features (and known issues).
Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.
If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again!
- Fork the Project
- Create your Feature Branch (
git checkout -b feature/AmazingFeature
) - Commit your Changes (
git commit -m 'Add some AmazingFeature'
) - Push to the Branch (
git push origin feature/AmazingFeature
) - Open a Pull Request
Distributed under the Apache License 2.0. See LICENSE.txt
for more information.
Vincenzo Offertucci - Linkedin
Project Link: https://github.com/isislab-unisa/CrossWarp
- QuickOutline package from Chris Nolet (https://assetstore.unity.com/packages/tools/particles-effects/quick-outline-115488)
- In-game Debug Console package from yasirkula (https://assetstore.unity.com/packages/tools/gui/in-game-debug-console-68068) useful if you want an in-game debugger on mobile
- Interior House Assets package (https://assetstore.unity.com/packages/3d/environments/interior-house-assets-urp-257122)