Wie kann ich von einer zweiten In-Game-Kamera aufnehmen und später in eine Videodatei exportieren?

9

Ich mache ein PC-Horror-Spiel in Unity und möchte eine Kameraaufzeichnungssimulation im Spiel haben - damit Sie jederzeit einen gruseligen Ort verlassen können und ein Band mit dem haben, was Sie während der Erkundung vor der Kamera aufgenommen haben.

Technisch gesehen muss ich eine zweite Kamera (Hand-Cam) an der Hand des Charakters anbringen und den Spieler per Knopfdruck durch den Sucher schauen lassen. In jeder Position muss die Handkamera alles aufzeichnen, was an diesem Punkt im Fokus steht - Boden, Treppen, Müll usw., unabhängig davon, ob sie auf Handhöhe abgesenkt oder angehoben wird, um dem Standpunkt des Spielers zu entsprechen.

Wenn das Spiel endet (der Spieler verlässt oder stirbt), möchte ich die Option haben, aufgezeichnete Bänder in einer Videodatei zu speichern (wenn dies nicht möglich ist, dann in einer Speicherdatei).

Wie kann ich eine solche Funktion in meinem Spiel implementieren? Gibt es spezielle Unity-Tricks oder Add-Ons und zusätzliche Module? Dekorationen und Szenen mit aktiven Triggern speichern oder einfach nur Videos vom Bildschirm aufnehmen?

Im Folgenden finden Sie ein kurzes MSPaint-Konzept für das, was ich meine:

Konzept

KatShot
quelle
Wenn Ihr Spiel deterministisch (oder nah genug) ist, besteht ein anderer Ansatz darin, nur Dinge wie Positionen und Animationsdaten, Tonauslöser, Spielereingaben und alles andere, was relevant ist, zu speichern und die Szene zu einem späteren Zeitpunkt aus diesen Daten neu zu erstellen. Dies verbraucht viel weniger Speicherplatz als das Aufzeichnen jedes Frames auf der Festplatte und verbraucht wahrscheinlich etwas weniger Leistung (?).
Christian

Antworten:

6

Sie müssen Ihre Szene zweimal rendern.

Zunächst rendern Sie die Szene aus der Sicht der Kamera in eine Textur .

Dann rendern Sie die Szene aus der Sicht des Spielers , jedoch mit der Textur, die auf den Bildschirm der Kamera angewendet wird .

Was sich zwischen den beiden Renderdurchgängen ändert, ist die verwendete Kameratransformation , während der Camcorder die Ausrichtung und Position der Kamera verwendet, während die Spieleransicht die Ausrichtung und Position des Kopfes des Spielers verwendet. Wenn Sie eine Skelettanimation verwenden, ist dies so einfach wie das Anbringen des Kameramodells an der Hand des Spielermodells.

Da Sie dann bereits in Textur rendern, ist das Speichern eines Videos so einfach wie das Speichern der Textur in jedem Frame . Wenn der Benutzer das Video speichert, können Sie diese Bildsequenz in ein Videoformat konvertieren .

Exilyth
quelle
1
Beachten Sie jedoch , dass, wenn ich nicht etwas fehlt, würde dieses Verfahren nicht alle Audio überhaupt aufzunehmen. Von der Frage bin ich mir nicht sicher, ob das relevant ist oder nicht.
Christian