¿Cómo puedo grabar desde una segunda cámara en el juego y luego exportarla a un archivo de video?

9

Estoy haciendo un juego de PC Horror en Unity, y quiero tener una simulación de grabación de cámara en el juego, para que puedas dejar una ubicación espeluznante en cualquier momento, y tendrás una cinta con lo que grabaste en la cámara mientras exploras.

Técnicamente, necesito conectar una segunda cámara (cámara de mano) a la mano del personaje y dejar que el jugador mire a través del visor presionando un botón. Pero en cualquier posición, la cámara de mano debe registrar todo lo que está enfocado en ese punto: piso, escaleras, basura, etc., ya sea que se baje al nivel de la mano o se eleve para que coincida con el punto de vista del jugador.

Cuando finaliza el juego (el jugador se va o muere), me gustaría tener una opción para guardar cintas grabadas en un archivo de video (si esto no es posible, luego en algún archivo guardado).

¿Cómo puedo implementar tal característica en mi juego? ¿Hay algunos trucos especiales de Unity, o complementos y módulos adicionales? ¿Guardar decoraciones y escenas con activadores activos, o simplemente tomar videos de la pantalla?

A continuación se muestra un concepto rápido de MSPaint de lo que quiero decir:

concepto

KatShot
fuente
Si su juego es determinista (o lo suficientemente cercano), otro enfoque sería simplemente guardar cosas como posiciones y datos de animación, disparadores de sonido, entrada del jugador y cualquier otra cosa relevante y luego recrear la escena a partir de estos datos en un momento posterior. Esto usa mucho menos espacio en disco que grabar cada fotograma en disco, y probablemente usa un poco menos de rendimiento (?).
Christian

Respuestas:

6

Necesitas renderizar tu escena dos veces.

Primero, renderiza la escena desde la vista de la cámara a textura .

Luego renderizas la escena desde el punto de vista de los jugadores , pero con la textura aplicada a la pantalla de la cámara .

Lo que cambia entre los dos pasos de renderizado es la transformación de la cámara utilizada, mientras que la videocámara usa la orientación y ubicación de la cámara, la vista de los jugadores usa la orientación y ubicación de la cabeza del jugador. Si está utilizando animación esquelética, esto sería tan fácil como adjuntar el modelo de cámara a la mano de modelos de jugador.

Como ya renderizas en textura, guardar un video sería tan fácil como guardar la textura en cada fotograma . Cuando el usuario elige guardar el video, puede convertir esta secuencia de imágenes a un formato de video .

Exilyth
fuente
1
Sin embargo, tenga en cuenta que, si no me falta nada, este método no grabaría ningún audio en absoluto. De la pregunta no estoy seguro de si eso es relevante o no.
Christian