Como os modelos 3D nos jogos são projetados e exibidos? É tudo código? Desenhado em papel, depois em um software gráfico 3D, então ... o que?
É claro que os programadores de jogos não definirão todos os vértices de todas as formas (/ objetos) que desejam desenhar, todos em código (seja no Direct3D ou no OpenGL). Portanto, os designers de jogos têm ferramentas para usar, como Maya ou algo parecido com softwares gráficos 3D proprietários por aí; eles "desenham" o modelo nesse software, exportam-no em qualquer formato, depois os programadores o analisam via código e inserem automaticamente os vértices brutos decodificados / analisados do objeto / modelo?
Eu pesquisei muito no Google, mas não consegui encontrar algo sólido para explicar como esse aspecto dos videogames profissionais é trabalhado.
Respostas:
Em todos os jogos em que trabalhei, o Asset Creation Pipeline é mais ou menos assim:
Caberá ao Designer de Nível reunir os ativos para "construir" o próprio nível.
É incomum que um nível inteiro seja construído como uma única peça de geometria. A maioria dos níveis é composta de peças ou seções. (por exemplo: infamous usou um conjunto de "blocos" hexagonais http://www.gamasutra.com/php-bin/news_index.php?story=118581 e skyrim (e muitos outros) usam uma abordagem no estilo lego para reunir níveis http : //www.gamasutra.com/blogs/JoelBurgess/20130501/191514/ )
Geralmente, há um editor de nível de alguma descrição envolvido nesse processo, embora muitos jogos usem modeladores 3D como "editores de nível" para instanciar ativos criados anteriormente.
Uma vez feito tudo isso, os ativos são normalmente processados pela Toolchain, que transforma os arquivos compatíveis com o 3D Modeler em dados prontos para o jogo, que podem ser carregados diretamente no Tempo de Execução.
As cadeias de ferramentas (a parte que pega os ativos brutos e os transforma em dados prontos para o jogo) geralmente são algumas das peças mais complicadas de engenharia no desenvolvimento de jogos. Eles precisam conversar com muitos aplicativos diferentes, entender diversos formatos de arquivo e também como transformar dados em um formato mais eficiente e utilizável instantaneamente. As cadeias de ferramentas geralmente também executam pré-passes de iluminação, soldagem de vértice, geração de LOD e assim por diante. Geralmente, a criação de todo o conjunto de dados para um grande jogo AAA leva muito tempo, geralmente superior a 8 horas para uma reconstrução completa. Portanto, as cadeias de ferramentas normalmente também contêm processamento distribuído para distribuir a carga por todos os PCs em todo o estúdio.
O tempo de execução é o próprio jogo. O executável que roda em seu PC ou console. Dentro do tempo de execução, haverá um sistema chamado Gerenciador de Recursos. É tarefa do gerente de recursos carregar os ativos solicitados por outros sistemas dentro do jogo.
Por exemplo: quando você informa o carregamento do jogo em um Nível, os metadados do Nível fornecerão ao Gerenciador de Recursos uma lista de quais ativos precisam ser carregados para exibir o nível. Da mesma forma, cada ativo conterá uma lista de quaisquer texturas, materiais ou sub-ativos que precisam ser carregados.
Uma vez que tudo está realmente carregado na memória. O jogo enviará itens visíveis ao Renderer, que depois interagirão com a API usada para realmente desenhar itens na tela.
Os programadores podem (e fazem) gerar informações de vértice manualmente. Isso geralmente é chamado de "Renderização no modo imediato". Não é muito eficiente e é usado apenas para situações em que não é possível usar dados de vértices pré-gerados ou manipulados por sombreador. Por exemplo: Renderização da interface do usuário, Quads em tela cheia.
Normalmente, 99% dos objetos na tela serão informações de vértices pré-geradas renderizadas no modo "Retido", com os sombreadores executando qualquer manipulação necessária. Ex: Animação com Pele
fonte
Aqui está uma resposta simples: eles fazem tudo em aplicativos gráficos 3D como Maya ou 3DS Max. Primeiro eles fazem algumas artes conceituais (no papel), de acordo com eles criam modelos, texturas (no Photoshop ou algo assim). Também são feitas animações simples em todo o software; animações mais complexas são feitas via Motion Capture e, em seguida, mapeadas para o seu modelo. Para animação, você costuma usar a animação Skeleton.
Todos esses dados são salvos em arquivos.
Quando o jogo começa, ele analisa todos esses arquivos e carrega modelos, texturas e animações. E quando é necessário, ele os exibe.
fonte
Na verdade, os programadores podem definir cada vértice individualmente, se quiserem. Obviamente, esse nunca é o caso, a menos que eles estejam fazendo algum tipo de demonstração básica de cubo. Normalmente, o que é salvo nos arquivos de modelo é algo parecido com uma lista de vértices que o programador pode facilmente conectar facilmente ao código de desenho do modelo. Obviamente, há mais do que isso, mas basicamente os formatos de modelo estão fornecendo "instruções" indiretas sobre como desenhar um determinado modelo.
Em muitos casos, e para muitos formatos de arquivo de modelo, o lado da codificação foi feito para você. Existem até alguns formatos de modelo baseados em texto, com o código de desenho anexo, que facilitam bastante para um codificador amador seguir como o modelo está sendo convertido em código.
Eu nunca fui a pessoa que realmente escreveu esse código, portanto, é possível que alguns detalhes da minha explicação estejam desativados.
fonte
Eu tenho trabalhado sozinho para tentar montar um jogo. Eu posso lhe dar uma lista simples dos programas que eu uso.
Modelagem: 3D Coat, modo
Rigging: modo
Texturas: GIMP, Inkscape
Mecanismo de jogo: Unidade
Obviamente, esta é uma pequena lista de aplicativos, mas para mim eles funcionam e são acessíveis para desenvolvedores amadores e independentes.
fonte