Показать прямую трансляцию камеры в Unity
У меня есть вопрос относительно единства. Надеюсь, на этот вопрос не ответили раньше. Я хочу подключить камеру (например, HD-камеру) к компьютеру, и видеопоток должен отображаться внутри моей сцены Unity. Подумайте об этом как о виртуальном телевизионном экране, который отображает то, что камера видит в реальном времени. Как я могу это сделать? Google не указал мне в правильном направлении, но, возможно, я просто не могу получить правильный запрос;)
надеюсь, вы понимаете, к чему я клоню.
2 ответов
Да, это, безусловно, возможно, и к счастью для вас Unity3D на самом деле поддерживает его довольно хорошо из коробки. Вы можете использовать WebCamTexture чтобы найти веб-камеру и отобразить ее в текстуру. Оттуда вы можете выбрать, чтобы отобразить текстуру на что-нибудь в 3D-сцене, включая виртуальный экран телевизора, конечно.
это выглядит довольно понятным, но приведенный ниже код должен начать вас.
список и распечатайте подключенные устройства обнаруживает:
var devices : WebCamDevice[] = WebCamTexture.devices;
for( var i = 0 ; i < devices.length ; i++ )
Debug.Log(devices[i].name);
подключитесь к подключенной веб-камере и отправьте данные изображения в текстуру:
WebCamTexture webcam = WebCamTexture("NameOfDevice");
renderer.material.mainTexture = webcam;
webcam.Play();
в случае, если это поможет, я публикую ответ, основанный на принятом ответе выше, написанном как скрипт C# (принятый ответ был в JavaScript). Просто прикрепите этот скрипт к GameObject, который имеет прикрепленный рендерер, и он должен работать.
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();
}
}