SOLVED: Spectator view not working when running on device, works fine from editior

If anyone runs into this: it's an Unity bug

It appeared first in 2022.3.23 and was fixed apparently in 2022.3.34. I used 38 and now it works. Sweeeeet

Problem:

  • when I run the app from the editor, having selected "Show Preview in Editor", Spectator view on phone shows whatever is in the Unity editor, as I expect
  • when I run the app on the ML2, connection works fine, reading marker from phone and ML works fine - only nothing is displayed on the phone screen - just the camera background.

In my telemetry I see a large number of these errors:

ArgumentOutOfRangeException: Index was out of range. Must be non-negative and less than the size of the collection.
Parameter name: index

Stack trace:

System.Collections.Generic.List`1[T].get_Item (System.Int32 index) (at <00000000000000000000000000000000>:0)
UnityEngine.Experimental.Rendering.XRPass.GetViewport (System.Int32 viewIndex) (at <00000000000000000000000000000000>:0)
UnityEngine.Rendering.Universal.Internal.DrawObjectsPass.ExecutePass (UnityEngine.Rendering.ScriptableRenderContext context, UnityEngine.Rendering.Universal.Internal.DrawObjectsPass+PassData data, UnityEngine.Rendering.Universal.RenderingData& renderingData, System.Boolean yFlip) (at <00000000000000000000000000000000>:0)
UnityEngine.Rendering.Universal.ScriptableRenderer.ExecuteRenderPass (UnityEngine.Rendering.ScriptableRenderContext context, UnityEngine.Rendering.Universal.ScriptableRenderPass renderPass, UnityEngine.Rendering.Universal.RenderingData& renderingData) (at <00000000000000000000000000000000>:0)
UnityEngine.Rendering.Universal.ScriptableRenderer.ExecuteBlock (System.Int32 blockIndex, UnityEngine.Rendering.Universal.ScriptableRenderer+RenderBlocks& renderBlocks, UnityEngine.Rendering.ScriptableRenderContext context, UnityEngine.Rendering.Universal.RenderingData& renderingData, System.Boolean submit) (at <00000000000000000000000000000000>:0)
UnityEngine.Rendering.Universal.ScriptableRenderer.Execute (UnityEngine.Rendering.ScriptableRenderContext context, UnityEngine.Rendering.Universal.RenderingData& renderingData) (at <00000000000000000000000000000000>:0)
UnityEngine.Rendering.Universal.UniversalRenderPipeline.RenderSingleCamera (UnityEngine.Rendering.ScriptableRenderContext context, UnityEngine.Rendering.Universal.CameraData& cameraData) (at <00000000000000000000000000000000>:0)
UnityEngine.Rendering.Universal.UniversalRenderPipeline.RenderCameraStack (UnityEngine.Rendering.ScriptableRenderContext context, UnityEngine.Camera baseCamera) (at <00000000000000000000000000000000>:0)
UnityEngine.Rendering.Universal.UniversalRenderPipeline.Render (UnityEngine.Rendering.ScriptableRenderContext renderContext, System.Collections.Generic.List`1[T] cameras) (at <00000000000000000000000000000000>:0)
UnityEngine.Rendering.RenderPipelineManager.DoRenderLoop_Internal (UnityEngine.Rendering.RenderPipelineAsset pipe, System.IntPtr loopPtr, UnityEngine.Object renderRequest) (at <00000000000000000000000000000000>:0)
MagicLeap.Spectator.MLSpectatorRenderer.SendRender (MagicLeap.Spectator.MLSpectatorRequest request) (at <00000000000000000000000000000000>:0)
MagicLeap.Spectator.MLSpectatorRenderer+<ProcessRequestLoop>d__31.MoveNext () (at <00000000000000000000000000000000>:0)
UnityEngine.SetupCoroutine.InvokeMoveNext (System.Collections.IEnumerator enumerator, System.IntPtr returnValueAddress) (at <00000000000000000000000000000000>:0)
MagicLeap.Spectator.MLSpectatorRenderer:SendRender(MLSpectatorRequest)
MagicLeap.Spectator.<ProcessRequestLoop>d__31:MoveNext()
UnityEngine.SetupCoroutine:InvokeMoveNext(IEnumerator, IntPtr)
  • Unity 2022.3.32f1
  • ML OS 1.8.0
  • Unity SDK 2.3.0
  • ML Spectator 1.3.4
  • ML MRKT3 1.1.0

Have set these permissions:
image
(camera was not required, but I added it anyway in case that was the issue)

These options:

As well as this.

image

Did I miss anything?

1 Like