VR3DMediaViewer - View Stereoscopic 3D content in VR

2628315--229476--VR3DImageViewerNew-Large2.png

Asset Store Page

Making a Sci-Fi game? You can have posters and billboards be in 3D, like a hologram! Want to make a digital art gallery? Render your images in stereo and have them POP in 3D! Fantasy game? Have portals that don’t just have a flat 2D texture preview for their destination. Give it some depth like there really is a world to step through to! Need to show people Stereoscopic 360 content in your project, this can do that too! You can even use this with a MovieTexture, the new 5.6 VideoPlayer, RenderTextures, WebcamTextures and various video asset plugins and have 3D video in your project!


Hello! This is the first asset that I have ever made for the Unity Asset Store. I’ve been developing for VR for a few years now, and I wanted to make some assets that other VR developers might find useful. As the 3D tech space is switching from previous generations of Stereoscopic screen based content to Virtual Reality based content, I figured why not help developers bridge that gap and allow them to use that content in VR? Get the best of both worlds!

It’s simple to setup and use, and supports multiple 3D images in a single scene!

This asset supports SBS, Cross-eyed, Top/Bottom, Two Images, Horizontal Interlaced, Vertical Interlaced, Checkerboard and Anaglyph format 3D images. It also works with Video and 360 Panoramic content!

This is designed this to work with Unitys integrated VR support as well as most custom SDKs. I can’t guarantee all of custom SDKs though. I’ve included step-by-step instructions for all of the main HMDs like Oculus Rift (OVR-SDK), GearVR (OVR-SDK-Mobile), Vive (SteamVR), and Daydream (GoogleVR).

BONUS!:

To help provide you with some Stereoscopic 3D pictures to display, I added a script that takes 3D screenshots in all the supported formats!

2628315--229477--VR3DMediaViewer-SS1.png

Any chance you will update this asset to provide support for the inverted stereo cubemap strip format as used by ORBX and Oculus 360 Photos on Gear VR?

I’m not to familiar with using 360 images/videos personally, so I can’t say for sure it will work with that format. But “in theory” it should work with at least some stereo 360 images/video. I know one user has reported to me that he has used it with 360 images.

At the moment the asset doesn’t “officially” support 360 content or any form of video. By “officially” it just means that I don’t yet supply any setup instructions or demos to showcase them. But unofficially, both can work with the asset.

For stereo 360 content, I’d say that if the content can be imported into unity as a standard image or video, can be applied to a shader as a texture, and the format has a Top/Bottom (SBS or 2 separate image sources should work too) layout like the 360 content I have seen, then it should work.

I hope that answers your question. =)

1 Like

EDIT: This is no longer relavent as its been fixed in 1.3. Just ignore it.

Notice for anyone using Unity v5.4.0f3 and SteamVR v1.1.1.

The setup procedure listed in the ReadMe no longer works. With Unity 5.4, Vive/SteamVR got native intigration and the SteamVR SDK changed to go along with it.

The following is how I currently recommend you set it up.

Removed to avoid confusion.

I’m needing to play video on a texture within the HTC vive scene. Does this support this? I’m a little confused as to the working for this asset.

Yes. This asset supports Video as a texture, like a MovieTexture or through use of various Video plugins like GST Movie Texture.

It does not however provide support for video playback itself if Unity’s built in MovieTexture format isn’t enough for your needs.

One of the demos provided on the product page shows a short video clip in action. That video is done using Unity’s MovieTexture format.

Video Demo

As far as the working goes, I’ll use a MovieTexture in a brief example.

First drag the Video file into your Project panel. Unity will start importing it. Importing basically converts it to an ogg/ogv files behind the scenes. Once done it will be available as a MovieTexture.

A MovieTexture generally works just like a normal texture. You select it in the materials shader properties just like a normal texture.

You will need a script to initiate playback of the video during run time. A basic demo script is provided in the asset package. But if you want the video to start playing when the scene is loaded do something like this in the “Start()” method of a script you attach to the object.

void Start ()
    {
        MovieTexture mt = gameObject.GetComponent<Renderer>().material.mainTexture as MovieTexture;
        mt.Play();
    }

Once the MovieTexture and script are applied, just select the corresponding options for the 3D video in the VR3DImageViewer component, like Side-by-Side/Top-Bottom, Swap Left/Right, etc, and you’re set! The video should show in 3D in the HMD at run time.

Hi
I started to using VR3D Image viewer.
somehow stereo video play very shakey,( like flipping right and left), even with very short sample video clip (big_buck_bunny_clip).
And I tried my Side By Side video also, showing similar,not smooth at all.
Could anyone let me know how to solve this problem ?

I am using Unity 5.5.1 with Oculus SDK.

Did you set the layers correctly? What you describe sounds like the issue that happens if you skip those steps.

Heres the relevant excerpt from the readme, for OVR SDK.

I tried as readme, but still same,
but I found shader v5.5.1 has no Diffuse/Albedo option
There is Albedo and Emission, so I switched Emission selection from “realtime” to “Baked”
somehow it stopped shaking right/left. issue has gone !

BTW, I started test V5.6 Beta, which has much smoother Video playback module builtin.
are you planing to update for this new function ? I am looking forward to heariing good news.

Thank you !!!
Best

Albedo and Diffuse are basically the same thing. In older pre-Standard shaders it went by diffuse, post 5.0 it goes by Albedo. Only use emission if you need the image to emit light, like a TV or something.

I usually don’t keep informed with upcoming changes. But my plan is to maintain compatibility with recent versions of Unity as much as I can.

Just now looking into it, my asset “should” work with the 5.6 Video Player as is. I emphasize “should” because I have had another issue reported from a 5.6 user who solved it by rolling back to a non-beta Unity. My guess is based on what I see of this new feature in this video here. The could easily be quirks or issues though, and I’ll address those as I can. =)

HI ,
Does this asset support android too , means can I build the project in android.
movietexture is not supported by android for playing videos.
Kindly let me know if there is a way out.
Thanks.

I haven’t personally tested it in a android app, but theres no reason my asset itself shouldn’t work on android.

That said, for the purposes of video playback, it all depends on what video plugins are available for android. I believe I tried GST Movie Texture on windows before and was able to get it working. It says it supports android, so maybe that would work for you?

Following up with my answer to this question before.

Now that 5.6 is officially out, I got a chance to install it and check the new VideoPlayer components compatibility with VR3DImageViewer. The short answer is, it does work with it!

The long answer is, only with a specific setup for now. If you use “RenderMode: RenderTexture” on the VideoPlayer component, create a RenderTexture matching the videos size and select it in VideoPlayers “Target Texture” field as well as the material of the mesh you are using, it will work.

Ideally I’d like for “RenderMode: Material Override” to work too, but that will take some redesign of the Asset.

The RenderTexture method should work for most cases I’d think. The main issue I see at the moment with it would be when loading/switching videos at run time. For that only having a preset resolution for the RenderTexture probably wouldn’t look great or work well. If you are doing such a thing, you will probably want to get the dimensions of the video clip you are trying to load at run time and create and set a new RenderTexture with those dimensions before calling “VR3DImageViewer.SetTexture();”.

I’m not planning to release an update right now regarding this, but I did alter the code a little for the next update to just create and set a RenderTexture automatically on Start().

I’m happy to announce that I’ve submitted a new updated version of this asset.

I did a complete rewrite, and this time designed it from the ground up with animated textures like video in mind. Particularly the new Unity v5.6 VideoPlayer component. But you should still be able to use it with other video plugins.

I eliminated some steps in the setup process, and now its mostly just a “1 Click Camera Setup” and “Canvas/Stereoscopic 3D Media Setup” process.

The asset now uses ScriptableObjects for a new Stereoscopic 3D Image asset system to manage your 3D content. Its an extra step, but one that I feel makes things less confusing and more versatile.

I’m also happy to announce that this asset now supports all 3D formats in Video form now. Previously Interlaced, Checkerboard and Anaglyph could only be pictures.

Anaglyph is now also configurable to use with more then just Red/Cyan.

The bonus 3D Screenshot script has also had a major update, no longer supporting just the SBS format. It now can take screenshots in any of the other formats as well, though for most cases you should stick with SBS, TB or Two Images.

Additionally for the 3D Screenshot script, I did some research and improved it to now make better 3D images. The old way was just the bare minimum code to tack it on as an extra. But the 3D in the screenshots taken by it sucked. There’s now 3 projection methods total. Parallel (old way), ToeIn (More pop, but some issues), and OffCenter (The best choice).

I hope everyone enjoys this update and finds its easier to use. And please leave some encouraging reviews if you haven’t already! I’d love to see this featured some day, and/or at least be listed as a “VR Essential”. =)

Here’s a general question I’m not expecting an answer to anytime soon. But is there anyone out there that would be interested in this asset supporting Stereograms images or Chromadepth images? The former would take some minor tweaking of the script to better support, and the latter, while I haven’t looked into much yet, would probably take a bit more unique code. But both I feel would be very fringe cases for people wanting an asset like this for.

If there’s anyone out there interested, please let me know. My goal for this asset is to support every 3D format I can, and be the defacto solution to any “3D in Unity VR” needs.

So where are the instructions for GearVR? The readme is pretty short. I have tried Unity 5.5 and 5.6, various options and it always fails with MovieTexture. I can use this video player if it requires some: https://www.assetstore.unity3d.com/en/#!/content/53391 …but I don’t know how.

I guess I forgot to properly mention that in the readme with the recent update to the package.

I believe now GearVR uses the main Oculus Unity SDK. But I’m not 100% certain since I don’t own or build projects for GearVR.

I don’t own the MPMP package, so I can’t guarantee it’s compatibility with my asset.

Have you tried the new v5.6 Video Player component yet? That’s meant to replace MovieTexture, and support more platforms like Android. The old MovieTexture stuff doesn’t support Android.

If that’s not an option, since GearVR is Android my recommendation for some cardboard users in the past was GST Movie Texture. I have tested with that asset before on Windows, and have noticed it says it supports android. So you could try that. Its free.

Hello,

I am a beginner user of Unity3D and I did not find a step-by-step guide explaining the assembly of a basic scene, I just need a 3D object rendered in Anaglyph format. How should I proceed?

Hi.
I want Panorama Video Viewer.
Demo Project - 360 Panorama Scene, Only certain pictures can be used.
What is difference with other Pictures or Videos?

Hi There! I’m really happy I found your asset. I’m having trouble getting started. I am on Unity 2017 using OVR. When I follow the documentation to right click on the prefab/MainCamera I do not see an option for “VR3DMediaViewer Camera Setup”. Can you help me set up the camera? Thanks!