Spectator View is an augmented reality product that enables viewing HoloLens experiences from secondary devices. Spectator View has multiple configurations and supports a variety of scenarios from filming quick prototypes to producing keynote demos.
Currently, the supported process for obtaining and consuming Spectator View code is through cloning and referencing the MixedReality-SpectatorView git repository. Downloading source code from the releases tab is possible, but helper scripts and sample projects may break if you choose not to clone the repository. Steps for cloning and using the git repository are as follows:
- Download git
- Clone the MixedReality-SpectatorView repository by running the following command:
git clone https://github.com/microsoft/MixedReality-SpectatorView.git sv
Note 1: Spectator view uses symbolic linked directories in its sample projects, which results in large file paths. It's suggested to place your Unity project in a short named directory (such as C:\sv). Otherwise, file paths may become too long to resolve in Unity.
Note 2: If you are anticipating contributing to the MixedReality-SpectatorView project, you should fork your own version of the repository and clone it instead of the Microsoft repository. Your forked repository url will look something like this:
https://github.com/YourGitHubAliasHere/MixedReality-SpectatorView.git
.
- Check out a release branch by running the following commands in your git repository directory:
git fetch origin release/1.0.0-beta
git checkout release/1.0.0-beta
After running these git commands, you will have a local copy of the MixedReality-SpectatorView codebase. Next, you will need to follow the instructions in Setup your local environment
to obtain external dependencies.
The MixedReality-SpectatorView repository uses Unity packages, git submodules and symbolic linked directories for obtaining and referencing external dependencies. Prior to opening any Unity projects, you will need to run a setup script.
- The setup script will configure your git repository to use clrf line endings and support symbolic linked directories.
- The setup script will obtain and update all git submodules declared in the MixedReality-SpectatorView repository.
- The setup script will fix any symbolic linked directories in the MixedReality-SpectatorView repository.
Note: Not all submodules have the same MIT license as the MixedReality-SpectatorView repository. Submodules in this project currently include: MixedRealityToolkit-Unity, Azure-Spatial-Anchors-Samples and ARCore-Unity-SDK. You should view and accept the licenses in these projects before running the SetupRepository.bat script.
Depending on what release you are using the correct setup script may vary. Choose the appropriate script below based on the git branch that you have checked out in your clone of the MixedReality-SpectatorView repository:
If you are using the release/1.0.0-beta branch, You will need to run the following command:
- Run
'tools/Scripts/ResetSamples.bat'
as an administrator on a PC (On Mac or Linux, you can run'sh /tools/scripts/ResetSamples.sh'
).
If you are using the master branch, you will need to run the following command:
- Run
'tools/Scripts/SetupRepository.bat'
as an administrator on your PC (On Mac or Linux, you can run'sh /tools/scripts/SetupRepository.sh'
).
After going through the setup steps in 'Obtaining the code' and 'Setting up your local environment', sample projects will be configured for use in your clone of the MixedReality-SpectatorView repository. It's easy to get started by building off one of the samples or by inspecting them to understand project setup. For more information, see Samples.
After obtaining a local clone of the MixedReality-SpectatorView repository and resolving its external dependencies (see above), the suggested mechanism for referencing the code is by adding symbolic linked directories to your Unity project's Assets folder. You can do this with the following:
- Close any instance of Unity.
- Open an administrator command window.
- Run the following commands, updating the paths to reflect your local environment:
cd c:\Your\Unity\Project\Assets
set PathToRepo="c:\your\path\to\MixedReality-SpectatorView\"
mklink /D "MixedReality-SpectatorView" "%PathToRepo%\MixedReality-SpectatorView\src\SpectatorView.Unity\Assets"
mklink /D "ARKit-Unity-Plugin" "%PathToRepo%\MixedReality-SpectatorView\external\ARKit-Unity-Plugin"
mklink /D "AzureSpatialAnchorsPlugin" "%PathToRepo%\MixedReality-SpectatorView\external\Azure-Spatial-Anchors-Samples\Unity\Assets\AzureSpatialAnchorsPlugin"
mklink /D "GoogleARCore" "%PathToRepo%\MixedReality-SpectatorView\external\ARCore-Unity-SDK\Assets"
mklink /D "MixedReality-QRCodePlugin" "%PathToRepo%\MixedReality-SpectatorView\external\MixedReality-QRCodePlugin"
mkdir AzureSpatialAnchors.Resources
cd AzureSpatialAnchors.Resources
mklink /D "android-logos" "%PathToRepo%\MixedReality-SpectatorView\external\Azure-Spatial-Anchors-Samples\Unity\Assets\android-logos"
mklink /D "logos" "%PathToRepo%\MixedReality-SpectatorView\external\Azure-Spatial-Anchors-Samples\Unity\Assets\logos"
- Close any instances of Unity.
- Open an administrator command window.
- Run
tools\Scripts\AddDependencies.bat c:\Your\Unity\Project\Assets c:\Your\MixedReality-SpectatorView\
(On Mac or Linux, you can run'sh tools/Scripts/AddDependencies.sh //Users/You/Your/Unity/Project/Assets //Users/You/Your/MixedReality-SpectatorView/'
).
Now, when you reopen your project in Unity, folders should appear in your project's Assets folder.
Below are simple instructions for adding Spectator View to your project:
- Ensure you have all of the Software & Hardware.
- Ensure you have added the appropriate platform dependencies to your project (ARCore/ARKit)
- Go through the Getting Started steps above to obtain and reference the MixedReality-SpectatorView codebase in your project.
- Add a reference to the Spectator View code by going through the Adding references to your project steps above.
- Choose a Spatial Alignment Strategy and spatial localizer.
- Add the appropriate Spatial Localizer Dependencies based on your chosen spatial localizer.
- Add the
MixedReality.SpectatorView/SpectatorView/Prefabs/SpectatorView.prefab
prefab to your primary scene. - Configure the localization methods you wish to use: Spatial Localizer Dependencies.
- Generate and check-in Asset Caches to your project repo: Before Building
- Build & Deploy your primary scene onto the hosting device.
- Configure the IP Address of the host device in the spectating scene for each platform
MixedReality.SpectatorView/SpectatorView/SpectatorView.<Platform>.unity
you will deploy to. - Build & Deploy your spectating scenes onto the spectating devices.
Note: Some platforms require a special build step, for build information see: Building & Deploying
For more information on setting up a Spectator View project, see the following pages:
For more information on Spectator View's architecture, see here.
For more information on debugging Spectator View, see here
The easiest way to file feedback is by opening an issue. When filing feedback, please include the following information (when applicable):
- Whether you're using a HoloLens or HoloLens 2 device
- Development PC Windows Version
- Unity Version
- Whether you are building with .Net, Mono or il2cpp in Unity
- Visual Studio Version
- Windows SDK Version
- iOS device type/iOS Version
- Mac OS Version
- Android device type/Android OS Version
- Android Studio Version
In addition to opening issues, Spectator View contributors are active on Stack Overflow. Use the MRTK tag when asking Spectator View related questions.
This project welcomes contributions and suggestions. Most contributions require you to agree to a Contributor License Agreement (CLA) declaring that you have the right to, and actually do, grant us the rights to use your contribution. For details, visit https://cla.microsoft.com.
When you submit a pull request, a CLA-bot will automatically determine whether you need to provide a CLA and decorate the PR appropriately (e.g., label, comment). Simply follow the instructions provided by the bot. You will only need to do this once across all repos using our CLA.
This project has adopted the Microsoft Open Source Code of Conduct. For more information see the Code of Conduct FAQ or contact opencode@microsoft.com with any additional questions or comments.