Search Issue Tracker
By Design
Votes
0
Found in [Package]
3.0.0
Issue ID
REC-407
Regression
No
Left and right eyes are swapped in VR headset when playing a 360-video that was recorded with the Unity Recorder
How to reproduce:
1. Open the attached project
2. In Build Settings, set the Target Platform to UWP
3. In Player Settings, enable Virtual Reality Support
4. Select "Assets/.../Materials/Video Playback" material
5. In the Inspector, change Shader to "Skybox/Panoramic Swapped Up-Down" (user-created shader)
6. Play the scene
7. Put on the VR headset
8. Observe that the spheres are displayed correctly
9. Change Shader to "Skybox/Panoramic"
10. Play the scene once again
11. Observe that while looking with both eyes opened at the spheres, it seems as if there are three of them (the middle one is of both colors)
Expected result: When using "Skybox/Panoramic" shader, left and right eye views are not swapped.
Actual result: Left and right eye views are swapped when viewing the video in a Microsoft Mixed Reality headset.
Reproducible with - 2017.4.0f1, 2017.4.13f1, 2018.2.13f1, 2018.3.0b6, 2019.1.0a5
Note: The above-mentioned shader ("Skybox/Panoramic Swapped Up-Down") was produced by modifying o.layout3DScaleAndOffset to simulate swapping left and right eyes (so that it would be displayed correctly).
Recording stereo 360-video with the Unity Recorder and playing it with Video Player swaps left and right eyes
1. What happened
I created a simple scene and captured it in a 360 video (using Unity Recorder with webm movie recorder).
Then I played the video with a Video Player and viewed it in a Microsoft Mixed Reality headset. The image looked somewhat wrong, like parts further away were coming towards me while nearer objects are further away. To test my suspicion that the eye-images are swapped, I added two colored spheres to the scene, directly in front of the eyes (left eye: green sphere, right eye: red sphere) and recaptured the video. Closing my eyes, one at a time, I saw the wrong sphere directly ahead. This also means, that you cannot focus on the spheres as you would expect.
To fix the issue, I pulled the Skybox/Panoramic shader from the builtin shaders package (I used the one from 2017.3.1f1 because I had it lying around) and swapped the eyes (by changing line 178 from o.layout3DScaleAndOffset = float4(0, 1-unity_StereoEyeIndex,1,0.5); to o.layout3DScaleAndOffset = float4(0, unity_StereoEyeIndex,1,0.5);). With that modified shader, the video is displayed correctly.
2. How we can reproduce it using the example you attached
There are two scenes in this project (2018.2.3f1): "Test - Recording" and "Test - Playback".
To test the issue, open the "Test - Playback" scene and hit play. You should see the included 5-second video with the swapped eyes. The trees look somewhat wrong and you can't focus on the colored spheres properly. Now change the shader of the "Exozet/Materials/Video Playback" material to the "Skybox/Panoramic Swapped Up-Down" shader (by default it uses the builtin "Skybox/Panoramic" shader) and look at the scene again. The trees look correct and you can focus the spheres now.
In case you want to capture the video yourself, use the "Test - Recording" scene, open the Recorder Window, load the "RecorderSettingPreset" and start the recording. I used a 5-second time interval for my tests. Don't forget to disable Virtual Reality Support before recording or it will mess up your capture camera.
Add comment
All about bugs
View bugs we have successfully reproduced, and vote for the bugs you want to see fixed most urgently.
Latest issues
- Any small change in UI Builder Inspector refreshes Editor Inspector
- Inaccurate Box Collider boundaries on a rotated child Cube when the parent GameObject Scale is non-uniform
- [Android] "SHADOWS_SCREEN" set as shader Keyword when no "_ShadowMapTexture" is bound leads to freeze on a build on some Mali GPU devices
- The global scene list is overridden in a project built with command line when the Override Global Scene List setting is disabled in the build profile
- [Linux] AutoLocale log is logged when opening a project
Resolution Note:
Created a task for this.
https://jira.unity3d.com/browse/REC-988