Lembro-me de assistir ao trailer pré-renderizado de Tomb Raider e desejei que esses gráficos pudessem estar no próprio jogo.
Por que existe uma diferença tão grande entre o trailer e o jogo real? Eu entendo que o jogo é um conceito completamente diferente, tem um pipeline diferente, tem que passar por diferentes tipos de interações entre jogadores, etc. Quero saber o que são os jogos que os tornam tão difíceis em comparação aos filmes de animação.
Até agora eu sei que fazer um jogo e um filme de animação compartilham uma carga de trabalho básica, por exemplo, criar modelos 3D, renderizá-los (somente no jogo acontece ao vivo). Os filmes animados são renderizados por um longo tempo e só vemos cenas pré-renderizadas. É tudo o que sei, então espero que você responda dessa perspectiva!
E a renderização de filmes animados por horas e horas os torna tão bonitos, enquanto a renderização ao vivo no jogo é menos bonita (do ponto de vista geral)?
Respostas:
Você já mencionou um dos pontos centrais: o tempo .
No processo por trás da renderização de uma animação de alta fidelidade, são usadas várias abordagens e algoritmos diferentes (todos geralmente combinados sob o termo "Iluminação Global" ), com o Ray-Tracing sendo um dos mais comuns (outros incluem, por exemplo, Radiosidade e Oclusão Ambiental )
O rastreamento de raios envolve a simulação de um número (geralmente alto) de raios de luz passando pela cena e o cálculo de seus caminhos, reflexos e refrações quando atingem objetos com materiais diferentes. Em troca, materiais diferentes têm propriedades físicas diferentes que resultam em reações específicas para os raios (a quantidade de luz que salta de um objeto, por exemplo, é maior para objetos brilhantes quando comparados a objetos brilhantes).
Outro ponto é a física : simular milhares de tensões capilares de uma maneira fisicamente correta é demorado. É por isso que em jogos mais antigos, os cabelos são geralmente aproximados com uma malha muito áspera que é texturizada para dar a impressão de cabelos, talvez com alguns objetos em movimento adicionais para torná-los um pouco mais realistas.
Também deve ser considerado: Memória e Largura de Banda . Quanto maior a qualidade de uma textura aplicada a um objeto em uma cena, mais memória você precisará carregar e usar em um jogo. Mas o sistema não apenas precisa ter memória suficiente para reter os dados, mas também precisa ser transferido para o qual consome a largura de banda disponível. Como a memória e a largura de banda são limitadas, há um máximo que pode ser alcançado.
Os jogos costumam trapacear um pouco usando apenas as texturas de alta resolução para objetos próximos e usam imagens de baixa resolução para objetos distantes (termo: MipMapping ), reduzindo assim a largura de banda necessária, pois menos texels precisam ser buscados, o que, por sua vez, aumenta o desempenho (consulte a seção sobre MipMapping no Guia de programação da Apple OpenGLES).
Da mesma forma, os jogos também costumam usar malhas diferentes para objetos, dependendo de quão longe eles estão, com objetos distantes sendo menos detalhados (termo: LoD = Nível de Detalhe ).
Conclusão: Em gráficos em tempo real (como jogos e simulações), esse processo de renderização detalhado e complexo obviamente não funcionará para produzir cenas fluidas / suaves. Você precisa de pelo menos 20 quadros renderizados por segundo para obter esse efeito fluido de animação / movimento para o olho humano. Por outro lado, a renderização de um único quadro (!) Em um filme de animação pode facilmente levar de algumas horas a vários dias, dependendo de vários fatores, como o número de raios usados no Ray-Tracing ou o número de amostras para Ambient Oclusão (consulte a página 1 da Pixar / página 2 da Pixar para capturas de tela de 16 vs. 256 amostras), bem como a resolução de filme desejada (mais pixels = mais informações a serem calculadas). Veja também este artigosobre o processo por trás do filme de animação Monsters University da Pixar , fornecendo informações interessantes e também mencionando 29 horas de tempo de renderização por quadro.
Em geral: quanto maior a fidelidade / realismo a ser alcançada, mais iterações / retornos / amostras são geralmente necessárias, o que, em troca, exige mais recursos (tempo e / ou poder / memória da computação). Para visualizar a diferença, consulte a renderização resultante com base no número de rejeições para o cálculo da refração neste exemplo: Diamond Bounces from Keyshot
Mas é claro que a qualidade em aplicativos em tempo real aumenta o tempo todo por dois motivos:
Métodos / fórmulas mais inteligentes são desenvolvidos e implementados, capazes de criar efeitos foto-realistas sem a necessidade de rastreamento de raios. Isso geralmente envolve aproximações e, às vezes, dados pré-calculados. Alguns exemplos:
fonte
Além do fator tempo, vale a pena notar que, em um filme, o artista tem controle total sobre o que o espectador vai ou não ver.
Em sua cena típica de filme, a câmera não passa muito tempo apontada para o teto, apontada para um canto escuro da sala ou voltada para o tornozelo de alguém, de modo que o orçamento de polígono e texturização para esses elementos será bastante baixo.
Se a cena inteira ocorrer de um ponto de vista, o cenário virtual (como um cenário de filme real) não precisará incluir as partes que estão atrás da câmera. Na maioria dos jogos, o jogador é livre para procurar em qualquer lugar a qualquer momento. Isso significa que o orçamento da qualidade pode ser focado no que é realmente visto. (Alguns jogos de terceira pessoa, por exemplo, a série God Of War, usam uma câmera restrita; seus visuais tendem a ser notavelmente melhores do que os de mais jogos com câmeras gratuitas.)
fonte
Você está assumindo que a diferença está simplesmente na renderização - em um filme de animação, também há uma chance de edição após o fato. Eles podem ter efeitos compostos que seriam difíceis de alcançar no mecanismo original ou podem ajustar um pouco as coisas (por exemplo, remova ou repita a cada 10 quadros para acelerar / desacelerar a animação).
Se você tiver uma chance, desenterre um dos DVDs 'Roughnecks: The Starship Trooper Chronicles', pois eles têm faixas de comentários do editor e animadores sobre truques que eles precisavam fazer quando começaram a ficar atrasados em relação ao cronograma de entrega - coisas como reciclando fotos, mas invertendo o eixo para que não fosse tão óbvio, correções de cores, mascarando coisas que não gostavam, adicionando explosões etc.
fonte
Você já respondeu sua própria pergunta. Os filmes animados geralmente têm um nível de detalhe mais alto, o que causa um longo tempo de renderização para cada quadro individual.
Os jogos, por outro lado, não têm tantos detalhes, porque a cena deve ser renderizada 30 ou mais vezes por segundo. É também por isso que os desenvolvedores tentam reutilizar o máximo possível de recursos (texturas, modelos etc.), porque renderizar o mesmo objeto em duas posições é muito mais rápido do que se tudo fosse único. Eles também devem tomar cuidado para não usar muitos polígonos em seus modelos e, em vez disso, tentar obter uma impressão de profundidade usando iluminação, texturas, mapeamento de relevo e outras técnicas.
Os filmes não têm esse problema; eles fazem a cena da maneira que desejam e usam quantas texturas, modelos e geometria detalhados forem necessários para alcançar a cena que estão procurando.
Pode-se argumentar que os jogos estão se aproximando. Se você assistir a alguns dos melhores jogos dos últimos tempos, eles não estão tão longe da qualidade do filme como costumavam estar. É claro que você sempre poderá incluir mais detalhes em uma cena pré-renderizada do que em um jogo, mas acho que a diferença não será tão perceptível em alguns anos.
fonte
As outras respostas cobrem as questões gráficas brutas com bons detalhes, mas não mencionam uma parte importante do realismo de jogos versus filmes e trailers: as animações e os movimentos da câmera .
Em um filme ou trailer, cada movimento de pessoas e câmeras pode ser cuidadosamente coordenado para mostrar a emoção certa no momento, e eles nunca precisam ser repetidos. Nos videogames, o jogo deve ser capaz de reagir instantaneamente aos movimentos do jogador e deve reutilizar um pequeno conjunto de animações de estoque para preencher as horas ilimitadas de tempo do jogo possíveis.
Exemplos disso no trailer em questão são quando o terapeuta assente com a cabeça e dá um sorriso "nada mal" , e quando Lara agarra o apoio de braço, balança a perna ou olha assombrada para a caverna. Essas pequenas coisas (ou a falta delas e os personagens "plásticos" envolvidos) afetam o realismo percebido muito mais do que pequenas melhorias nos gráficos.
Diferentemente das outras diferenças gráficas, este não é um problema que possa ser potencialmente resolvido com mais poder computacional: é uma diferença fundamental entre um mundo com script e um mundo que responde a todas as suas ações. Nesse sentido, espero que o realismo dos trailers de hoje exceda toda a jogabilidade no futuro próximo.
fonte
Adicionando outras ótimas respostas que já foram publicadas, vale a pena notar que, para alcançar os tempos de processamento rápidos necessários para os jogos, os desenvolvedores de jogos precisam usar muitos de seus efeitos visuais como texturas simples. Isso significa que deve-se tomar muito cuidado para evitar efeitos que não cozam bem.
Um efeito importante que é difícil de obter para os videogames é a dispersão de superfície (SSS) . Infelizmente, esse efeito é realmente importante na geração de pele humana com aparência realista. É por isso que muitos personagens "realistas" de videogame parecem plásticos.
Uma maneira de os desenvolvedores evitarem esse problema é criar deliberadamente os personagens com cores vivas para prejudicar a aparência plástica, ou adicionar muitas sombras e detalhes de textura ao rosto (como barbas etc.) para quebrar as seções contínuas de outra forma grandes pele.
fonte
Para responder a uma das perguntas que o OP fez em um comentário:
Esta questão é mais difícil do que parece. Eu acho que uma boa regra de ouro é a seguinte equação (que eu criei a propósito):
Basicamente, isso significa que, para modelos com relativamente poucos materiais especiais (ou seja, sem espelho, sub-surf, etc.), o tempo de computação será grande, determinado pelo número de polígonos. Geralmente é o caso de gráficos de videogame muito simples.
Na prática, no entanto, em jogos mais recentes e, especialmente, em filmes, o culpado é "geralmente" o traçado de raios. Por quê? Bem, por duas razões. Vou dar a razão matemática primeiro, e depois a minha opinião sobre a verdadeira razão no final.
Razão de Mathy:
Atualização: Esta explicação matemática pode não ser completamente precisa. Por favor, veja a explicação de CrazyCasta nos comentários para mais detalhes.
Suponha que você tenha 1000 polígonos e 3 fontes de luz. O menor número de traços de raios que você precisa executar é 3 * 1000.
Se simplificarmos demais a situação e presumirmos que 1 traço de raio = 1 cálculo (uma subestimação bruta), precisaremos de 3000 cálculos.
Mas agora vamos supor que você também queira ter reflexos.
As configurações padrão para reflexões no programa freeware Blender são:
Para essas configurações, podemos supor que, na melhor das hipóteses, essa reflexão super-simples dobrará o custo computacional do seu modelo.
Mas, como eu disse antes, este exemplo é muito simplificado e você pode encontrar muitos efeitos (além dos que eu já mencionei) que reduzirão seu tempo de renderização pelo telhado.
Caso e argumento: tente renderizar reflexões com
gloss=1
(o padrão no Blender), abaixe o brilho para 0,01 e compare os dois tempos de renderização. Você verá que aquele com brilho de 0,01 será muito mais lento, mas a complexidade do modelo não foi alterada.Minha razão qualitativa, mas mais realista:
Aumentar a complexidade da malha apenas melhorará a qualidade do modelo até certo ponto. Depois de passar alguns milhões de rostos, realmente não há muito o que adicionar mais rostos fará. Eu vou até o ponto em que digo que, se você usar suavização, poderá sair com apenas algumas centenas de rostos para fins mais gerais.
Mas o que quase sempre faz diferença é a iluminação, os efeitos materiais e o traçado de raios. É por isso que os filmes tendem a usar um grande número deles na tentativa de aproximar as belas complexidades do mundo real.
Uma ótima maneira de ter uma ideia de tudo isso é ver a lista de elenco no final das últimas animações da Disney. Você provavelmente ficará surpreso com quantas pessoas de iluminação e textura possuem.
fonte
:)
Vale a pena acrescentar que a animação do filme geralmente faz uma grande quantidade de truques visuais para tornar o movimento percebido mais fluido.
Os animadores podem, por exemplo, usar técnicas tradicionais de animação manual que normalmente não são usadas na renderização em tempo real, como manchas, múltiplos ou distorção, para produzir movimentos com aparência mais fluida, apesar da baixa taxa de quadros que os filmes são (de qualquer forma, até recentemente ) exibido em. O uso de manchas e múltiplos, em particular, é complicado pelo uso de malhas - você precisa produzir deformações de malha para esse tipo de distorção de malha, e não acredito que tenha visto isso em qualquer videogame em 3D.
Os quadros com objetos em movimento rápido passando por eles podem ser renderizados em uma taxa de quadros diferente e depois combinados novamente para produzir desfoque de movimento na cena. Atualmente, o motion blur é uma técnica bastante comum nos gráficos 3D em tempo real. Geralmente, o efeito não é da alta qualidade que uma casa de animação com dezenas de processadores à sua disposição obterá (veja as respostas "de tempo" acima), em grande parte devido ao fato de que a simulação de desfoque de movimento muito bem requer várias etapas de pós-processamento por camada, e um grande número de quadros intermediários para ser realmente fluido.
Fazer esse tipo de truque visual para aprimorar a qualidade percebida com gráficos em tempo real requer limitar efetivamente a taxa de quadros de saída a taxas bem abaixo dos quadros intermediários máximos disponíveis para renderização em segundo plano e, em seguida, fazer composição para produzir o quadro final. Provavelmente, existem várias escolas de pensamento sobre se os pequenos ganhos em fidelidade visual para o uso de técnicas como essa valem a perda do orçamento do quadro, especialmente se for extremamente difícil de acertar.
Para abordar um aspecto da sua pergunta:
Artesanal, principalmente. Os artistas em tempo real não têm a chance de ajustar cada quadro ou criar truques únicos para melhorar a aparência geral de uma cena ou reação, não apenas por causa de restrições de tempo (tanto no desenvolvimento quanto na renderização), mas também porque de restrições práticas. Conforme observado no comentário da interatividade, o player provavelmente não fará exatamente a mesma coisa todas as vezes, mas o filme será exibido da mesma forma.
Isso significa que o artista de videogame tem um conjunto muito diferente de prioridades, no que diz respeito à qualidade do modelo e à qualidade de renderização final do artista de filme. Ambos exigem enormes quantidades de habilidade, mas cada um exige técnicas diferentes. Espero que essas técnicas convergam cada vez mais à medida que o hardware de renderização no nível do consumidor continua a progredir e um gênio matemático adicional continua a surgir nos seus SIGGRAPHs e GDCs.
fonte
Um único filme de animação pode levar muitos anos para renderizar em um único animal de uma máquina. Como é pré-renderizado, não importa quanto efeitos dispendiosos, como reflexos de luz, sombras etc., adicionamos à cena. Esses filmes geralmente são renderizados por fazendas de renderização, onde milhares de PCs estão ligados, trabalhando no mesmo trabalho.
A razão pela qual não podemos obter a mesma qualidade em tempo real é simplesmente porque a máquina precisa renderizar o quadro atual em cerca de 16ms para atingir um FPS de 60. Um único quadro para um filme de animação pode levar horas para renderizar em um único PC.
Em um jogo, além dos gráficos, uma tonelada de outras coisas está acontecendo. Cada quadro há toneladas de cálculos. Dito de forma simples, um filme de animação não precisa calcular o dano recebido pelo jogador em um lançador de foguetes, basta animar os gibs e os polígonos renderizarão.
Felizmente, existem pessoas geniais andando por este planeta. Além dos melhores PCs que podem renderizar mais polígonos e texturas maiores, existem algumas invenções engenhosas feitas como mapas normais que podem animar a luz / sombra em um polígono plano muito barato, fazendo com que um objeto 3D chato pareça extraordinariamente detalhado.
Alguns desses efeitos caros que fazem filmes têm esse brilho extra.
Para Simpy, precisamos criar truques "baratos" para fazer um jogo parecer bom. Mas o olho humano é difícil de enganar.
fonte