Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/unity3d/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在统一连接多个摄像头时选择摄像头并输出视频_C#_Unity3d_Camera_Selection_Leap Motion - Fatal编程技术网

C# 在统一连接多个摄像头时选择摄像头并输出视频

C# 在统一连接多个摄像头时选择摄像头并输出视频,c#,unity3d,camera,selection,leap-motion,C#,Unity3d,Camera,Selection,Leap Motion,我正在尝试通过在Unity中连接手动跟踪摄像头设备(Leap motion:window device manager列表:0)和网络摄像头设备(window device manager列表:1)来显示AR视频 Leap motion使用制造商的SDK和软件包文件进行连接,因此无需额外编码来连接Unity中的摄像头 当我在Unity中连接网络摄像头(窗口设备管理器列表:1)并显示AR视频时,就会出现问题 将以下代码应用于对象时,如果同时连接了Leap motion和网络摄像头,则Leap mo

我正在尝试通过在Unity中连接手动跟踪摄像头设备(Leap motion:window device manager列表:0)和网络摄像头设备(window device manager列表:1)来显示AR视频

Leap motion使用制造商的SDK和软件包文件进行连接,因此无需额外编码来连接Unity中的摄像头

当我在Unity中连接网络摄像头(窗口设备管理器列表:1)并显示AR视频时,就会出现问题

将以下代码应用于对象时,如果同时连接了Leap motion和网络摄像头,则Leap motion将被识别并作为视频输出,网络摄像头的视频输出将变得不可能

如果从电脑上拔下leap motion后只连接了网络摄像头,则网络摄像头的视频输出是可能的

我想在Leap motion和webcam camera都连接到PC的对象上选择webcam camera(窗口设备管理器列表:1)来输出视频

由于我是Unity的初学者,我需要在下面的代码中简单地修改它

等待帮助

using UnityEngine;
using System.Collections;
 
public class WebCam : MonoBehaviour {
 
    // Use this for initialization
    void Start () {
        WebCamTexture web = new WebCamTexture(1280,720,60);
        GetComponent<MeshRenderer>().material.mainTexture = web;
        web.Play();
    }
    
    // Update is called once per frame
    void Update () {
    
    }
}
使用UnityEngine;
使用系统集合;
公共类网络摄像头:MonoBehavior{
//用于初始化
无效开始(){
WebCamTexture web=新的WebCamTexture(1280720,60);
GetComponent().material.mainTexture=web;
web.Play();
}
//每帧调用一次更新
无效更新(){
}
}
有一个接受参数的构造函数

deviceName:要使用的视频输入设备的名称

您可以通过列出所有可用的设备,并获得如下名称:

var devices = WebCamTexture.devices;
var webcamTexture = new WebCamTexture(devices[1].name);
using System.Linq;

...

var device = devices.Select(d => d.name).FirstOrDefault(n => !n.Contains("Leap"));
Debug.Log(string.Join("\n", devices.Select(d => d.name)));
你也可以过滤掉你需要的设备,比如

var devices = WebCamTexture.devices;
var webcamTexture = new WebCamTexture(devices[1].name);
using System.Linq;

...

var device = devices.Select(d => d.name).FirstOrDefault(n => !n.Contains("Leap"));
Debug.Log(string.Join("\n", devices.Select(d => d.name)));
为了了解摄像头是如何被调用的,并且能够通过名称进行过滤,您可以将它们全部打印出来,例如

var devices = WebCamTexture.devices;
var webcamTexture = new WebCamTexture(devices[1].name);
using System.Linq;

...

var device = devices.Select(d => d.name).FirstOrDefault(n => !n.Contains("Leap"));
Debug.Log(string.Join("\n", devices.Select(d => d.name)));
理论上,您甚至可以将它们输入下拉列表,让用户在创建
WebCamTexture
之前决定使用哪种设备,这样您就不必猜测硬编码的名称;)


另请注意:

在创建WebCamTexture之前调用