使用Unity

时间:2018-07-15 15:17:38

标签: visual-studio unity3d virtual-reality

我正在尝试使用ZED Cam上的两个摄像头将两个摄像头中的两个摄像头分别传输到HTC Vive装置的相应眼睛上。 因此,我已经设置了2个摄像头-使用SteamVR摄像头脚本&&设置一个用于左眼和一个用于右眼,然后将每个摄像头配置为在单独的眼睛和单独的显示器上渲染。

我在每个摄像机上附加了一个脚本,该脚本创建了WebCamTexture并允许我在Unity的RawImage UI组件上显示该脚本:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class CameraRender : MonoBehaviour {

    private WebCamTexture wt1;


    private bool camAvailable;
    private Texture defaultBackground;

    public RawImage background1;
    //public RawImage background2;

   public AspectRatioFitter fit;
   // Use this for initialization

   void Start () {

        WebCamDevice[] devices= WebCamTexture.devices;

        if (devices.Length>0)   {
            wt1= new WebCamTexture(devices[0].name);
            //wt2= new WebCamTexture(devices[0].name);
        }

        if (wt1 ==null) {
            return;
        }

        wt1.Play();
        background1.texture= wt1;
        camAvailable= true;

       //wt2.Play();
       //background2.texture= wt2;
       //camAvailable= true;

    }

    // Update is called once per frame
   void Update () {

        if (! camAvailable)
             return;

       float ratio= (float)wt1.width/(float)wt1.height;
       fit.aspectRatio=ratio;   
    }
}

因此它似乎始终在一侧工作,而另一侧则完全是黑色的:

screenshot

当我从另一侧删除WebcamTexture脚本时,任一侧实际上都可以正常工作。因此,我认为我的脚本存在某种问题。

很奇怪,我在父亲的Macbook上尝试了相同的操作,并且在两面都进行流媒体播放时效果很好,而且我设法裁剪了图像的所需面。但是,当我尝试在Linux机器上执行此操作时,它不起作用。我使用的是完全相同的代码,除了在wt1= new WebCamTexture(devices[0].name);中使用1而不是0,因为macbook具有内置的摄像头。

我尝试了无数次使用Linux重做Mac上的操作,但是失败了。我必须使用Linux机器来完成我的整个项目,所以我不能仅仅为此使用macbook。因此,如果有人可以提供任何建议,我将不胜感激。

here的外观(在Mac上完成):

0 个答案:

没有答案