Jak mogę nagrywać z drugiej kamery w grze, a następnie eksportować ją do pliku wideo?

9

Tworzę grę Horror na PC w Unity i chcę mieć w grze symulację nagrywania z kamery - abyś mógł opuścić przerażające miejsce w dowolnym momencie, a będziesz miał taśmę z tym, co nagrałeś podczas kamery.

Technicznie rzecz biorąc, muszę przymocować drugi aparat (kamerę ręczną) do ręki postaci i pozwolić graczowi patrzeć przez wizjer, naciskając przycisk. Ale w dowolnej pozycji kamera ręczna musi rejestrować wszystko, co jest w tym momencie w centrum uwagi - podłogę, schody, śmieci itp., Niezależnie od tego, czy jest obniżona na poziomie ręki, czy podniesiona, aby pasowała do punktu widzenia gracza.

Kiedy gra się kończy (gracz wychodzi lub umiera), chciałbym mieć opcję zapisania nagranych taśm do pliku wideo (jeśli nie jest to możliwe, to do jakiegoś pliku zapisu).

Jak mogę zaimplementować taką funkcję w mojej grze? Czy są jakieś specjalne sztuczki Unity, dodatki i dodatkowe moduły? Zapisujesz dekoracje i sceny z aktywnymi wyzwalaczami, czy po prostu przechwytujesz wideo z ekranu?

Poniżej znajduje się krótka koncepcja MSPaint tego, co mam na myśli:

pojęcie

KatShot
źródło
Jeśli twoja gra jest deterministyczna (lub wystarczająco bliska), innym podejściem byłoby po prostu zapisanie rzeczy, takich jak pozycje i dane animacji, wyzwalacze dźwiękowe, dane wejściowe gracza i cokolwiek innego, co jest istotne, a następnie odtworzenie sceny z tych danych w późniejszym czasie. To zużywa znacznie mniej miejsca na dysku niż nagrywanie każdej klatki na dysk i prawdopodobnie zużywa nieco niższą wydajność (?).
Christian

Odpowiedzi:

6

Musisz dwukrotnie renderować scenę.

Najpierw renderujesz scenę z widoku kamery na teksturę .

Następnie renderujesz scenę z punktu widzenia gracza , ale z teksturą zastosowaną na ekranie aparatu .

To, co zmienia się między dwoma przebiegami renderowania, to zastosowana transformacja kamery , podczas gdy kamera wykorzystuje orientację i położenie kamery, widok odtwarzacza używa orientacji i położenia głowy gracza. Jeśli używasz animacji szkieletowej, byłoby to tak proste, jak przymocowanie modelu kamery do ręki modeli graczy.

Ponieważ renderujesz już teksturę, zapisanie wideo byłoby tak proste, jak zapisanie tekstury w każdej klatce . Gdy użytkownik zdecyduje się zapisać wideo, możesz przekonwertować tę sekwencję obrazów na format wideo .

Exilyth
źródło
1
Pamiętaj jednak, że jeśli niczego mi nie brakuje, ta metoda nie nagrywa żadnego dźwięku. Z pytania nie jestem pewien, czy jest to istotne, czy nie.
Christian