Jump to content

Omni‐directional Stereo (ODS) Content


Recommended Posts

Hi everybody:

We are starting a VR project and, as we want it to be as cross-platform as possible with a unique base code, I'm thinking on giving a chance to BJS (maybe this is not the best case of use for this awesome engine).

This is, indeed, not a genuine 3D Engine development, in terms of 3D scenes with different assets into it (characters, props, effects, ...), but a theatrical experience where the user sees an omni-directional stereo (ODS) pre-renderized CG animation, walking on the streets of a medieval village, going downhill from the cathedral to the palace. We need this approach in order to have high-quality CGs. As said we are not looking for a pseudo-VR, consisting in a planar projection of a 360º video on the inner side of a sphere, but a real VR video experience.

Under this assumption we'll need a different video stream for each eye, in order to give the user a sense of depth as you look around in every direction. Near things look near, far things look far.

Of course we'll be rendering texts and other CG effects overlays on the video streams.

I'm searching through the docs and this forum for a starting point on all this, but I'm only finding pseudo-VR approachs.

Is this type of "dual-camera" planned to be incorporated to BJS in future versions?

Best regards.

Link to comment
Share on other sites

Dual cameras are integrated since version 1 probably :)

I am not sure what you refer to as "pseudo-VR", but screen-split can be easily achieved using the activeCameras array and modifications of the viewport. We do have many types of camera to support that, which you can also change to your own needs. Check a simple demo on the website, and click the camera on the right to switch between them - http://www.babylonjs.com/demos/spaceship/ (The Device-orientation requires you to click and move the mouse once, if you don't use mobile). The distortion compensation can be adjusted.

Multi-Views - http://doc.babylonjs.com/how_to/how_to_use_multi-views

You can also check what we do with the rig-cameras in the camera class for better understanding on how we solved the multi-camera issue in VR and WebVR (and the anaglyph camera as well :) )


Oh and - Obviously, Babylon is the right choice for your project ;) 

Link to comment
Share on other sites

Hi @paleRider,

what is the difference between that and the VR camera without connecting it to the motion sensor? I didn't read the entire thing (I read it like I read books - look at the pictures and try figuring out what they meant). I saw something about HUD and vertical stacking (which is configurable - instead of setting the width to 0.5, set the height to 0.5 in the viewport).

Link to comment
Share on other sites

Dear RaananW:

Ok, as said this is a project in its starting point.

Anyway, the difference is that we don´t want this:


But this:


Said this, obviously I need to read all about BJS VR Cameras and try to match its behavior with the specifications of OSD approach.

I'll return to this thread as soon as I have a clear image of the whole thing.

Best regards.

Link to comment
Share on other sites

It seems like the projection matrix needs to be different. So it is all about changing viewports and the calculation of the projection matrix. A hint can be provided in the WebVR camera as well (there is a different projection and view matrix function to the rig cameras (child-cameras). Start at the rig-camera configuration in the camera class and take it from there. It can be a bit confusing at time, so if you need any help let us know.

Link to comment
Share on other sites

Are you sure you need ODS from BabylonJS cameras ?

We did something similar last month (bake an HD scene to run it in VR), and our workflow was the following


- Create scene in Blender

- Generate two spherical textures, it uses your ODS-generated projection. Blender takes care of it.

- Apply the textures on two spheres, in Babylon.

- Use a VR Camera from Babylon (it uses you first projection +- eye crossing) from inside the spheres. Each sphere is rendered on only one camera.

- Then you can look around (but not move !), the HD scene appears in 3D with the quality of a baked render.

(repeat many times to get an animation)


It worked pretty well. As far as I know, the ODS projection is used to generated a texture from a 3D Scene. There no need to use it in real time when watching your result.

(our demo is not for public use, but if it's unclear I can try to make a light demo so you tell me if we're talking about the same problem)

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


  • Recently Browsing   0 members

    • No registered users viewing this page.
  • Create New...