How to replicate the Google Cardboard Photosphere App

1.9k views Asked by At

I'm extremely new to Unity and VR and I've just been finishing up with Unity tutorials from YouTube. Unfortunately there isn't exactly much documentation on the process one should follow to make a VR app with Unity.

What I need is to be able to replicate the Photosphere App in the Cardboard App for Android. I need to do this using Unity if possible. The Photosphere's have been taken from a Nexus 4's Camera with the photosphere option and look like below image:

enter image description here

I tried following this really nice walkthrough which attaches a cubemap skybox to the lighting. The problem is the top and the bottom part of of the cube don't seem to show the proper image.

I tried doing it with a 6 sided skybox too but I'm pretty lost about the way i should proceed with that. Primarily because I've just got one Photosphere image and the 6 sided skybox has 6 input texture parameters.

I also tried following this link but the information there is slightly overwhelming.

Any help or pointers in the right direction would be extremely appreciated! Thank you :)

2

There are 2 answers

0
felixwcf On

I also went through the tutorial of the link you provided, but it seems that they did it "manually".

Since you have Unity 3D and Cardboard SDK for Unity, you don't have to do configure the cameras.

You please follow this tutorial.

0
JoanR On

There is an alternative way doing a Sphere and put the cam inside: http://zhvillues.tumblr.com/post/126331275376/creating-a-360-viewer-using-unity-3d

You have to apply a custom shader to the Sphere to render the inside of it.

Shader "Custom/sphereShader" {
    Properties {
         _MainTex ("Base (RGB)", 2D) = "white" {}
         _Color ("Main Color", Color) = (1,1,1,0.5)
     }
      SubShader {
        Tags { "RenderType" = "Opaque" }
        Cull Front

        CGPROGRAM
        #pragma surface surf Lambert vertex:vert
        sampler2D _MainTex;

        struct Input {
             float2 uv_MainTex;
             float4 color : COLOR;
        };
        void vert(inout appdata_full v)
        {
            v.normal.xyz = v.normal * -1;
        }
        void surf (Input IN, inout SurfaceOutput o) {
                  fixed3 result = tex2D(_MainTex, IN.uv_MainTex);
             o.Albedo = result.rgb;
             o.Alpha = 1;
        }
        ENDCG
      }
      Fallback "Diffuse"
}