Unity3D裁剪网络摄像头纹理

时间:2018-07-11 20:52:23

标签: c# unity3d webcam virtual-reality htc-vive

您好,我想知道是否有人可以帮助我统一解决我的问题。 因此,我正在使用具有双摄像头的ZED凸轮,并且希望将每个摄像头的单独输出显示到HTC Vive中的每个摄像头。

我的问题是使用StereoCam统一显示两个并排捕获的图像,我想分别访问每个侧面。现在,使用ZED插件很容易做到这一点,但是不幸的是,我有一台Linux机器,并与StereoLabs的工作人员确认该插件是Windows专有的。

我宁愿不必运行Windows VE来执行此操作,因此,如果有人可以让我深入了解如何统一分割WebCamTexture上捕获的图像,我将不胜感激!

我的代码(如果有人想知道的话):

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

public class CameraTest : MonoBehaviour {

private WebCamTexture webcamTexture2;

private bool camAvailable;
private Texture defaultBackground;

public RawImage background;
public AspectRatioFitter fit;
// Use this for initialization

void Start () {

    WebCamDevice[] devices = WebCamTexture.devices;
    for (int i = 0; i < devices.Length; i++)
        Debug.Log(devices[i].name);

    if (devices.Length>1)   {
       // webcamTexture1 = new WebCamTexture(devices[0].name);
        webcamTexture2 = new WebCamTexture(devices[1].name, Screen.width, Screen.height, 12);
    }

    if (webcamTexture2 == null)
    {
        return;
    }

    webcamTexture2.Play();
    background.texture = webcamTexture2;
    camAvailable = true;

    Debug.Log(webcamTexture2.requestedWidth);
    Debug.Log(webcamTexture2.requestedHeight);
    //WebCamTexture webCamTexture = new WebCamTexture();
    //this.GetComponent<MeshRenderer>().material.mainTexture = webCamTexture;

}

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

    if (!camAvailable)
        return;

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

谢谢!

0 个答案:

没有答案