¿Cómo se diseñan y muestran los modelos 3D en los juegos? ¿Es todo código? Dibujado en papel, luego en un software de gráficos 3D, entonces ... ¿qué?
Por supuesto, los programadores de juegos no definirán cada vértice de cada forma (/ objeto) que quieran dibujar, todo en código (ya sea en Direct3D o OpenGL). Entonces, ¿los diseñadores de juegos tienen herramientas para usar, como Maya o algo parecido a los softwares de gráficos 3D patentados que existen; ¿"dibujan" el modelo en ese software, lo exportan en cualquier formato, luego los programadores lo analizan mediante código e ingresan automáticamente los vértices sin procesar decodificados / analizados del objeto / modelo?
He buscado mucho en Google, pero no pude encontrar algo sólido para explicar cómo se trabaja este aspecto de los videojuegos profesionales.
Respuestas:
En todos los juegos en los que he trabajado, el Canal de creación de activos es algo así:
Será el trabajo del diseñador de niveles juntar los activos para "construir" el nivel mismo.
Es inusual que todo un nivel se construya como una sola pieza de geometría. La mayoría de los niveles están construidos de piezas o secciones. (por ejemplo: infame usó un conjunto de "mosaicos" hexagonales http://www.gamasutra.com/php-bin/news_index.php?story=118581 y skyrim (y muchos otros) usan un enfoque de estilo lego para reconstruir niveles http : //www.gamasutra.com/blogs/JoelBurgess/20130501/191514/ )
Por lo general, hay un editor de niveles de alguna descripción involucrado en este proceso, aunque muchos juegos han utilizado modeladores 3D como "editores de niveles" para crear instancias de activos creados previamente.
Una vez hecho todo esto, los activos son procesados típicamente por Toolchain, que convierte los archivos amigables del Modelador 3D en datos listos para el juego que se pueden cargar directamente en el Runtime.
Las cadenas de herramientas (el bit que toma los recursos en bruto y los transforma en datos listos para el juego) son a menudo algunas de las piezas de ingeniería más complicadas en el desarrollo de juegos. Necesitan hablar con muchas aplicaciones diferentes, comprender muchos formatos de archivo diferentes y también comprender cómo transformar los datos en un formato más eficiente e instantáneamente utilizable. Las cadenas de herramientas también suelen realizar pasadas de iluminación, soldadura de vértices, generación de LOD, etc. A menudo, construir todo el conjunto de datos para un gran juego AAA llevará mucho tiempo, a menudo más de 8 horas para una reconstrucción completa. Por lo tanto, las Cadenas de herramientas también suelen contener procesamiento distribuido para distribuir la carga en todas las PC en todo el estudio.
El tiempo de ejecución es el juego en sí. El ejecutable que se ejecuta en su PC o consola. Dentro del tiempo de ejecución habrá un sistema llamado Administrador de recursos. Es el trabajo del Administrador de recursos cargar los activos solicitados por otros sistemas dentro del juego.
Por ejemplo: cuando le dice a la carga del juego en un Nivel, los metadatos del Nivel le proporcionarán al Administrador de recursos una lista de los activos que deben cargarse para mostrar el nivel. Del mismo modo, cada activo contendrá una lista de las texturas, materiales o activos secundarios que se deben cargar.
Una vez que todo está realmente cargado en la memoria. El juego enviará cosas que son visibles para el Renderer que luego interactuará con la API utilizada para dibujar cosas en la pantalla.
Los programadores pueden (y lo hacen) generar información de vértices a mano. Esto normalmente se denomina "Representación en modo inmediato". No es muy eficiente, y solo se usa para situaciones en las que no es posible usar datos de vértices pregenerados o manipulados por sombreadores. Por ejemplo: UI Rendering, Quads de pantalla completa.
Por lo general, el 99% de los objetos en pantalla serán información de vértice pregenerada representada en modo "Retenido", con los sombreadores realizando cualquier manipulación requerida. Por ejemplo: animación de piel
fuente
Aquí hay una respuesta simple: lo hacen todo en aplicaciones de gráficos 3D como Maya o 3DS Max. Primero hacen algunas artes conceptuales (en papel), según ellos crean modelos, texturas (en Photoshop o algo así). Las animaciones simples también se realizan completas en el software, las animaciones más complejas se realizan a través de Motion Capture y luego se asignan a su modelo. Para la animación, usualmente usas la animación Esqueleto.
Todos estos datos se guardan en archivos.
Cuando comienza el juego, analiza todos estos archivos y carga modelos, texturas y animaciones. Y cuando es necesario, los muestra.
fuente
Los programadores en realidad pueden definir cada vértice individualmente si lo desean. Este, por supuesto, nunca es el caso a menos que estén haciendo algún tipo de demostración básica de cubos. Normalmente, lo que se guarda en los archivos del modelo es algo similar a una lista de vértices que el programador puede conectar fácilmente a su código de dibujo del modelo. Obviamente, hay más que eso, pero básicamente los formatos de modelo están dando "instrucciones" indirectas sobre cómo dibujar un determinado modelo.
En muchos casos, y para muchos formatos de archivo de modelo, el lado de la codificación se ha hecho por usted. Incluso hay algunos formatos de modelo basados en texto, con el código de dibujo que lo acompaña, que hacen que sea bastante fácil para un codificador aficionado seguir cómo se está traduciendo el modelo al código.
Sin embargo, nunca he sido la persona que realmente escribió este código, por lo que es posible que algunos detalles de mi explicación estén desactivados.
fuente
He estado trabajando por mi cuenta para intentar armar un juego. Puedo darte una lista simple de los programas que uso.
Modelado: 3D Coat, modo
Aparejo: modo
Texturas: GIMP, Inkscape
Game Engine: Unity
Obviamente, esta es una pequeña lista de aplicaciones, pero para mí funcionan y son asequibles para desarrolladores aficionados e independientes.
fuente