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中