Ao responder a essa pergunta por swquinn , a resposta levantou uma pergunta mais pertinente para a qual eu gostaria de ouvir respostas. Vou postar nossa própria estratégia (prometo não aceitá-la como resposta), mas gostaria de ouvir outras pessoas.
Especificamente: como você define um orçamento razoável para sua equipe de conteúdo. Geralmente, uma das primeiras perguntas feitas em um desenvolvimento é: qual é o nosso orçamento de polígono? É claro que hoje em dia é raro que a contagem de vértices / polissomos seja o fator limitador; em vez disso, a complexidade do sombreador, a taxa de preenchimento e a complexidade da iluminação entram em cena.
O que a equipe de conteúdo deseja são alguns números / limites rígidos para trabalhar, de modo que eles tenham uma expectativa razoável de que seu conteúdo, assim que entrar no mecanismo, não será muito pesado. Dado que 'depende' não é uma resposta particularmente útil, eu gostaria de ouvir uma estratégia que me permita fornecer limites viáveis sem ser a) enganosa ou b) errada.
fonte
Respostas:
Pelo meu entendimento, é muito mais fácil reduzir a complexidade de um modelo do que adicionar detalhes a um modelo que foi desenvolvido e adaptado. Sei que algumas empresas tiram vantagem disso agrupando ativos muito detalhados e diminuindo-os dependendo da situação.
A Valve faz isso com seus NPCs. Os NPCs são modelados em detalhes extremos, sem qualquer tipo de mapeamento, e os escalam para um nível aceitável pela tecnologia atual e truques, como várias técnicas de mapeamento aplicadas com base em modelos detalhados (ou mesmo criados automaticamente).
Isso também ajuda nas provas futuras, pois você nunca precisará recriar os ativos, apenas alterá-los para cada novo projeto. Isso também tem a vantagem de que não há necessidade de esperar que uma equipe realize benchmarking com contexto específico antes que os ativos possam começar a ser desenvolvidos. Os artistas podem estar totalmente envolvidos desde o primeiro dia.
fonte
Ok, então nossa estratégia é:
Finalmente: seja conservador com seus números. Renderizar não é a única coisa que seu jogo terá que fazer; portanto, decida qual a proporção do quadro que você deseja gastar renderizando e faça disso o seu alvo. Por exemplo, se você deseja gastar dois terços do seu quadro na renderização a 30fps, segmente 1s / 22ms (45 fps) em seus testes.
Fora de tudo isso, você deve ser capaz de dar exemplos de cenas. Por exemplo, aqui está uma cena com polígonos de 200K, 5 luzes estáticas e não mais que 3 luzes dinâmicas por modelo, com 15 caracteres de 50K polys e 30 ossos, e roda a 60fps e ocupa 30MB de memória.
fonte
Contagem de vértices
Eu pesquisei "Polygon Count" por mais de 15 anos. Não existe uma maneira estrita de determinar quanto é o seu limite, especialmente com software e hardware mais modernos. Os limites eram muito mais úteis em mecanismos que suportavam apenas 4.000 triângulos para um nível inteiro. Agora, você encontrará muitos objetos no ambiente do jogo que excederão isso individualmente.
O que importa em última análise é o que o mecanismo está fazendo com as faixas poligonais.
Quando o mecanismo renderiza cada modelo, as coordenadas mapeadas por UV são capturadas, a textura / material representado nos triângulos e cria tiras de triângulo. Na maioria dos casos, um ventilador de triângulo é dividido em tiras de triângulo separadas por triângulo. Isso aumenta o número de tiras de triângulo, diminuindo o desempenho.
Um excelente exemplo de consertar isso é a parte superior plana de um cilindro. Pacotes 3D geralmente montam um ventilador triangular com um vértice no centro. Eu apago as arestas e o vértice central e, em seguida, crio quadríceps na face. Isso deve triangular em uma única faixa triangular em vez de várias faixas de uma face, sem alterar a contagem de polígonos.
Tome a contagem de polígonos como um guia e cuide de como você modela e o Mapa UV da malha. Menos divisões na malha quando o mapeamento UV frequentemente pode ser mais benéfico.
Em seguida, considere o que pode ser falsificado com mapas normais. Uma face plana com muitos detalhes de caso geralmente pode ser mapeada normalmente. As curvas só precisam ser redondas onde você pode ver uma silhueta. Ao olhar para os rostos curvos de frente, você não deve notar a diferença entre o recurso de alta resolução e o recurso de resolução do jogo. A silhueta é o que faz a diferença no seu modelo quando há mapas normais. A silhueta agora pode ser modificada com o DirectX 11, usando mapeamento de mosaico e deslocamento.
Design de jogo
Considere o seguinte ao criar seu jogo:
Usando os tipos de jogo e exibição, decida qual será a profundidade de exibição. Você verá objetos distantes e com que clareza? Você está fazendo algo com visão limitada, como um atirador de corredor? (por exemplo, Gears of War) Você está fazendo algo de roaming gratuito com paisagens abertas? (por exemplo, Skyrim)
Depois de saber como deve ser, você pode pesquisar jogos semelhantes.
A animação limitará sua capacidade de aumentar a contagem de polígonos. Malhas estáticas, qualquer coisa que permaneça na mesma posição é mais barata na GPU e na CPU. Especialmente se não forem objetos de física. Para objetos de física, é possível criar cascos simples de colisão e malhas visuais complexas. Não há interação suficiente na maioria dos jogos para perceber a diferença. A animação move seu modelo tridimensionalmente, com vários ossos por vértice, misturando-se entre a ponderação de cada um deles. Isso pode ser caro no tempo da CPU, o que pode colidir com a IA e a física baseada em software. Quanto mais vértices forem afetados pelo número de ossos no modelo inteiro, menor o desempenho da CPU. Esta é a outra razão pela qual os personagens do jogo são considerados "art". É muito difícil definir um limite de polígono.
Meu exemplo
Eu uso o UDK, fazendo um jogo de tiro em terceira pessoa em ritmo lento, com número limitado de jogadores e NPCs na tela a qualquer momento. Para isso, pretendo aproximadamente 10.000 triângulos por jogador, 5.000 triângulos para inimigos típicos e genéricos, e se eu estivesse criando um personagem no estilo "chefe", cerca de 15.000. Além disso, armas para a terceira pessoa em torno de 4.000 triângulos aparecerão altamente detalhadas. Veículos em torno de 10.000 triângulos. Tudo exigirá nível de detalhe, porque eu preciso de longas distâncias de visualização.
Ao fazer uma primeira pessoa, eu basearia os braços em cerca de 2.000 triângulos, armas em torno de 5.000 triângulos, com mapeamento normal para cada um.
Conclusão
Provavelmente é isso que "depende", mas achei que poderia esclarecer algumas coisas sobre as quais as pessoas sempre se perguntam.
fonte
Um método em que consigo pensar é usar cenas construídas automaticamente para gerar dados estatísticos a partir dos quais você pode decifrar as informações que procura.
Obtenha um grande volume de ativos (pode ser gerado automaticamente).
Crie uma ferramenta para gerar cenas que podem ser carregadas pelo seu mecanismo usando o pool de ativos.
Execute um bot que moverá sua câmera pela cena. Você também pode executar outros bots para tornar a cena mais dinâmica, incluindo luzes.
Colete o máximo de informações possível e jogue-o em um banco de dados; fps, contagem de polietileno, alterações de sombreador, número de luzes, desenhar chamadas etc.
Crie / obtenha algumas ferramentas para exibir os dados em seu banco de dados da maneira mais possível.
Este link pode fornecer mais algumas idéias: Dead Rising Tools
fonte