Search Issue Tracker
Fixed in 2020.1
Fixed in 2018.4, 2019.2, 2019.3
[HoloLens] Holograms are jittering since Unity 2018
1. What happened
When using Unity 2017, holograms are very stable when running an application on the HoloLens. All newer versions (tested on 2018.4 and 2019.1) produce jitter. No external tool in the project, just a blank one with a material.
As a result, we are currently stuck with 2017.4.
More info on this forum thread: https://forum.unity.com/threads/unity-2018-3-and-hololens-holograms-are-not-stable.647734/
2. How we can reproduce it using the example you attached
List of files attached:
- "2017" is a video previewing holograms stability using Unity 2017
- "2018" is a video demonstrating jitter
- "HoloJitter.zip" is an archive containing Unity projects AND UWP built packages for both Unity 2017.4 and 2018.4
Here is a step-by-step guide when starting from scratch (which I just did). Please note that everything that is not mentioned here has been left untouched from the default configuration.
PC Windows OS Version (from winver.exe): 1903 (18362.239)
Latest Windows SDK version: 10.0.18362.0
HoloLens 1st Gen build version (from device portal information): 17763.615.x86fre.rs5_release_svc_prod1.190630-1301
Visual Studio Version: 15.9.14
Install Unity 2018.4.5f1 (I do not use Unity HUB - and I never overwrite a previous installation; always install in a fresh new folder)
Create a new project called "Jitter", with 3D as default mode
Switch platform to UWP
Prepare the material for the cube:
Create a folder named "Materials"
Create a new material in that folder, called "UnlitRed"
Set material shader to Unlit/Color
Set Main Color property to (255, 0, 0, 255)
In the default scene that is provided:
Remove directional light
Set the camera:
Set Position to (0, 0, 0)
Set Rotation to (0, 0, 0)
Clear flags to Solid Color (0, 0, 0, 0)
Far clip plane: 20
Disable "Allow MSAA"
Place a cube in the scene:
Set position to (0, -0.25, 1.75)
Set scale to (0.15, 0.15, 0.15)
Set material to previously created "UnlitRed"
Open Lighting settings (Window -> Rendering -> Lighting Settings):
Clear Skybox Material and Sun Source property field (click on the currently assigned value and press "Del.")
Disable Baked Global Illumination (uncheck the box)
Save the scene
Add it to the builds settings (File -> Build settings -> Add open scenes)
Open the package manager (Window -> Package Manager):
Select "In Project" from the top left top down
Remove all packages but Package Manager UI
Remove "Analytics Library"
Remove "In App Purchasing"
Remove "TextMesh Pro"
Remove "Unity Collaborate"
Normally, only Package Manager UI should be there
Open Quality Settings (Edit -> Project Settings -> Quality):
Delete all quality levels but Very Low
Open Player Settings (Edit -> Project Settings -> Player):
Under XR Settings:
Check Virtual Reality Supported
Set Stereo Mode Rendering to Single Pass Instanced
Open Build Settings (File -> Build Settings)
Click the Build button at the bottom
Create a new folder from Windows Explorer named "Builds"
Select the folder for the builds
Once build is complete, open visual studio solution (Builds/<project_name>.sln):
Select "Master" as build configuration
Select "x86" as target platform
Select "Device" as target device
Plug the HoloLens through USB port
Select Build -> Deploy Solution from the top menu
Once build is completed and deploy has succeeded, unplug the HoloLens
Put the HoloLens on your head:
Bloom to open the shell
Select "All Apps" on the right
Selection the application you just build
The OS will start the application, and Unity Splash Screen will soon appear
Once you see the red cube from your scene, move around, and squat
All about bugs
View bugs we have successfully reproduced, and vote for the bugs you want to see fixed most urgently.
- Tabbed headers in editor windows need a style update
- [Android][IL2CPP] App crashes after executing Application.Quit
- [iOS] ReplayKit.APIAvailable returns 'false' on the first call on iOS 13 devices
- Texture preview can be clicked through
- [Progress] Progress bar does not revert to unresponsive status after another task completes