Recuerdo haber visto el trailer pre-renderizado de Tomb Raider, y deseé que esos gráficos pudieran estar en el juego mismo.
¿Por qué hay una diferencia tan grande entre el trailer y el juego real? Entiendo que el juego es un concepto completamente diferente, tiene una tubería diferente, tiene que pasar por diferentes tipos de interacciones de jugadores, etc. Quiero saber de qué se trata el juego que hace que sea tan difícil en comparación con las películas animadas.
Hasta ahora sé que hacer un juego y una película animada comparten una carga de trabajo básica, por ejemplo, hacer modelos en 3D, renderizarlos (solo en el juego sucede en vivo). Las películas animadas se reproducen durante mucho tiempo y solo vemos escenas pre-renderizadas. ¡Eso es todo lo que sé, así que espero que respondas desde esa perspectiva!
¿Qué pasa con la reproducción de películas animadas durante horas y horas las hace tan hermosas mientras que la representación en vivo en el juego es menos hermosa (desde un punto de vista general)?
Respuestas:
Ya mencionaste uno de los puntos centrales: el tiempo .
En el proceso detrás de la representación de una animación de alta fidelidad, se utilizan múltiples enfoques y algoritmos diferentes (todos generalmente combinados bajo el término "Iluminación global" ), siendo el trazado de rayos uno de los más comunes (otros incluyen, por ejemplo, Radiosidad y Oclusión ambiental )
El trazado de rayos implica simular un número (generalmente alto) de rayos de luz que atraviesan la escena y calcular sus trayectorias, sus reflejos y refracciones cuando golpean objetos con diferentes materiales. Los diferentes materiales a cambio tienen diferentes propiedades físicas que dan como resultado reacciones específicas para los rayos (la cantidad de luz que rebota de un objeto, por ejemplo, es mayor para un objeto brillante en comparación con uno brillante).
Otro punto es la física : simular miles de cepas de cabello de una manera físicamente correcta lleva mucho tiempo. Es por eso que en los juegos más antiguos, los pelos a menudo se aproximan con una malla muy rugosa que luego se texturiza para dar la impresión de cabello, tal vez con algunos objetos en movimiento adicionales para que se vea un poco más realista.
También a tener en cuenta: memoria y ancho de banda . Cuanto mayor sea la calidad de una textura aplicada a un objeto en una escena, más memoria necesitará cargar y usar en un juego. Pero no solo el sistema necesita tener suficiente memoria para contener los datos, sino que estos datos también deben transferirse alrededor de los cuales se usa el ancho de banda disponible. Dado que la memoria y el ancho de banda son limitados, hay un máximo de lo que se puede lograr.
Los juegos a menudo hacen trampa un poco al usar solo texturas de alta resolución para objetos cercanos, y usan imágenes de menor resolución para los objetos lejanos (término: MipMapping ), reduciendo así el ancho de banda necesario, ya que es necesario buscar menos texels, lo que a cambio aumenta el rendimiento (Consulte la sección sobre MipMapping en la Guía de programación OpenGLES de Apple).
Del mismo modo, los juegos también suelen usar diferentes mallas para los objetos, dependiendo de qué tan lejos estén con los objetos lejanos que son menos detallados (término: LoD = Nivel de detalle ).
Conclusión: en gráficos en tiempo real (como juegos y simulaciones), este proceso de renderizado detallado y complejo, por supuesto, no funcionará para producir escenas fluidas / suaves. Necesita al menos 20 cuadros renderizados por segundo para lograr ese efecto fluido de animación / movimiento para el ojo humano. Por otro lado, renderizar un solo fotograma (!) En una película de animación puede tomar fácilmente desde unas pocas horas hasta varios días, dependiendo de muchos factores, como la cantidad de rayos utilizados en Ray-Tracing o la cantidad de muestras para Ambient Oclusión (consulte la página 1 de Pixar / la página 2 de Pixar para ver capturas de pantalla de 16 frente a 256 muestras), así como la resolución de película deseada (más píxeles = más información para calcular). Ver también este artículosobre el proceso detrás de la película de animación de la Universidad de Monstruos de Pixar , que ofrece algunas ideas interesantes y también menciona 29 horas de procesamiento por fotograma.
En general: cuanto mayor sea la fidelidad / realismo que se va a lograr, generalmente se necesitan más iteraciones / rebotes / muestras, lo que a cambio requiere más recursos (tiempo y / o potencia de cálculo / memoria). Para visualizar la diferencia, vea el renderizado resultante en función del número de rebotes para el cálculo de refracción en este ejemplo: rebotes de diamante de Keyshot
Pero, por supuesto, la calidad en las aplicaciones en tiempo real aumenta todo el tiempo por dos razones:
Se desarrollan e implementan métodos / fórmulas más inteligentes que pueden crear efectos bastante realistas sin necesidad de trazado de rayos. Esto a menudo implica aproximaciones y, a veces, datos precalculados. Algunos ejemplos:
fuente
Además del factor tiempo, vale la pena señalar que en una película, el artista tiene control total sobre lo que el espectador verá y no verá.
En la escena típica de una película, la cámara no pasará mucho tiempo apuntando al techo, o apuntando a una esquina oscura de la habitación, o apuntando al tobillo de alguien, por lo que el presupuesto de polígono y texturas para esos elementos será bastante bajo.
Si toda la escena tiene lugar desde un punto de vista, el set virtual (como un set de película real) no necesita incluir las partes que están detrás de la cámara. En la mayoría de los juegos, el jugador puede mirar en cualquier lugar en cualquier momento. Eso significa que el presupuesto de calidad puede centrarse en lo que realmente se ve. (Algunos juegos en tercera persona, por ejemplo, la serie God Of War, usan una cámara restringida; sus visuales tienden a ser notablemente mejores que los de más juegos de cámara libre).
fuente
Asume que la diferencia está simplemente en el renderizado: en una película animada, también existe la posibilidad de editar después del hecho. Pueden tener efectos compuestos que habrían sido difíciles de lograr en el motor original, o pueden modificar un poco las cosas (por ejemplo, eliminar o repetir cada 10 cuadros para acelerar / ralentizar la animación).
Si tienes la oportunidad, busca uno de los DVD de 'Roughnecks: The Starship Trooper Chronicles', ya que tienen pistas de comentarios del editor y animadores sobre los trucos que tuvieron que hacer cuando comenzaron a retrasarse en su horario de entrega, cosas como reciclando tomas pero volteando el eje para que no fuera tan obvio, correcciones de color, enmascarar cosas que no les gustaban, agregar explosiones, etc.
fuente
Ya respondiste tu propia pregunta. Las películas animadas generalmente tienen un mayor nivel de detalle, lo que provoca un largo tiempo de renderizado para cada fotograma individual.
Los juegos, por otro lado, no tienen tantos detalles, ya que la escena debe representarse 30 o más veces por segundo. Esa es también la razón por la cual los desarrolladores intentan reutilizar la mayor cantidad de activos (texturas, modelos, etc.) como sea posible, porque representar el mismo objeto en dos posiciones es mucho más rápido que si todo fuera único. También tienen que tener cuidado de no usar demasiados polígonos en sus modelos y, en su lugar, tratar de lograr una impresión de profundidad utilizando iluminación, texturas, mapeo de relieve y otras técnicas.
Las películas no tienen ese problema; hacen que la escena sea de la manera que desean y usan tantas texturas, modelos y geometrías detalladas como necesitan para lograr la escena que están buscando.
Sin embargo, uno podría argumentar que los juegos se están poniendo al día. Si miras algunos de los juegos más atractivos de los últimos tiempos, no están tan lejos de la calidad de la película como solían estar. Por supuesto, siempre podrás incluir más detalles en una escena renderizada previamente que en un juego, pero creo que la diferencia no será tan notable dentro de unos años.
fuente
Las otras respuestas cubren los problemas de gráficos en bruto con buen detalle, pero no mencionan una parte importante del realismo de los juegos frente a las películas y los avances: las animaciones y los movimientos de la cámara .
En una película o avance, cada movimiento de personas y cámaras se puede coordinar cuidadosamente para mostrar la emoción correcta por el momento, y nunca es necesario repetirlas. En los videojuegos, el juego debe ser capaz de reaccionar instantáneamente a los movimientos del jugador, y debe reutilizar un pequeño grupo de animaciones comunes para llenar las horas ilimitadas de tiempo de juego que pueden ser posibles.
Ejemplos de esto del tráiler en cuestión son cuando el terapeuta asiente con la cabeza y le da una sonrisa "no está mal" , y cuando Lara agarra el reposabrazos, mueve la pierna o mira con asombro la caverna. Estas pequeñas cosas (o la falta de ellas, y los personajes "plásticos" involucrados) afectan el realismo percibido mucho más que pequeñas mejoras gráficas.
A diferencia de las otras diferencias gráficas, este no es un problema que pueda resolverse potencialmente si le brindamos más poder de cómputo: es una diferencia fundamental entre un mundo con secuencias de comandos y un mundo que responde a cada una de sus acciones. En este aspecto particular, espero que el realismo de los avances de hoy supere toda la jugabilidad en el futuro previsible.
fuente
Además de las otras excelentes respuestas que ya se publicaron, vale la pena señalar que para lograr los tiempos de procesamiento rápidos que necesitan los juegos, los desarrolladores de juegos deben hornear muchos de sus efectos visuales como texturas simples. Esto significa que se debe tener mucho cuidado para evitar un efecto que no cueza bien.
Un efecto importante que es difícil de hornear para los videojuegos es la dispersión subsuperficial (SSS) . Desafortunadamente, este efecto es realmente importante para generar una piel humana de aspecto realista. Es por eso que muchos personajes de videojuegos "realistas" parecen plásticos.
Una forma en que los desarrolladores evitan este problema es haciendo deliberadamente que los personajes tengan colores brillantes para restarle importancia al aspecto plástico, o agregando muchas sombras y detalles texturales a la cara (como barbas, etc.) para dividir las secciones continuas y grandes de lo contrario. piel.
fuente
Para responder una de las preguntas que el OP hizo en un comentario:
Esta pregunta es más difícil de lo que parece. Creo que una buena regla general es la siguiente ecuación (que hice a propósito):
Básicamente, esto significa que para modelos con relativamente pocos materiales especiales (es decir, sin espejo, subsurf, etc.), el tiempo de cálculo estará determinado por la cantidad de polígonos. Este suele ser el caso de los gráficos de videojuegos muy simples.
En la práctica, sin embargo, en los juegos más nuevos de alta gama y especialmente en las películas, el culpable es "generalmente" el trazado de rayos. ¿Por qué? Bueno por dos razones. Primero daré la razón matemática, y luego mi opinión sobre la verdadera razón al final.
Razón matemática:
Actualización: esta explicación matemática puede no ser completamente precisa. Consulte la explicación de CrazyCasta en los comentarios para obtener más detalles.
Supongamos que tiene 1000 polígonos y 3 fuentes de luz. El número más pequeño de trazos de rayos que necesita realizar es 3 * 1000.
Si simplificamos demasiado la situación y suponemos que 1 trazo de rayo = 1 cálculo (una subestimación bruta) entonces necesitaremos 3000 cálculos.
Pero ahora supongamos que quieres tener reflejos también.
Las configuraciones predeterminadas para reflexiones en el programa gratuito Blender son:
Para estas configuraciones, podemos adivinar que, en el mejor de los casos, esta reflexión súper simple duplicará el costo computacional de su modelo.
Pero, como dije antes, este ejemplo está muy simplificado y puedes encontrar muchos efectos (además de los que ya mencioné) que dispararán tu tiempo de renderizado por las nubes.
Caso y punto: intente representar los reflejos con
gloss=1
(el valor predeterminado en Blender), luego baje el brillo a 0.01 y compare los dos tiempos de representación. Encontrará que el que tiene un brillo de 0.01 será mucho más lento, pero la complejidad del modelo no ha cambiado en absoluto.Mi razón cualitativa pero más realista:
El aumento de la complejidad de la malla solo mejorará la calidad del modelo hasta cierto punto. Después de pasar un par de millones de caras, realmente no hay muchas cosas que sumen más caras. Incluso iré tan lejos como para decir que si usa suavizado, podrá salirse con solo un par de cientos de caras para la mayoría de los propósitos generales.
Pero las cosas que casi siempre marcan la diferencia son la iluminación, los efectos materiales y el trazado de rayos. Es por eso que las películas tenderán a usar una gran cantidad de estas en un intento de aproximarse a las hermosas complejidades del mundo real.
Una excelente manera de tener una idea de todo esto es mirar la lista de actores al final de las últimas animaciones de Disney. Probablemente se sorprenderá de cuántas personas de iluminación y textura tienen.
fuente
:)
Vale la pena agregar que la animación de películas generalmente hace una gran cantidad de trucos visuales para hacer que el movimiento percibido sea más fluido.
Los animadores pueden, por ejemplo, usar técnicas tradicionales de animación manual que normalmente no se usan en renderizado en tiempo real, como frotis, múltiplos o deformaciones para producir un movimiento más fluido a pesar de la tasa de fotogramas más baja que son las películas (en cualquier caso, hasta hace poco) ) visualizado en. El uso de frotis y múltiplos en particular es complicado por el uso de mallas: debe producir deformaciones de malla para ese tipo de distorsión de malla, y no creo haberlo visto en ningún videojuego en 3D.
Los marcos con objetos que se mueven rápidamente que pasan a través de ellos pueden renderizarse a una velocidad de fotogramas diferente y luego combinarse nuevamente para producir un desenfoque de movimiento a través de la escena. El desenfoque de movimiento es una técnica bastante común en los gráficos 3D en tiempo real en estos días. El efecto generalmente no es de la alta calidad que obtendrá una casa de animación con docenas de procesadores a su disposición (vea las respuestas de "tiempo" más arriba) en gran parte debido al hecho de que el desenfoque de movimiento falso realmente requiere múltiples pasos de procesamiento posterior por capa, y una gran cantidad de cuadros intermedios para ser realmente fluidos.
Hacer este tipo de trucos visuales para mejorar la calidad percibida con gráficos en tiempo real efectivamente requiere limitar la velocidad de fotogramas de salida a tasas muy por debajo de los fotogramas intermedios máximos disponibles de procesamiento en segundo plano, y luego realizar la composición para producir el fotograma final. Probablemente hay varias escuelas de pensamiento sobre si las pequeñas ganancias en la fidelidad visual al usar técnicas como esta valen la pérdida del presupuesto del marco, particularmente si va a ser extremadamente difícil hacerlo bien.
Para abordar un aspecto de su pregunta:
Artesanía, principalmente. Los artistas en tiempo real no tienen la oportunidad de ajustar cada cuadro o crear trucos únicos para mejorar el aspecto general de una escena o reacción, no solo por las limitaciones de tiempo (tanto en desarrollo como en renderizado) sino también porque de restricciones prácticas. Como se señaló en el comentario de interactividad, el jugador probablemente no va a hacer exactamente lo mismo cada vez, pero la película se reproducirá igual cada vez.
Esto significa que el artista de videojuegos tiene un conjunto de prioridades muy diferente en lo que respecta a la calidad del modelo y la calidad final del renderizado que el artista de la película. Ambos requieren enormes cantidades de habilidad, pero cada uno exige diferentes técnicas. Espero que estas técnicas converjan cada vez más a medida que el hardware de renderizado a nivel de consumidor continúa progresando y surgen más genios matemáticos en sus SIGGRAPH y sus GDC.
fuente
Una sola película animada podría tardar muchos años en representarse en una sola bestia de una máquina. Dado que está pre-renderizado, no importa cuántos efectos costosos como rebotes de luz, sombras, etc., agreguemos a la escena. Estas películas generalmente se procesan en granjas de renderizado donde miles de PC están unidas para trabajar en el mismo trabajo.
La razón por la que no podemos lograr la misma calidad en tiempo real es simplemente porque la máquina necesita renderizar el fotograma actual en aproximadamente 16 ms para lograr un FPS de 60. Un solo fotograma para una película animada puede tardar horas en renderizarse en una sola PC.
En un juego, además de los gráficos, están sucediendo muchas otras cosas. Cada cuadro hay toneladas de cálculos. Simplemente dicho, una película animada no necesita calcular el daño recibido por el jugador de un lanzacohetes, solo anima los gibs y los polígonos se renderizarán.
Afortunadamente, hay algunas personas geniales caminando en este planeta. Además de mejores PC que pueden renderizar más polígonos y texturas más grandes, hay algunos inventos ingeniosos hechos como mapas normales que pueden animar luces / sombras en un polígono plano a muy bajo costo, haciendo que un objeto 3D aburrido se vea extraordinariamente detallado.
Algunos de estos costosos efectos que hacen que las películas tengan ese toque extra.
En pocas palabras, necesitamos idear trucos "baratos" para que un juego se vea bien. Pero el ojo humano es difícil de engañar.
fuente