2013-10-20 26 views
6

Ho una domanda per quanto riguarda l'Unità. Spero che questo non abbia avuto risposta prima. Voglio collegare una telecamera (come una camma HD) al mio computer e il feed video devono essere visualizzati all'interno della mia scena Unità. Pensa ad esso come uno schermo televisivo virtuale, che mostra ciò che la videocamera sta vedendo in tempo reale. Come posso fare questo? Google non mi ha punto nella giusta direzione, ma forse sono solo in grado di ottenere il diritto di interrogazione;)display di alimentazione della fotocamera vivere in unità

Spero che tu capisca quello che sto andando per.

+1

Non ho usato Unità, ma quello che viene in mente è di ottenere l'immagine raw dalla fotocamera e quindi la mappatura questo per una texture visualizzato su un quad. –

+1

Cosa disse Hugo. Alcuni plugin, come [31] Prime (http://prime31.com/plugins) forniscono supporto (per $$$) per lo streaming live. Oppure puoi usare Unity [webcamtexture] (http://docs.unity3d.com/Documentation/ScriptReference/WebCamTexture.html) – Jerdak

risposta

13

Sì, questo è certamente possibile e fortunatamente per te Unity3D lo supporta davvero abbastanza bene. È possibile utilizzare un WebCamTexture per trovare la webcam e renderlo ad una texture. Da lì puoi scegliere di rendere la texture su qualsiasi cosa nella scena 3D, incluso lo schermo della tua televisione virtuale, naturalmente.

Sembra piuttosto auto esplicativo, ma il codice qui sotto dovrebbe iniziare voi fuori.

List e stampare i dispositivi collegati che rileva:

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

Connettersi a una webcam collegata e inviare i dati di immagine per una texture:

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

questo è quello che stavo cercando, grazie !! –

+0

Ho dovuto modificare leggermente aggiornando la WebCamTexture, in questo modo: 'WebCamTexture webcam = new WebCamTexture (" NameOfDevice ");' – Feckmore

+1

Come possiamo ottenere questo tramite la rete? – mebjas

2

In caso aiuta, io sono pubblicare una risposta, basata sulla risposta accettata sopra, scritta come script C# (la risposta accettata era in JavaScript). Basta allegare questo script a un GameObject a cui è collegato un renderer e dovrebbe funzionare.

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(); 
    } 
} 
Problemi correlati