Rasterização

Origem: Wikipédia, a enciclopédia livre.
Ir para: navegação, pesquisa

Rasterização, é a tarefa de tomar uma imagem descrita em um imagem vetorial e convertê-la em uma imagem raster (pixels ou pontos) para a saída em vídeo ou impressora.

O termo Rasterização também é utilizado para converter uma imagem em vector para um arquivo de formato bitmap (como converter SVG para PNG).

Introdução[editar | editar código-fonte]

O termo rasterização, em geral, pode ser aplicado a qualquer processo pelo qual informações vector podem ser convertidas num formato raster.

Em condições normais de utilização, o termo refere-se à popular renderização, algoritmo para exibir formas tridimensionais num computador. Rasterização é atualmente a técnica mais popular para a produção em tempo real de gráficos 3D. Aplicações em real-time (tempo real) precissam responder de imediato aos usuários e, em geral, necessidade de produzir taxas de pelo menos 30 frames por segundo ( fps e, de preferência 60).

Comparada a outras técnicas, como renderização, rasterização é extremamente rápida. No entanto, rasterização é simplesmente o processo de computar as formas a geometria para pixels e não prescreve uma determinada forma de calcular a cor desses pixels.

Abordagem básica[editar | editar código-fonte]

O básico do algoritmo rasterização é pegar uma cena 3D, descritos como polígonos, e transformá-la em uma superfície 2D, normalmente um monitor de computador. Polígonos são representados com uma colecções de triângulos. Triângulos são representados por 3 vértices no 3-espaço. Em um nível muito básico, rasterizers basta ter um fluxo de vértices, transformá-los em corre-dimensional 2 pontos sobre o monitor do telespectador e preencha o transformou 2-dimensional triângulos conforme o caso.

Transformações[editar | editar código-fonte]

Transformations são normalmente realizados por matriz multiplicação. quaterniões matemática também podem ser utilizadas, mas que está fora do âmbito de aplicação do presente artigo. A 3 dimensional vértice pode ser transformado por um reforço adicional variável conhecida como uma variável homogênea e deixou 4-resultante da multiplicação do espaço vértice por uma transformação matriz 4 x 4. As principais transformações são tradução, escamação, rotação, e projeção.

Um 'Tradução', é simplesmente a circulação de um ponto a partir do seu local original para outro local, em 3 de espaço por uma constante deslocamento. As traduções podem ser representadas pela seguinte matriz:


\begin{bmatrix}
1 & 0 & 0 & X \\
0 & 1 & 0 & Y \\
0 & 0 & 1 & Z \\
0 & 0 & 0 & 1
\end{bmatrix}

X, Y, Z são os deslocamentos no 3 dimensões, respectivamente.

Um 'escamação' transformação é realizado pela multiplicação da posição de um vértice por um valor escalar. Isto tem o efeito de dimensionamento um vértice no que diz respeito à origem. Dimensionamento pode ser representada pela seguinte matriz:


\begin{bmatrix}
X & 0 & 0 & 0 \\
0 & Y & 0 & 0 \\
0 & 0 & Z & 0 \\
0 & 0 & 0 & 1 
\end{bmatrix}

X, Y, Z são os valores pelos quais cada uma das dimensões-3 são multiplicados. Assimétricas dimensionamento pode ser obtida através da variação do valor de X, Y, e Z.

'Rotação' matrizes dependem do eixo em torno do qual é um ponto a ser rodado.

Rotação sobre o eixo-X:


\begin{bmatrix}
1 & 0 & 0 & 0 \\
0 & \cos{\theta} & - \sin{\theta} & 0 \\
0 & \sin{\theta} & \cos{\theta} & 0 \\
0 & 0 & 0 & 1 
\end{bmatrix}

Rotação sobre o eixo Y:


\begin{bmatrix}
\cos{\theta} & 0 & \sin{\theta} & 0 \\
0 & 1 & 0 & 0 \\
- \sin{\theta} & 0 & \cos{\theta} & 0 \\
0 & 0 & 0 & 1 
\end{bmatrix}

Rotação sobre o eixo-Z:


\begin{bmatrix}
\cos{\theta} & -\sin{\theta} & 0 & 0 \\
\sin{\theta} & \cos{\theta} & 0 & 0 \\
0 & 0 & 1 & 0 \\
0 & 0 & 0 & 1 
\end{bmatrix}

θ cada um desses em todos os casos representam o ângulo de rotação.

Uma série de tradução, redimensionamento, rotação e matrizes podem descrever logicamente mais transformações. Rasterization sistemas geralmente usam um 'transformação pilha' para mover o fluxo de entrada vértices no lugar. A transformação é um padrão pilha stack, que armazena matrizes. Incoming vértices são multiplicados pela matriz pilha.

Como um exemplo ilustrativo de como a transformação pilha é utilizada, imaginar um cenário simples, com um único modelo de uma pessoa. A pessoa está de pé na posição vertical, de frente para uma direção arbitrária, enquanto sua cabeça se transformou em outra direção. A pessoa também está localizado a uma certa distância entre a origem. Um fluxo de vértices, o modelo, seria carregado para representar a pessoa. Em primeiro lugar, uma tradução matriz seria empurrado para dentro da pilha para mover o modelo para o local correto. Um dimensionamento matriz seria empurrado para dentro da pilha a dimensão do modelo corretamente. A rotação sobre o eixo y-seria empurrado para dentro da pilha para orientar o modelo corretamente. Em seguida, o fluxo de vértices representando o corpo seria enviada através do rasterizer. Uma vez que a cabeça está a enfrentar uma direção diferente, a matriz de rotação seria surgiram fora do topo da pilha e de uma outra matriz de rotação sobre o eixo y-com um ângulo diferente seria empurrado. Por último, o fluxo de vértices representando a cabeça seria enviada para o rasterizer.

Depois de todos os pontos foram transformados para os seus locais desejados no espaço 3-no que diz respeito ao telespectador, eles devem ser transformados para a imagem 2-D avião. O mais simples projecção, o projecção ortogonal, simplesmente envolve a remoção do componente de z transformou 3d vértices. Projecções ortográficas têm a propriedade que todas as linhas paralelas no espaço 3-permanecerá em paralelo a 2-D representação. No entanto, as imagens são do mundo real perspectiva imagens, objetos distantes com menor do que os objectos que aparecem perto do telespectador. A perspectiva projeção transformação necessita de ser aplicada a esses pontos.

Conceptualmente, a idéia é a de transformar a perspectiva visualização em volume ortogonal a visualização volume. O volume é uma perspectiva visualização tronco, isto é, uma pirâmide truncada. O volume é uma visualização ortográficas caixa rectangular, onde tanto o de perto e longe vendo aviões são paralelas ao plano imagem.

Uma projeção perspectiva transformação pode ser representada pela seguinte matriz:



\begin{bmatrix}
1 & 0 & 0 & 0 \\
0 & 1 & 0 & 0 \\
0 & 0 & (N+F)/N & -F \\
0 & 0 & 1/N & 0 
\end{bmatrix}

F e N-se aqui as distâncias de perto e de longe a visualização aviões, respectivamente. Os quatro vectores resultante será um vector onde a variável não é homogênea 1. Homogeneizante do vetor, ou multiplicando-o pelo inverso do homogêneo variável de tal forma que a variável se torna homogéneos unitária, dá-nos a nossa resultante 2-D localização nas coordenadas x e y.

Clipping[editar | editar código-fonte]

((seemain | Clipping (computação gráfica)))

Uma vez triângulo vértices são transformados para a sua correcta 2d locais, alguns destes locais podem estar fora da janela de visualização, ou o espaço na tela para que pixels serão efectivamente escrita. Clipping é o processo de truncagem triângulos para encaixá-los dentro da área visível.

O mais comum é a técnica Sutherland-Hodgeman recorte algoritmo. Nesta abordagem, cada uma das 4 bordas da imagem avião é testado em um momento. Para cada extremidade, de testar todos os pontos a serem prestados. Se o ponto está fora da borda, o ponto é removido. Para cada triângulo ponta que é Intersected pela imagem avião da ponta, ou seja, um vértice da ponta está dentro da imagem ea outra está no exterior, um ponto é inserido na intersecção e fora do ponto é removido.

Scan conversão[editar | editar código-fonte]

O último passo no processo é a tradicional rasterization preencher o 2D triângulos que estão agora no plano da imagem. Esta é também conhecida como scan conversão.

((principal | Hidden superfície determinação)) O primeiro problema a considerar é ou não um pixel de chamar a todos. Para um pixel a ser prestado, deve ser dentro de um triângulo, e ele não deve ser ocluído, ou bloqueado por outro pixel. Há uma série de algoritmos para preencher em pixels dentro de um triângulo, o mais popular do que é o algoritmo scanline. Uma vez que é difícil saber que o motor rasterization vai chamar todos os pixels de frente para trás, tem de haver alguma forma de assegurar que pixels perto do telespectador não são substituídas por pixels longe. A z buffer é a solução mais comum. A z buffer é um array 2d o que corresponde a imagem do avião que armazena uma profundidade de valor para cada pixel. Sempre que um pixel é desenhada, ele atualiza o buffer z valor com a sua profundidade. Qualquer novo pixel deve verificar o seu valor contra a profundidade z buffer valor antes que seja traçada. Closer pixels são desenhadas e mais pixels são tidos em conta.

Para descobrir um pixel de cores, texturas e sombreamento cálculos devem ser aplicadas. A textura mapa é um bitmap que é aplicado a um triângulo de definir a sua aparência. Cada um triângulo vértice está também associado com uma textura e coordenar uma textura (u, v) para a normal 2-d texturas, além de coordenar a sua posição. Cada vez que um pixel em um triângulo é prestado, o correspondente Texel (ou textura elemento) na textura devem ser encontrado. Isso é feito por interpolação entre os vértices do triângulo "associados textura coordenadas pela pixels na tela distância dos vértices. Na perspectiva projecções, interpolação é realizada sobre a textura coordena dividida pela profundidade do vértice para evitar um problema conhecido como 'Perspectivas foreshortening'.

Antes do final cor do pixel pode ser decidido, uma iluminação cálculo deve ser efectuado à sombra dos pixels com base em qualquer luzes que podem estar presentes na cena. Não há luz geralmente três tipos comumente usados nas cenas. 'Direcional luzes' são luzes que provêm de uma única direção e têm a mesma intensidade ao longo de toda a cena. Na vida real, luz solar chega perto de ser uma luz direcional, como o sol está tão longe que os raios de sol aparecerá paralelo com observadores e ao cair do alto da Terra é desprezível. 'Ponto luzes são luzes com uma posição definida no espaço e irradiar luz uniformemente em todas as direções. Ponto luzes são geralmente sujeitos a alguma forma de 'atenuação, ou cair na intensidade da luz incidente sobre os objectos mais distante. Vida real fontes luminosas experiência quadrático cair do alto. Por último, 'holofotes são como as da vida real holofotes, com um tempo determinado ponto do espaço, uma direção, e definindo um ângulo do cone de luz da ribalta. Há também muitas vezes um 'luz ambiente é adicionado ao valor que todos os cálculos finais iluminação arbitrariamente para compensar a iluminação global rasterization efeitos que não pode calcular corretamente.

Há uma série de algoritmos para sombreamento rasterizers. Todos os algoritmos sombreamento em conta a necessidade de distância da luz e do vetor normal do objeto sombreadas no que diz respeito à direcção da luz incidente. Os algoritmos mais rápido simplesmente sombra todos os pixels em qualquer triângulo, com um único valor iluminação, também conhecido como coloração plana (flat shading). Não há nenhuma maneira de criar a ilusão de superfícies lisas, desta forma, exceto por subdivisão em muitos pequenos triângulos. Algoritmos podem também separadamente sombra vértices, e interpole a iluminação valor dos vértices quando desenho pixels. Isto é conhecido como coloração Gouraud (Gouraud shading). A abordagem mais lentos e mais realista é a de calcular iluminação em separado para cada pixel, também conhecido como coloração Phong (Phong shading). Este realiza bilineares interpolação do vetores normais e utiliza o resultado para o local iluminação cálculo.

Técnicas de Aceleração[editar | editar código-fonte]

Para extrair o máximo de desempenho fora de qualquer rasterization motor, um número mínimo de polígonos, devem ser enviados para o renderer. Uma série de aceleração técnicas têm sido desenvolvidas ao longo do tempo para abater os objectos que não podem ser vistos.

Backface abate[editar | editar código-fonte]

((principal | Back-face abate)) A maneira mais simples de se abater polígonos de abater todos os polígonos que enfrentam longe do espectador. Isto é conhecido como backface abate. Como a maioria dos objetos 3D são completamente fechado, polígonos enfrenta fora de um telespectador são sempre bloqueada pelo polígonos virada para o telespectador, a menos que o espectador está dentro do objeto. A virada do polígono é definido pelo seu 'liquidação', ou a ordem em que seus vértices são enviados para o renderer. Um renderer pode definir tanto no sentido horário ou counterclockwise dissolução como frente ou para trás enfrenta. Uma vez que um polígono foi transformada a tela espaço, o seu encerramento pode ser verificada e, se for no sentido oposto, não é traçada a todos. Evidentemente, backface abate não podem ser utilizados com degenerar e unclosed volumes.

=== Os dados espaciais estruturas ===

Utilizar técnicas mais avançadas estruturas de dados para reunir os objetos que estão fora da visualização volume, quer sejam ou oclusos por outros objectos. Os mais comuns são estruturas de dados binário espaço partição s, octree s, e 'célula e portal abate'.

Novos aperfeiçoamentos[editar | editar código-fonte]

Enquanto a base rasterization processo tem sido conhecido há décadas, continuam a fazer aplicações modernas otimizações e adições para aumentar o leque de possibilidades para o motor de renderização rasterization.

Textura filtragem[editar | editar código-fonte]

Texturas são criados em resoluções específicas, mas a partir da superfície para que sejam aplicadas podem ser, em qualquer distância do espectador, eles podem aparecer de tamanhos sobre a arbitrariedade da imagem final. Como resultado, um pixel na tela geralmente não corresponde diretamente a um Texel. Alguma forma de filtragem técnica devem ser aplicados para criar imagens limpas em qualquer distância. Uma variedade de métodos estão disponíveis, com diferentes troca entre qualidade da imagem e complexidade computacional.

Ambiente mapeamento[editar | editar código-fonte]

Ambiente mapeamento é uma forma de mapeamento de texturas em que a textura coordenadas são dependentes de vista. Uma aplicação comum, por exemplo, é simular a reflexão sobre um objeto brilhante. Um pode mapear o ambiente interior de uma sala para um copo metal em uma sala. À medida que o telespectador se move sobre a taça, coordena a textura da taça vértices do movimento nesse sentido, fornecendo a ilusão de reflexo metálico.

Bump mapeamento[editar | editar código-fonte]

Bump mapa ping é uma outra forma de mapeamento de texturas que não prevê pixels com cores, mas sim com profundidade. Especialmente com a moderna pixel sombreador (ver abaixo), lombada mapeamento cria a sensação de ver e de iluminação-dependente rugosidade em uma superfície de reforçar grandemente realismo.

Nível de pormenor[editar | editar código-fonte]

Em muitas aplicações modernas, o número de polígonos, em qualquer cenário pode ser fenomenal. No entanto, um espectador em um cenário só será capaz de discernir detalhes do próximo-por objetos. Nível de pormenor algoritmos variar a complexidade de geometria como uma função da distância para o telespectador. Objetos em frente ao telespectador pode ser prestado em plena complexidade enquanto objetos mais distantes podem ser simplificados dinamicamente, ou até mesmo substituir completamente com o sprites.

Sombras[editar | editar código-fonte]

Iluminação cálculos no processo tradicional rasterization não conta para a oclusão objeto. Sombra mapeamento e volume shadow s estão dois comuns modernas técnicas de criação de sombras.

Aceleração de Hardware[editar | editar código-fonte]

Começando na década de 1990, aceleração hardware para computadores desktop normal consumidor tornou-se a norma. Considerando que os programadores gráficos mais cedo tinha invocado a mão-codificado montagem para fazer seus programas correr rápido, mais modernos programas são escritos a interface com uma das actuais API gráfica, que impulsiona uma dedicada GPU.

O último recurso apoio para GPUs programáveis pixel shader s que melhorar drasticamente as capacidades dos programadores. A tendência é no sentido da plena programabilidade dos gráficos gasoduto.

Ver também[editar | editar código-fonte]

Ligações externas[editar | editar código-fonte]