Rasterização

Origem: Wikipédia, a enciclopédia livre.
Ir para: navegação, pesquisa
Question book.svg
Esta página ou secção não cita fontes confiáveis e independentes, o que compromete sua credibilidade. Por favor, adicione referências e insira-as corretamente no texto ou no rodapé. Conteúdo sem fontes poderá ser removido.
Encontre fontes: Google (notícias, livros e acadêmico)
Wiki letter w.svg Este é um esboço. Você pode ajudar a Wikipédia expandindo-o. Editor: considere marcar com um esboço mais específico.

Rasterização, é a tarefa de converter uma imagem vetorial 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 formada por vetores para um arquivo de formato bitmap (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 tipo vetorial podem ser convertidas num formato raster[carece de fontes?].

Em condições normais de utilização, o termo refere-se ao popular algoritmo de renderização, usado para exibir formas tridimensionais num computador[carece de fontes?]. Rasterização é atualmente a técnica mais popular para a produção em tempo real de gráficos 3D[carece de fontes?]. Aplicações em tempo real precisam responder de imediato aos usuários e, em geral, necessitam produzir taxas de pelo menos 24 fps (frames por segundo) para passar a sensação de movimento[carece de fontes?].

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

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

O mais básico algoritmo de rasterização pega uma cena 3D, descrita como polígonos, e transforma-a em uma superfície 2D, normalmente um monitor de computador[carece de fontes?]. Polígonos são representados com uma coleções de triângulos[carece de fontes?]. Triângulos são representados por 3 vértices no espaço tridimensional[carece de fontes?]. Em um nível muito básico, os rasterizadors pegam um fluxo de vértices, e transforma-os em pontos de duas dimensões correspondentes ao monitor do telespectador e preenchem os triângulos 2D que foram transformados de acordo com a necessidade[carece de fontes?].

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

Transformations são normalmente realizados por matriz multiplicação[carece de fontes?]. quaterniões matemática também podem ser utilizadas, mas que está fora do âmbito de aplicação do presente artigo[carece de fontes?]. 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[carece de fontes?]. As principais transformações são tradução, escamação, rotação, e projeção[carece de fontes?].

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[carece de fontes?]. 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[carece de fontes?].

Um 'escamação' transformação é realizado pela multiplicação da posição de um vértice por um valor escalar[carece de fontes?]. Isto tem o efeito de dimensionamento um vértice no que diz respeito à origem[carece de fontes?]. 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[carece de fontes?]. Assimétricas dimensionamento pode ser obtida através da variação do valor de X, Y, e Z[carece de fontes?].

'Rotação' matrizes dependem do eixo em torno do qual é um ponto a ser rodado[carece de fontes?].

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[carece de fontes?].

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

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[carece de fontes?]. Um fluxo de vértices, o modelo, seria carregado para representar a pessoa[carece de fontes?]. Em primeiro lugar, uma tradução matriz seria empurrado para dentro da pilha para mover o modelo para o local correto[carece de fontes?]. Um dimensionamento matriz seria empurrado para dentro da pilha a dimensão do modelo corretamente[carece de fontes?]. A rotação sobre o eixo y-seria empurrado para dentro da pilha para orientar o modelo corretamente[carece de fontes?]. Em seguida, o fluxo de vértices representando o corpo seria enviada através do rasterizer[carece de fontes?]. 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[carece de fontes?]. Por último, o fluxo de vértices representando a cabeça seria enviada para o rasterizer[carece de fontes?].

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[carece de fontes?]. O mais simples projecção, o projecção ortogonal, simplesmente envolve a remoção do componente de z transformou 3d vértices[carece de fontes?]. 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[carece de fontes?]. No entanto, as imagens são do mundo real perspectiva imagens, objetos distantes com menor do que os objectos que aparecem perto do telespectador[carece de fontes?]. A perspectiva projeção transformação necessita de ser aplicada a esses pontos[carece de fontes?].

Conceptualmente, a idéia é a de transformar a perspectiva visualização em volume ortogonal a visualização volume[carece de fontes?]. O volume é uma perspectiva visualização tronco, isto é, uma pirâmide truncada[carece de fontes?]. 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[carece de fontes?].

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[carece de fontes?]. Os quatro vectores resultante será um vector onde a variável não é homogênea 1[carece de fontes?]. 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[carece de fontes?].

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[carece de fontes?]. Clipping é o processo de truncagem triângulos para encaixá-los dentro da área visível[carece de fontes?].

O mais comum é a técnica Sutherland-Hodgeman recorte algoritmo[carece de fontes?]. Nesta abordagem, cada uma das 4 bordas da imagem avião é testado em um momento[carece de fontes?]. Para cada extremidade, de testar todos os pontos a serem prestados[carece de fontes?]. Se o ponto está fora da borda, o ponto é removido[carece de fontes?]. 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[carece de fontes?].

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[carece de fontes?]. Esta é também conhecida como scan conversão[carece de fontes?].

((principal | Hidden superfície determinação)) O primeiro problema a considerar é ou não um pixel de chamar a todos[carece de fontes?]. 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[carece de fontes?]. Há uma série de algoritmos para preencher em pixels dentro de um triângulo, o mais popular do que é o algoritmo scanline[carece de fontes?]. 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[carece de fontes?]. A z buffer é a solução mais comum[carece de fontes?]. A z buffer é um array 2d o que corresponde a imagem do avião que armazena uma profundidade de valor para cada pixel[carece de fontes?]. Sempre que um pixel é desenhada, ele atualiza o buffer z valor com a sua profundidade[carece de fontes?]. Qualquer novo pixel deve verificar o seu valor contra a profundidade z buffer valor antes que seja traçada[carece de fontes?]. Closer pixels são desenhadas e mais pixels são tidos em conta[carece de fontes?].

Para descobrir um pixel de cores, texturas e sombreamento cálculos devem ser aplicadas[carece de fontes?]. A textura mapa é um bitmap que é aplicado a um triângulo de definir a sua aparência[carece de fontes?]. 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[carece de fontes?]. Cada vez que um pixel em um triângulo é prestado, o correspondente Texel (ou textura elemento) na textura devem ser encontrado[carece de fontes?]. Isso é feito por interpolação entre os vértices do triângulo "associados textura coordenadas pela pixels na tela distância dos vértices[carece de fontes?]. 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'[carece de fontes?].

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[carece de fontes?]. Não há luz geralmente três tipos comumente usados nas cenas[carece de fontes?]. '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[carece de fontes?]. 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[carece de fontes?]. 'Ponto luzes são luzes com uma posição definida no espaço e irradiar luz uniformemente em todas as direções[carece de fontes?]. Ponto luzes são geralmente sujeitos a alguma forma de 'atenuação, ou cair na intensidade da luz incidente sobre os objectos mais distante[carece de fontes?]. Vida real fontes luminosas experiência quadrático cair do alto[carece de fontes?]. 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[carece de fontes?]. 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[carece de fontes?].

Há uma série de algoritmos para sombreamento rasterizers[carece de fontes?]. 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[carece de fontes?]. 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)[carece de fontes?]. 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[carece de fontes?]. Algoritmos podem também separadamente sombra vértices, e interpole a iluminação valor dos vértices quando desenho pixels[carece de fontes?]. Isto é conhecido como coloração Gouraud (Gouraud shading)[carece de fontes?]. 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)[carece de fontes?]. Este realiza bilineares interpolação do vetores normais e utiliza o resultado para o local iluminação cálculo[carece de fontes?].

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[carece de fontes?]. 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[carece de fontes?].

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[carece de fontes?]. Isto é conhecido como backface abate[carece de fontes?]. 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[carece de fontes?]. A virada do polígono é definido pelo seu 'liquidação', ou a ordem em que seus vértices são enviados para o renderer[carece de fontes?]. Um renderer pode definir tanto no sentido horário ou counterclockwise dissolução como frente ou para trás enfrenta[carece de fontes?]. 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[carece de fontes?]. Evidentemente, backface abate não podem ser utilizados com degenerar e unclosed volumes[carece de fontes?].

=== 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[carece de fontes?]. Os mais comuns são estruturas de dados binário espaço partição s, octree s, e 'célula e portal abate'[carece de fontes?].

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[carece de fontes?].

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[carece de fontes?]. Como resultado, um pixel na tela geralmente não corresponde diretamente a um Texel[carece de fontes?]. Alguma forma de filtragem técnica devem ser aplicados para criar imagens limpas em qualquer distância[carece de fontes?]. Uma variedade de métodos estão disponíveis, com diferentes troca entre qualidade da imagem e complexidade computacional[carece de fontes?].

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[carece de fontes?]. 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[carece de fontes?]. À 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[carece de fontes?].

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[carece de fontes?]. 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[carece de fontes?].

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[carece de fontes?]. No entanto, um espectador em um cenário só será capaz de discernir detalhes do próximo-por objetos[carece de fontes?]. Nível de pormenor algoritmos variar a complexidade de geometria como uma função da distância para o telespectador[carece de fontes?]. 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[carece de fontes?].

Sombras[editar | editar código-fonte]

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

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[carece de fontes?]. 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[carece de fontes?].

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

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

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