Computação gráfica em tempo real (Real-time computer graphics)

Article

February 8, 2023

A computação gráfica em tempo real ou renderização em tempo real é o subcampo da computação gráfica focada na produção e análise de imagens em tempo real.

O termo pode se referir a qualquer coisa, desde renderizar a interface gráfica do usuário (GUI) de um aplicativo até análise de imagem em tempo real, mas é mais frequentemente usado em referência a gráficos de computador 3D interativos, normalmente usando uma unidade de processamento gráfico (GPU).

Um exemplo desse conceito é um videogame que renderiza rapidamente ambientes 3D em mudança para produzir uma ilusão de movimento.

Os computadores são capazes de gerar imagens 2D como linhas simples, imagens e polígonos em tempo real desde a sua invenção.

No entanto, renderizar rapidamente objetos 3D detalhados é uma tarefa assustadora para sistemas tradicionais baseados em arquitetura Von Neumann.

Uma solução inicial para esse problema foi o uso de sprites,

Imagens 2D que podem imitar gráficos 3D.

Existem diferentes técnicas para renderização, como rastreamento de raios e rasterização.

Usando essas técnicas e hardware avançado, os computadores agora podem renderizar imagens com rapidez suficiente para criar a ilusão de movimento ao mesmo tempo em que aceitam a entrada do usuário.

Isso significa que o usuário pode responder às imagens renderizadas em tempo real, produzindo uma experiência interativa.

Princípios de computação gráfica 3D em tempo real

O objetivo da computação gráfica é gerar imagens geradas por computador, ou quadros, usando certas métricas desejadas.

Uma dessas métricas é o número de quadros gerados em um determinado segundo.

Os sistemas gráficos de computador em tempo real diferem dos sistemas de renderização tradicionais (ou seja, não em tempo real) em que os gráficos não em tempo real normalmente dependem do ray tracing.

Nesse processo, milhões ou bilhões de raios são rastreados da câmera para o mundo para renderização detalhada – essa operação cara pode levar horas ou dias para renderizar um único quadro.

Os sistemas gráficos em tempo real devem renderizar cada imagem em menos de 1/30 de segundo.

O rastreamento de raios é muito lento para esses sistemas;

em vez disso, eles empregam a técnica de rasterização de triângulo de buffer z.

Nesta técnica, cada objeto é decomposto em primitivos individuais, geralmente triângulos.

Cada triângulo é posicionado,

girado e dimensionado na tela, e o hardware rasterizador (ou um emulador de software) gera pixels dentro de cada triângulo.

Esses triângulos são então decompostos em unidades atômicas chamadas fragmentos que são adequados para exibição em uma tela de exibição.

Os fragmentos são desenhados na tela usando uma cor que é calculada em várias etapas.

Por exemplo, uma textura pode ser usada para "pintar" um triângulo com base em uma imagem armazenada e, em seguida, o mapeamento de sombra pode alterar as cores desse triângulo com base na linha de visão das fontes de luz.

Gráficos de videogame

Gráficos em tempo real otimizam a qualidade da imagem sujeita a restrições de tempo e hardware.

GPUs e outros avanços aumentaram a qualidade de imagem que os gráficos em tempo real podem produzir.

As GPUs são capazes de lidar com milhões de triângulos por quadro, e o hardware atual da classe DirectX 11/OpenGL 4.x é capaz de gerar efeitos complexos, como volumes de sombra, desfoque de movimento e geração de triângulos, em tempo real.

O avanço dos gráficos em tempo real é evidenciado nas melhorias progressivas entre os gráficos de jogabilidade reais e as cutscenes pré-renderizadas tradicionalmente encontradas em videogames.

As cutscenes são normalmente renderizadas em tempo real e podem ser interativas.

Embora a diferença de qualidade entre os gráficos em tempo real e os gráficos off-line tradicionais esteja diminuindo, a renderização off-line permanece muito mais precisa.

Vantagens

Os gráficos em tempo real são normalmente empregados quando a interatividade (por exemplo, feedback do jogador) é crucial.

Quando gráficos em tempo real são usados ​​em filmes, o diretor tem controle total do que deve ser desenhado em cada quadro, o que às vezes pode envolver longas tomadas de decisão.

Equipes de pessoas normalmente estão envolvidas na tomada dessas decisões.

Em computação gráfica em tempo real, o usuário normalmente opera um dispositivo de entrada para influenciar o que está prestes a ser desenhado na tela.

Por exemplo, quando o usuário deseja mover um personagem na tela, o sistema atualiza a posição do personagem antes de desenhar o próximo quadro.

Normalmente, o tempo de resposta da tela é muito mais lento do que o dispositivo de entrada - isso é justificado pela imensa diferença entre o tempo de resposta (rápido) de um ser humano'

s movimento e a velocidade de perspectiva (lenta) do sistema visual humano.

Essa diferença também tem outros efeitos: como os dispositivos de entrada devem ser muito rápidos para acompanhar a resposta do movimento humano, os avanços nos dispositivos de entrada (por exemplo, o controle remoto Wii atual) normalmente demoram muito mais para serem alcançados do que os avanços comparáveis ​​nos dispositivos de exibição.

Outro fator importante que controla a computação gráfica em tempo real é a combinação de física e animação.

Essas técnicas ditam em grande parte o que deve ser desenhado na tela – especialmente onde desenhar objetos na cena.

Essas técnicas ajudam a imitar realisticamente o comportamento do mundo real (a dimensão temporal, não as dimensões espaciais), aumentando o grau de realismo da computação gráfica.

A visualização em tempo real com software gráfico, especialmente ao ajustar os efeitos de iluminação, pode aumentar a velocidade do trabalho.

Pipeline de renderização

O pipeline de renderização de gráficos ("pipeline de renderização" ou simplesmente "pipeline") é a base dos gráficos em tempo real.

Sua principal função é renderizar uma imagem bidimensional em relação a uma câmera virtual, objetos tridimensionais (um objeto que possui largura, comprimento e profundidade), fontes de luz, modelos de iluminação, texturas e muito mais.

Arquitetura

A arquitetura do pipeline de renderização em tempo real pode ser dividida em etapas conceituais: aplicação, geometria e rasterização.

Estágio de aplicação

O estágio de aplicação é responsável por gerar "cenas", ou configurações 3D que são desenhadas em um display 2D.

Este estágio é implementado em software que os desenvolvedores otimizam para desempenho.

Este estágio pode realizar processamentos como detecção de colisão, técnicas de aceleração, animação e realimentação de força, além de manipular a entrada do usuário.

A detecção de colisão é um exemplo de operação que seria realizada na fase de aplicação.

A detecção de colisão usa algoritmos para detectar e responder a colisões entre objetos (virtuais).

Por exemplo, o aplicativo pode calcular novas posições para os objetos em colisão e fornecer feedback por meio de um dispositivo de feedback de força, como um controlador de jogo vibratório.

O estágio de aplicação também prepara os dados gráficos para o próximo estágio.

Isso inclui animação de textura, animação de modelos 3D,

animação por meio de transformações e morphing de geometria.

Finalmente, ele produz primitivas (pontos, linhas e triângulos) com base nas informações da cena e alimenta essas primitivas no estágio de geometria do pipeline.

Estágio de geometria

O estágio de geometria manipula polígonos e vértices para calcular o que desenhar, como desenhar e onde desenhar.

Normalmente, essas operações são realizadas por hardware especializado ou GPUs.

Variações no hardware gráfico significam que o "estágio de geometria" pode realmente ser implementado como vários estágios consecutivos.

Transformação de modelos e visualizações

Antes que o modelo final seja mostrado no dispositivo de saída, o modelo é transformado em vários espaços ou sistemas de coordenadas.

As transformações movem e manipulam objetos alterando seus vértices.

Transformação é o termo geral para as quatro formas específicas que manipulam a forma ou posição de um ponto, linha ou forma.

Iluminação

Para dar ao modelo uma aparência mais realista, uma ou mais fontes de luz são geralmente estabelecidas durante a transformação.

No entanto, este estágio não pode ser alcançado sem primeiro transformar a cena 3D em espaço de visualização.

No espaço de visão, o observador (câmera) é normalmente colocado na origem.

Se estiver usando um sistema de coordenadas destro (que é considerado padrão), o observador olha na direção do eixo z negativo com o eixo y apontando para cima e o eixo x apontando para a direita.

Projeção

A projeção é uma transformação usada para representar um modelo 3D em um espaço 2D.

Os dois principais tipos de projeção são a projeção ortográfica (também chamada de paralela) e a projeção em perspectiva.

A principal característica de uma projeção ortográfica é que as linhas paralelas permanecem paralelas após a transformação.

A projeção em perspectiva utiliza o conceito de que, se a distância entre o observador e o modelo aumentar, o modelo parecerá menor do que antes.

Essencialmente, a projeção em perspectiva imita a visão humana.

Recorte

O recorte é o processo de remoção de primitivas que estão fora da caixa de visualização para facilitar o estágio rasterizador.

Uma vez que essas primitivas sejam removidas, as primitivas que permanecerem serão desenhadas em novos triângulos que alcançarão o próximo estágio.

Mapeamento de tela

O objetivo do mapeamento de tela é descobrir as coordenadas das primitivas durante o estágio de recorte.

Estágio rasterizador

O estágio rasterizador aplica cores e transforma os elementos gráficos em pixels ou elementos de imagem.

História

A animação por computador existe desde a década de 1940, mas não foi até os anos 70 que as técnicas 3D foram implementadas.

O primeiro passo para gráficos 3D, mas não gráficos em tempo real, foi dado em 1972 por Edwin Catmull e Fred Parke.

Sua implementação contou com uma mão gerada por computador que foi criada usando imagens de estrutura de arame, sombreamento sólido e, finalmente, sombreamento suave.

Em 72 e 74, Parke fez um vídeo do rosto de uma mulher com sombra Gouraud que mudou sua expressão.

Os gráficos 3D chegaram ao ponto em que os humanos animados parecem quase inteiramente realistas.

Um obstáculo é o vale misterioso.

No entanto, os seres humanos são os modelos mais difíceis de criar ao ponto do fotorrealismo, e muitos filmes de animação se apegam a animais antropomórficos, monstros ou dinossauros.

Para um exemplo de animação humana realista,

o filme de 2007 Beowulf apresenta gráficos 3D que chegam perto de enganar o olho humano.

O filme foi criado usando a tecnologia de captura de movimento 3D.

Veja também

Referências

Bibliografia

Möller, Tomas;

Haines, Eric (1999).

Renderização em Tempo Real (1ª ed.).

Natick, MA: AK Peters, Ltd. Salvator, Dave (21 de junho de 2001).

"Oleoduto 3D".

Extremetech. com.

Tecnologia Extrema.

Arquivado do original em 17 de maio de 2008. Recuperado em 2 de fevereiro de 2007. Malhotra, Priya (julho de 2002).

Questões envolvidas na Renderização em Tempo Real de Ambientes Virtuais (Mestrado).

Blacksburg, VA: Virginia Tech.

págs. 20–31.

Recuperado em 31 de janeiro de 2007. Haines, Eric (1 de fevereiro de 2007).

"Recursos de renderização em tempo real".

Recuperado em 12 de fevereiro de 2007.

links externos

Portal RTR – um conjunto "melhor de" reduzido de links para recursos