2014-06-30 7 views
14

Ich bin mit der komplexeren Funktion von Unity3D nicht vertraut und bin gespannt, ob es die Fähigkeit hat, ein Bild aufzunehmen und es dann zu manipulieren. Insbesondere möchte ich, dass der Benutzer ein Selfie macht und sie dann um ihr Gesicht herum verfolgen lässt, um ein PNG zu erstellen, das dann auf ein Modell texturiert wird.Kann ich mit der Kamera des Geräts ein Foto in Unity aufnehmen?

Ich weiß, dass das Face-Mapping auf ein Modell einfach ist, aber ich frage mich, ob ich die Foto-/Carving-Funktion in die umfassende Chrome-App schreiben muss oder ob alles innerhalb von Unity erfolgen kann. Ich brauche kein Tutorial, wie ich es machen kann, sondern nur, ob es etwas ist, das möglich ist.

+0

Für 2016 ist hier eine vollständige Erklärung, wie dies zu tun ist ... http://answers.unity3d.com/questions/909967/getting-a-web-cam-to-play-on-ui-texture-image .html # antwort-910020 *** KRITISCH *** ... folgen Sie dem Link, um den "magischen" Code zu erhalten *** drehen, invertieren, drehen Sie das Bild korrekt auf iOS/Android. – Fattie

Antwort

16

Ja, das ist möglich. Sie sollten sich die WebCamTexture Funktionalität ansehen.

Sie erstellen eine WebCamTexture und rufen ihre Play() Funktion auf, die die Kamera startet. WebCamTexture, wie jede Textur, ermöglicht es Ihnen, die Pixel über einen Aufruf GetPixels() zu erhalten. Auf diese Weise können Sie einen Snapshot erstellen, wenn Sie möchten, und Sie können dies in einem Texture2D speichern. Ein Anruf an EncodeToPNG() und anschließendes Schreiben in Datei sollte Sie dorthin bringen.

Beachten Sie, dass der folgende Code eine kurze Beschreibung basierend auf der Dokumentation ist. Ich habe es nicht getestet. Möglicherweise müssen Sie ein richtiges Gerät auswählen, wenn mehrere verfügbar sind.

+0

jetzt, wie man mit der Kameradrehung auf sagen Sie ein Android-Gerät, wenn Sie dies tun? – Codejoy

+0

Was genau ist hier um @Codejoy zu behandeln? Was willst du passieren? – Bart

+0

Zu spät für eine Antwort? Ich habe den Code sortiert, an ein GameObject mit einem SpriteRenderer angehängt .... er startet die Kamera, macht ein Foto, wenn ich den Knopf drücke, aber keine Live-Ansicht zeigt ... irgendwelche Ideen, was ich bin falsch machen? (Arbeitet in einer 2D-UI-Umgebung) – Matt

6

Für diejenigen, die versuchen, die Kamera Live-Feed zu rendern, hier ist, wie ich es geschafft habe, es zu ziehen. Zuerst bearbeitete ich Bart Antwort so die Textur auf Aktualisieren zugewiesen würde, anstatt nur auf Start:

void Start() 
{ 
    webCamTexture = new WebCamTexture(); 
    webCamTexture.Play(); 
} 

void Update() 
{ 
    GetComponent<RawImage>().texture = webCamTexture; 
} 

Dann brachte ich das Skript zu einem Gameobject mit einem rawimage Komponente. Sie können dies einfach mit der rechten Maustaste -> UI -> RawImage in der Hierarchie im Unity-Editor erstellen (dies erfordert Unity 4.6 und höher). Wenn Sie es ausführen, sollte in Ihrer Ansicht ein Live-Feed der Kamera angezeigt werden. Zum jetzigen Zeitpunkt unterstützt Unity 5 die Verwendung von Webcams in der kostenlosen Personal Edition von Unity 5.

Ich hoffe, dies hilft jedem, der nach einer guten Möglichkeit sucht, Live-Kamerafeed in Unity zu erfassen.

0

Es ist ein Plugin für diese Art von Funktionalität beziehen Camera Capture Kit genannt - https://www.assetstore.unity3d.com/en/#!/content/56673 und während der Funktionalität Bereitgestellt auf Mobil ausgerichtet enthält es eine Demo, wie Sie mit der WebCamTexture ein Standbild aufnehmen können.