vr 播放3d视频

3d视频播放
原理: 主要参考此文:http://bernieroehl.com/360stereoinunity/
       3d视频播放主要是将每一帧渲染到VR左右眼上,左眼取每帧的左半部分,右眼取右半部分。关键点就是解决如何将每帧分为左右两部分,如何将左右眼摄像头分别对应左右帧图像。

步骤:1 导入包 lrmap.unitypackage,此包是个shader,用来根据UV坐标系,将每帧图像分成左右或者上下两部分。  
如红笔所表示的 xy控制左右两部分,zw控制上下两部分。
X=0 y=0.5代表左边部分 x=0.5 y=1代表右半边部分。
     2  添加left Quad :GameObject—3d Object – Quad 然后将1中解压出的名字为 tcUVcon 的shader拖到此quad中修改quad的名称为left,然后修改x,y的值为0,0.5.
添加right Quad,同上 只是修改quad的名称为right,然后修改x,y的值为0.5,1
     3  添加两个层 left,right,将left Quad层选择为left 
同理修改right Quad,选择层为right
     4  选择leftCameraT,将culling mask,选择为left, 
同理rightCameraT 选择为right。
     5 新建脚本 MoivePlay3D.cs
         此cs同MoviePlayerSample,需要修改以下
  Awake() 中注释掉
//if (GetComponent<Renderer>().material == null || GetComponent<Renderer>().material.mainTexture == null)
		//{
		//	Debug.LogError("Can't GetNativeTextureID() for movie surface");
		//}

void Update()中添加
    {
        //responseGamePadInput();
        //leftQuad.renderer.material.mainTexture=movieTex;
        if (texture == null)
        {
            Debug.Log("333333");
        }else
        {
            Debug.Log("444444");
            leftQuad.GetComponent<Renderer>().material.mainTexture = movieTex;
            rightQuad.GetComponent<Renderer>().material.mainTexture = movieTex;
        }
       
        //rightQuad.renderer.material.mainTexture = movieTex;
}

添加全局变量
public GameObject leftQuad, rightQuad;

然后将左右quad 分别拖到脚本对应的leftQuad, rightQuad中

猜你喜欢

转载自wang-peng1.iteye.com/blog/2303325
VR