在多个游戏对象上使用一个网络摄像头纹理

Posted

技术标签:

【中文标题】在多个游戏对象上使用一个网络摄像头纹理【英文标题】:Use one webcamtexture on multiple gameobject 【发布时间】:2019-07-30 09:40:50 【问题描述】:

我正在尝试 This Page 将 Theta S 相机映射到球体。

有两个半球体。映射是由着色器完成的,所以我不必关心这个。两个球体都有相同的代码: 公共 int cameraNumber = 0; private WebCamTexture webcamTexture;

void Start() 
 
     WebCamDevice[] devices = WebCamTexture.devices;
     if (devices.Length > cameraNumber) 
         webcamTexture = new WebCamTexture(devices[0].name, 1280, 720);
         GetComponent<Renderer>().material.mainTexture = webcamTexture;
         webcamTexture.Play();
      else 
         Debug.Log("no camera");
     
 

问题是,只有“sphere1”呈现 WebCamTexture。我用额外的测试平面进行了测试,只有平面渲染了 WebCamTexture。 (两个球体都没有)。 似乎只有一个游戏对象可以渲染一个 WebCamTexture。如何在多个游戏对象上渲染一个 WebCamTexture?

我已经尝试过This 和This,但都没有成功。 在此页面中,它在一行中提出了一个解决方案: 我无法理解。谁能帮帮我?

【问题讨论】:

【参考方案1】:

如果我正确理解您的代码,您将创建两次 WebcamTexture(每个 Sphere 对象一个)。网络摄像头通常只能用作单个实例。

我会尝试在不同的脚本中创建一个 WebCamTexture 对象,这样您就可以获得一个纹理。然后,您可以尝试将其分配给球体的材料。

我不确定为什么您提供的链接之一使用 Resources.Load 来获取对材料的引用;这也可以通过检查员分配。 (但你现在没有使用它)。

您也可以在 WebCamTextures 上尝试“isPlaying”,看看两者是否都返回 true。

【讨论】:

以上是关于在多个游戏对象上使用一个网络摄像头纹理的主要内容,如果未能解决你的问题,请参考以下文章

如何在Matlab中同时使用多个USB网络摄像头?

在覆盆子上使用带有多个网络摄像头的 opencv 来拍摄延时摄影时出现多个 v4l 错误

使用通用网络摄像头进行对象检测

通过 USB 编程访问多个网络摄像头

如何使用 getusermedia 让网络摄像头在 Firefox 上可靠地工作?

如何将多个 WebRTC 媒体流(屏幕捕获 + 网络摄像头)混合/组合成一个流?