我正在尝试使用photosphere查看(顶部)立体视频和GoogleVR(Daydream)的剔除蒙版技术,但它似乎没有按预期工作。这就是我所做的:
基本上我的场景有2个摄像头和2个相同位置的光球。我正在使用左侧相机的剔除遮罩元素来阻挡右侧球体,反之亦然右侧相机,因此左眼只能看到左侧球体和右侧球体,只能看到右侧球体。 “LeftSphere”正在播放视频的上半部分,“RightSphere”正在播放下半部分。因此,我应该看到立体感。
此外,由于我的场景启用了VR,因此两个摄像头上都有一个“目标眼”元素。我相应地设置了 - 左边是摄像头,右边是右边摄像头。
问题在于,当我在Unity中播放我的场景进行测试时,它只在两只眼睛上播放RightSphere,并且任何相机都看不到左侧球体。
以下是我发现的情况。我只是不知道如何修复它:
(我正在使用UMP - UniversalMediaPlayer统一资产用于视频,顺便说一句)
我用我的Pixel在我的白日梦浏览器上试过它,它确实只是在玩monoscopic。
答案 0 :(得分:0)
好吧,所以我终于开始工作了!如果将来有人遇到同样的问题,这就是你需要做的事情:
我正在使用Unity 2017.1.0b4和UniversalMediaPlayer作为我的视频播放器。 请注意,这仅适用于GoogleVR。
这是导致我出问题的地方。因为每次加载或播放应用程序时都会创建新的相机,所以我必须找到一种方法来更改这4个相机的“剔除蒙版”和“目标之眼”。我发现如何做到这一点的唯一方法是通过脚本。
GameObject left;
Camera leftEye;
GameObject right;
Camera rightEye;
public LayerMask LeftEyeMask;
public LayerMask RightEyeMask;
// Use this for initialization
void Start () {
left = GameObject.Find(gameObject.name + " Left");
if (left != null) leftEye = left.GetComponent<Camera>();
right = GameObject.Find(gameObject.name + " Right");
if (right != null) rightEye = right.GetComponent<Camera>();
}
// Update is called once per frame
void Update () {
// LEFT EYE
if (left == null)
{
left = GameObject.Find(gameObject.name + " Left");
if (left != null)
leftEye = left.GetComponent<Camera>();
}
else
{
leftEye = left.GetComponent<Camera>();
if (leftEye != null)
{
leftEye.stereoTargetEye = StereoTargetEyeMask.Left;
leftEye.cullingMask = LeftEyeMask.value;
}
}
// RIGHT EYE
if (right == null)
{
right = GameObject.Find(gameObject.name + " Right");
if (right != null)
rightEye = right.GetComponent<Camera>();
}
else
{
rightEye = right.GetComponent<Camera>();
if (rightEye != null)
{
rightEye.stereoTargetEye = StereoTargetEyeMask.Right;
rightEye.cullingMask = RightEyeMask;
}
}
}
您的上下视频现在应该在Daydream或Cardboard中以3D模式播放。