Correct Stereo Panoramic Rendering for VR Headsets

Hi!
I’m experimenting some render techniques to make stereo panoramic rendering that can be used in Oculus Rift, GearVR and other VR headsets.
There’s some discussion in OculusVR Forums about what is the best way to render stereo panoramic images. What is common sense is that you need two images with a separation to simulate the eye separation. But if you just setup it that way and render with a panoramic projection the results will be wrong since the center of the panoramic projection will not be the center between the eyes, will be the center of the individual cameras. it produce this kind of problem:

See that the part in front of you is right you see it stereoscopic but the left and right parts of the image are not stereo and the back is inverted. Paul Bourke have explained this problem and made some solutions in this paper

Digging in the OculusVR forum they suggested:

  1. Set the Fov to 1º (Now possible in blender 2.74 thanks this patch)
  2. Render 360 strips with 5px width ( A camera rotating 360º , 1º per frame, 360 frames)
  3. Join all parts with PhotoMaker (http://stereo.jpn.org/eng/stphmkr/)
  4. Repeat this for the other eye

It seams a bit crazy and is a lot of work but it just work!
Here is the result:

This way we have a right stereo image in all directions!

I check too the Multiview Branch and it’s a great improvement in the stereo 3D workflow! At this time it don’t fix yet this problem with stereo and panoramic rendering, i talked with Dalai (dfelinto) that are working on it and looks he have a patch to implement but is not in the branch yet.

Conclusion:
Today we can use this hackish solution for static images but is quite impossible (not feasible) to render stereoscopic 3D movies like this. At least until dfelinto or other developer implement the solution for render stereo panoramic images.

Someone have a easier solution for that task?
Cheers!

I’m very interested in this technology. Keep the good work up :slight_smile:

Hi!
I am also experimenting with panoramic Stereo rendering. And i´m glad to show you my solution with an animation.
I use the same approche rotating an equirectangular camera. The animation is realised by a python script. I got for every frame 256 slices, that i stitch together with an batch script by using imagemagic.

For your question to render 3d movies a new lensshader for the equirectangular camera is necessary.
Cheers

Isn’t DFelinto exactly at the Blender Institute right now for stereoscopic rendering? Ask him what his plans are in regards to this?

To support this render was a bit off the scope of my tasks . But while I’m waiting for extra review in multiview I decided to resurrect my old dome-stereo branch and port it on top of the multiview branch.

I’m at the moment doing the last tests of a branch to support this render. Vitor is helping with some of the tests.
The branch won’t see master before multiview itself lands there, but for those willing to compile their own Blender the branch is here:

https://github.com/dfelinto/blender-git/tree/multiview-spherical-stereo

How to render: enable ‘Views’ in the scene panel, change camera to panorama, panorama type to equirectangular, and leave ‘Spherical Stereo’ marked (it’s on by default at the moment).

Note: branch extremely experimental, use at your own risk :slight_smile:

Note: branch extremely experimental, use at your own risk

Builds:

Windows 64 build: http://dalaifelinto.com/ftp/builds/multiview-spherical-stereo-2.74-d33764b-win64.zip
OSX 64 build: http://dalaifelinto.com/ftp/builds/multiview-spherical-stereo-2.74-d33764b-OSX-10.6-x86_64.zip
Linux 64 build: http://dalaifelinto.com/ftp/builds/multiview-spherical-stereo-2.74-d33764b-linux-glibc211-x86_64.tar.bz2

How to render: enable ‘Views’ in the scene panel, change camera to panorama, panorama type to equirectangular, and leave ‘Spherical Stereo’ marked (it’s on by default at the moment).

Original code: https://github.com/dfelinto/blender-git/tree/multiview-spherical-stereo

Hi Dfelinto

Thanks for providing builds of this code!

Just a question, is there a way of only seeing one eye in the compositor? atm its forcing anaglyph?

The other thing is that node groups (in the compositor) seem to be broken as well… but as you said, extremely experimental! Thanks heaps for this :smiley:

Is there a way of only seeing one eye in the compositor? atm its forcing anaglyph?

At the moment no, the best way is to disable the ‘right’ view, and re-enable it before the final render.

The other thing is that node groups (in the compositor) seem to be broken as well…

can you provide a sample file for me to test that? (as simple as possible)

Thanks for the prompt reply

Cool Will do

can you provide a sample file for me to test that? (as simple as possible)

Uploaded here – http://www.pasteall.org/blend/35121

Factor is set on the nodegroup to 0, which should cause the mix node inside the nodegroup to be discarded… instead it mixes to white.

Thanks for the builds, this works much efficient than my workflow with scripst, but it works.
How is your approach to rotate the camera?

to doublebishop to seeing only one view:

try the switch view node under converter.

I didn’t understand your first sentence. Or rather, the “but” part. Is that any downside on being more efficient? Anyways, I explain the technique here, let me know if it’s clear: http://www.dalaifelinto.com/?p=1009

No i meant your solution is much more efficient as mine. I used a pythonscript do render 256 slices of a frame by rotating the camera in an angle that depends on the render resolution and another batchscript stitches the slices by using imagemagic. for one frame its easy but for steroeo LR images it is a lot of render time, that increases exponentially.

Interessting, i´m familiar with the Paper of Paul Bourke. That was also my approach to forming the basis of my scripts.
At these time we (freelancers with Sebastian König from Leipzig) also work on a workflow for spherical Projectionsystems using Blender and Unity. So we decided to participated on the Gooseberry Project by working on Spherical Oculus Version, but this work is done i guess :wink:
By the way the name of technic you are looking for is omnistereoscopy.

cheers from Leipzig

@dfelinto, we ran a animation test (8000frames @ 60fps) over the weekend on our render grid… looks amazing. Just wanted to say thanks for all your hard work, it is much appreciated.

1 Like