Como os modelos 3D são criados nos videogames?

15

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.

MMag
fonte
2
Aqui está uma documentação bastante realista do processo artístico: salvationprophecy.com/forum/viewtopic.php?f=4&t=413
Blue Wizard
Hmm ... isso pode ser considerado amplo demais para ser respondido ou não construtivo. Mas, ao mesmo tempo, parece razoável perguntar a alguém que nunca se aproximou do gamedev e quer começar a aprender, e isso pode ser uma boa resposta. Portanto, não tenho certeza se isso deve ser fechado ou não.
18713 Laurent Couvidou
11
Normalmente as pessoas que fazem os modelos são chamados de artistas , não Designers : character artist, artista ambiente, animador ... designer de jogo é mais sobre o projeto do real jogo, suas regras, etc.
Laurent Couvidou

Respostas:

16

Em todos os jogos em que trabalhei, o Asset Creation Pipeline é mais ou menos assim:

  1. o artista conceitual (para níveis / planos de fundo / modelos de nível) ou o artista de personagem (para modelos) gerará esboços para personagens / níveis / etc. Geralmente, várias opções são dadas ao diretor de criação / arte principal para decidir qual delas ele mais gosta.
  2. O conceito / arte do personagem que foi aprovado é dado ao modelador para usar como referência. Às vezes, o artista / personagem faz um perfil / frente adicionais na arte para fornecer uma moldura ou referência mais limpa para o processo de modelagem. Eu já vi muitos modeladores com a arte conceitual presos no 3d max / maya / etc como referência direta.
  3. Os modeladores geralmente também geram as texturas base para o modelo, geralmente com os materiais de shader corretos para o tempo de execução. shaders são usados ​​para renderizar o modelo no jogo e podem ter requisitos específicos de textura / uv / etc, que precisam ser fornecidos pelo modelador ou pelo artista de textura designado.
  4. 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.

  5. 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.

  6. 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

Matt D
fonte
7

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.

zacharmarz
fonte
11
Eu acho que há um pouco de programação necessário para transformar uma animação fluida para a próxima então quando você levar um tiro no meio de um salto que não parece estranho
Thomas
3
@ Thomas, Blend trees. Eu acho que. Mas esses são como sistemas de "interpolação" que são construídos como uma extensão em um mecanismo de jogo. Não necessariamente criado em modelos 3D. Eles basicamente sequestram os dados da animação e interpolam os dados com poderes mágicos.
Sidar
Sim. Certo. Você precisa carregar, analisar e de alguma forma representar o modelo. De alguma forma, desenhe-o na tela. Então, definitivamente - você tem que se misturar entre animação. Você também costuma usar cinemática inversa, mas esses são problemas mais específicos.
Zacharmarz 19/06/2013
2
Se apenas misturar árvores e transformar a animação fossem tão simples quanto "interpolação". Existem várias soluções de middleware caras e sofisticadas disponíveis apenas para lidar com esse domínio de problemas específico.
Sean Middleditch
4

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.

Katana314
fonte
2

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.

Kale Z. Raglius
fonte
2
-1 Fornecer uma lista dos aplicativos usados ​​não descreve o processo. Esta pergunta não é sobre software específico, é sobre como eles são feitos, não apenas sobre o que eles são feitos.
MichaelHouse