Unity 2018.3 and Hololens: holograms are not stable

Hi.

We’ve detected a quite serious issue with the 2018 releases of Unity (since 2018.2) with Hololens and hologram stability.

Basically, the holograms are never stable. The best way to see the effect is to look at an hologram and physically jump a bit. The holograms also appear to jump instead of staying in place. Debugging the stabilization plane shows that the plane appears in the correct place but it seems to have no effect.

Searching the internet, this issue seems to come up from time to time, but is mostly dismissed as not being unity’s fault as most people use Mixed Reality Toolkit’s implementation of stabilization plane.

We’ve been “stuck” in Unity 2017.4 LTS because of this, since the issue doesn’t happen in this version (currently 2017.4.23f1)
We want to move on to Unity 2018.3, mostly because of the “nested prefabs” feature, latest Vuforia version, etc. But this issue keeps happening and it seems nothing is being done to fix it (not that I’m aware of). I hope this report changes this (I’m also writing a bug report).

We created 2 empty unity projects (Unity 2017.4.23f1 and Unity 2018.3.9f1). In both projects we created a cube and a sphere that appear in front of the Hololens (fixed position). Both projects have the “Enable Depth Buffer Sharing” checked and some other basic settings to run in Hololens. No other mechanism is used (no world anchors, no MRT, no Vuforia tracking, no manual setting of stabilization plane, literally nothing else).
After build/deploy, the final result of both projects can be compared and there’s the obvious issue with the 2018.3 build.

Unity 2017.4.23f1 (LTS): (holograms are stable)
4339717--391789--Unity2017.gif

Unity 2018.3.9f1: (holograms are unstable)
4339717--391792--Unity2018.gif
Actual framerate in both apps is constant 60fps.

TLDR: Unity 2018.3 holograms are not stable. This doesn’t happen in Unity 2017.4 LTS with the same settings. We’re unable to update unity because of this and we really want/need to. It is most likely a Unity issue since no code or any other packages are being used.

3 Likes

Hey @EdgarSantos I’d be happy to take a look at your bug. You’re right most of our reports about unstable holograms are people using the MRTK. If you’re reproducing this without MRTK at all then I am highly interested to hear about this. What is the bug number you submitted so I can pull it up on my end? I might have some follow up questions but I’ll take a look at your repro projects first.

Thanks

Hi.

The bug report has the 2 projects I mentioned in the post and the videos that show the issue (raw captured videos instead of compressed gifs).

The info of the bug report:
Case: 1138810
Title: Unity 2018.3 and Hololens: holograms are not stable but they are in Unity 2017.4 LTS

Thank you.

1 Like

Interesting… I’m trying to sync up to what you’re seeing but my holograms are appearing very solid on 18.3.9f1. I’ve recorded a video to compare with you, would you say this is better, worse, or the same than what you are seeing?

https://oc.unity3d.com/index.php/s/ERaNrD6ioLZORBG

This is using your provided repro project. Thank you for those by the way, super helpful

It actually looks like it’s not so stable compared to what we get with 17.4LTS.

Also, small up-down shifts while looking at the holograms is the best way to reproduce the issue we’re having.
(that’s what I’m doing in the videos attached to the bug report, which are the sources for the gifs posted here).

I’ll dig in to this more, these are notoriously difficult to track down from my experience with stabilization issues

Hi @JasonCostanza ,

Do you got any news regarding this? We are facing the exact same issue.

We first noticed holograms instability so we experimented different settings (2017.4, 2018.4, with and without MRTK, with and without WorldAnchor). Without using the MRTK, the holograms are way more stable in Unity 2017.4 whereas on 2018.4 they are jumping a lot.

As a result, we are currently stuck with 2017.4.

FYI, our HoloLens has been wiped yesterday and is updated to the lastest OS version (17763.615 - 09 July 2019).

Do you need any thing to help you identify the issue?

Edit: video files that demonstrate the stability issue - https://we.tl/t-elTLiLwgso

3 Likes

Repro projects always help us compare 1:1 with what you’re using. If you have one to supply I’d always love to see it as you might be hitting a niche we aren’t looking for. I definitely see some jitter in your videos, especially the 2018 video.

In the mean time, perhaps try using Shared Depth Buffer in your XR Settings.

@JasonCostanza We are already using Shared Depth Buffer.

Please find attached a repro project. Inside the archive, you will find both the Unity project and the HoloLens built packages for Unity 2017.4 and Unity 2018.4

Link: https://we.tl/t-b7ZtYfldNv (will be available for a week)

When you are trying them, please jump or bend your knees quickly: this is the best way to notice the jitter on 2018.

Here is how the Unity project was made:

  • Blank project (nothing inside, no MRTK)

  • Project settings according to Microsoft Guidelines (Recommended settings for Unity - Mixed Reality | Microsoft Learn):

  • No Realtime/Baked GI

  • Camera Clear Flags set to solid color (Black)

  • Camera position set to (0, 0, 0)

  • Camera near/far range tuned down (0.2 - 20)

  • XR Settings enabled for WMR

  • Depth Buffer enabled and set to 16-bits

  • Stereo rendering mode set to Single Pass (we tried both SP and SP Instanced)

  • A cube set at position (0, -0.25, 1.75) and Unlit color (Green) material

1 Like

Quick update

I noticed in 2019.1.9 patch notes the following line:
XR: Fixed Render Viewport Scale Jitter when render viewport scale changes continuously. (1153261, 1159974)

Do you know if it could be related to the bug we are currently facing, and if it is do you got any ETA for 2018.4 fix?

Edit: Well, I just tested with Unity 2019.1.12f1 and the issue is not solved. As such, only Unity 2017.4 seems to be a safe environment to develop at the moment.

I would also like to know this, we have been battling hololens jitter since early this year and its quite noticeable, none of the recommended steps alieviate it.

Noted @jonathan_dana , thanks for all the info! I’ll make an effort to reproduce what you’re seeing. As I mentioned these are notoriously hard to reproduce on our side but we will give it the olde honest effort and keep you posted best I can. @MadeFromPolygons_1 are you seeing the exact same behaviors as Jonathan is in his videos? If not, please provide any info you can about what you’re seeing, where you’re seeing it, etc.

I appreciate all your patience with tracking these down, I know how frustrating and uncomfortable wobbly, shaky, jumpy, holograms can be. I want this issue dead as much as you guys :smile:

1 Like

Popping in this thread to confirm that I’m seeing the same issues on Hololens 1 with the example projects.

2017 = Rock Steady Hologram Placement
2018 = Lots of Jitter

1 Like

I can also confirm seeing the jitter present in 2018 but stability in 2017

1 Like

Thanks for investigating! Should be easy to replicate with the provided projects :slight_smile:
Let me know if you need anything more.

I am seeing the exact same behaviour as Jonathan if that helps.

1 Like

It does. I will look into this. if there’s any specific repro steps you guys missed, please provide them. e.g. running on the device with a built/deployed app or running in simulation or remoting. All of that info helps us narrow down what’s happening. If the projects included were 2 freshly built projects or if you built the 17.4 and upgraded it to 18.4. We ask because those two versions are roughly a year or so apart of development time so an upgrade path MAY have taken a different code route and introduced side-effects. We’re not sure, just speculating at potential suspects. As the police say, any detail you can think of even if you think it’s unimportant, could be the detail that matters.

2 Likes

Running on device, using latest SDK, latest HoloLens updates, Unity 2018.4.4f1. (Same on all 2018.4 versions that I have checked). Using in built pipeline, using mixed reality toolkit shaders (but is same regardless of shader as far as I can tell). This happens whether object is anchored or not, anchoring it does actually seem to make it a bit worse (hopefully again this may be helpful, my thoughts initially was that it is something incorrect under the hood with how world anchors locate themselves).

I dont develop without unity, but I have a friend who has used the same models in a non-unity hololens app (direct x I think) and it did not produce any jitter at all.

Jitter gets worse up close, and there was no (custom) code running in scene.

I think thats about everything?

Hopefully this will be of use, I wouldnt be able to provide any repro project from this PC as we are forbidden due to security to send out any project files even fresh projects not to do with work.

  • I noticed the issue when running on the device, I’m never relying on simulation nor remoting.

  • The project I uploaded is an upgraded version from 2017.4, but we initially spotted the issue when starting a fresh 2018.4 project so it’s not relevant unfortunately

  • As you can see, there is no third party tools in the project (no mrtk, no custom packages, no special assets)

  • I confirm it’s still occuring on 2019

Please let me know when you’ll have tested my build so we can compare the results.

I’m also seeing this behaviour in 2018.x. We’d previously been targeting 2017.3f1 and have since rebuilt in 2018.4.3f1. I’d also second that it appears to get worse when close (~1m) to an object.

The other change on our end was to use depth buffer sharing rather than manually setting the focus plane as we did in 2017.x, but given that others are experiencing this I don’t imagine that’s the issue.

1 Like