Sör*_*oer 7 c# unity-game-engine unityscript
我有一个关于Unity的问题.我希望以前没有回答过.我想将相机(如高清摄像头)连接到我的电脑,视频输入应显示在Unity场景中.可以把它想象成一个虚拟电视屏幕,它可以实时显示相机所看到的内容.我怎样才能做到这一点?谷歌没有指出我正确的方向,但也许我只是无法正确查询;)
我希望你明白我的意思.
S.R*_*ond 16
是的,这当然是可能的,幸运的是Unity3D实际上支持它开箱即用.您可以使用WebCamTexture查找网络摄像头并将其渲染为纹理.从那里,您可以选择在3D场景中的任何内容上渲染纹理,当然也包括虚拟电视屏幕.
它看起来很自我解释,但下面的代码应该让你开始.
列出并打印出它检测到的已连接设备:
var devices : WebCamDevice[] = WebCamTexture.devices;
for( var i = 0 ; i < devices.length ; i++ )
Debug.Log(devices[i].name);
Run Code Online (Sandbox Code Playgroud)
连接到连接的网络摄像头并将图像数据发送到纹理:
WebCamTexture webcam = WebCamTexture("NameOfDevice");
renderer.material.mainTexture = webcam;
webcam.Play();
Run Code Online (Sandbox Code Playgroud)
如果有帮助,我将根据上面接受的答案发布一个答案,编写为 C# 脚本(接受的答案是在 JavaScript 中)。只需将此脚本附加到附加了渲染器的游戏对象,它就可以工作。
public class DisplayWebCam : MonoBehaviour
{
void Start ()
{
WebCamDevice[] devices = WebCamTexture.devices;
// for debugging purposes, prints available devices to the console
for(int i = 0; i < devices.Length; i++)
{
print("Webcam available: " + devices[i].name);
}
Renderer rend = this.GetComponentInChildren<Renderer>();
// assuming the first available WebCam is desired
WebCamTexture tex = new WebCamTexture(devices[0].name);
rend.material.mainTexture = tex;
tex.Play();
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
29293 次 |
| 最近记录: |