我正在尝试使用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;
}
}
因此它似乎始终在一侧工作,而另一侧则完全是黑色的:
当我从另一侧删除WebcamTexture脚本时,任一侧实际上都可以正常工作。因此,我认为我的脚本存在某种问题。
很奇怪,我在父亲的Macbook上尝试了相同的操作,并且在两面都进行流媒体播放时效果很好,而且我设法裁剪了图像的所需面。但是,当我尝试在Linux机器上执行此操作时,它不起作用。我使用的是完全相同的代码,除了在wt1= new WebCamTexture(devices[0].name);
中使用1而不是0,因为macbook具有内置的摄像头。
我尝试了无数次使用Linux重做Mac上的操作,但是失败了。我必须使用Linux机器来完成我的整个项目,所以我不能仅仅为此使用macbook。因此,如果有人可以提供任何建议,我将不胜感激。
here的外观(在Mac上完成):