Display live camera feed in Unity

Sören Kampschroer picture Sören Kampschroer · Oct 20, 2013 · Viewed 35.5k times · Source

I have a question regarding Unity. I hope this hasn't been answered before. I want to connect a Camera (like a HD cam) to my computer and the video feed should be displayed inside my Unity scene. Think of it like a virtual television screen, that displays what the camera is seeing in realtime. How can i do this? Google didn't point me in the right direction, but maybe I'm just unable to get the query right ;)

I hope you understand what I'm going for.

Answer

S.Richmond picture S.Richmond · Oct 21, 2013

Yes that certainly is possible and luckily for you Unity3D actually supports it quite well out of the box. You can use a WebCamTexture to find the webcam and render it to a texture. From there you can choose to render the texture on anything in the 3D scene, including your virtual television screen of course.

It looks pretty self explanatory but the below code should start you off.

List and print out the connected devices it detects:

var devices : WebCamDevice[] = WebCamTexture.devices;
for( var i = 0 ; i < devices.length ; i++ )
    Debug.Log(devices[i].name);

Connect to an attached webcam and send the image data to a texture:

WebCamTexture webcam = WebCamTexture("NameOfDevice");
renderer.material.mainTexture = webcam;
webcam.Play();