Você está na página 1de 55

INTRODUÇÃO E CONCEITOS BÁSICOS

Taxionomia das Aplicações Gráficas

A – Características dos objectos e modo como são visualizados


• Dimensionalidade dos objectos. Os objectos podem ser subdivididos
consoante o espaço em que estão definidos: espaços 2D e espaços 3D.

• Dimensionalidade do espaço. Local onde estão definidos os objectos. É


possível definir um ponto num espaço 1D, 2D ou 3D assim como uma curva,
uma linha poligonal ou um texto num espaço 2D ou 3D. No entanto não é
possível definir uma superfície num espaço 2D.

• Tipo de imagens. Em relação ao tipo de imagens produzidas existe uma


dependência relativamente ao espaço em que os objectos estão definidos. Assim
uma curva definida num espaço 2D pode ser visualizada como uma linha
poligonal ou pelo lugar geométrico dos pontos que pertencem à curva. Pelo
outro lado a curva pode ser representada com um padrão (por exemplo traço
linha), com diferentes níveis de cinzento ou a cores. Se considerarmos uma
superfície esta pode ser representada através de linhas poligonais (arames ou
wire-frame), as quais podem, além dos atributos que existem em 2D incluir
também a remoção de linhas ocultas. Se a superfície for definida como uma
malha de facetas (polígonos planares) ou como o lugar geométrico dos pontos
que lhe pertencem podem ser retirados os elementos ocultos.

• Iluminação. No mundo real para ser possível visualizar um objecto é


necessário iluminá-lo. Este conceito de iluminação, aplicável quer a cenas
definidas no espaço 2D ou 3D tem impacte no modo como o objecto é
visualizado. Considerando que no mundo real não existem objectos 2D é comum
que tais objectos, em CG, tenham uma textura e/ou cor não sendo necessário
iluminá-los para se obter a sua imagem.

• Variação em função do tempo. No que se designa por Animação por


Computador, os objectos podem estar estáticos ou qualquer um dos seus
atributos pode variar em função do tempo, quer se trate da geometria, cor,
textura ou modo como o objecto é visualizado (câmara em movimento).

• É ainda possível estender a área da Computação Gráfica a outros media tais


como o som, o tacto ou o cheiro. Dos 5 sentidos unicamente o gosto não tem
sido considerado.

B – Interacção pessoa máquina


• Representação passiva. Existe uma descrição dos objectos a visualizar
limitando-se o utilizador a mandar desenhar as imagens, quer se trate de uma
ferramenta de visualização num ecrã, da impressão num plotter ou da
sensibilização de um filme de 35mm, recorrendo a um equipamento apropriado
ligado ao computador. Estas representações podem ter sido criadas, por
exemplo, por outras pessoas e enviadas como parte de uma comunicação pessoa-
pessoa assíncrona.
• Representação interactiva. O utilizador manipula os objectos, construindo a
cena de modo incremental, grava a cena, incluindo a sua iluminação, posição das
câmaras e, sempre que entender, obtém uma imagem no suporte mais
apropriado.

• Sistemas de navegação. A cena está pré-definida podendo o utilizador


controlar não só o modo de iluminar a cena mas também definir e controlar
várias câmaras virtuais e navegar num espaço, normalmente, tridimensional.
Estes sistemas designam-se por de Tempo Real, sendo uma das ferramentas mais
populares: os navegadores VRML. Considerando o facto da cena ser estática
existem algoritmos optimizados que permitem a visualização da cena com
elevado grau de realismo (algoritmos baseados no conceito de radiosidade).

• Ambiente de realidade virtual. Também de Tempo Real é possível não só


navegar mas também alterar a cena, incluindo a geometria e restantes atributos
dos objectos. Os navegadores VRML suportam também esta funcionalidade.

• Agentes autónomos. Com a crescente importância dos agentes autónomos, em


particular nos jogos de computador, é de considerar um novo tipo de interacção
pessoa máquina na qual a máquina detém características, usualmente designadas
por humanas, tais como a inteligência (dita artificial), autonomia, personalidade,
emoções e muitas outras.

• Cooperação suportada em Avatars. Classe de aplicações em que os objectos


gráficos são as representações complexas de outra pessoa com a qual o utilizador
está a interactuar. Esta classe de aplicações aparece nos sistemas de
comunicação pessoa-pessoa, síncrona, através de canais de comunicação de
baixo débito. Em primeiro lugar envia-se a geometria do avatar e informação
sobre os elementos a parametrizar. Durante a comunicação basta enviar os
parâmetros que variam em função do tempo (sorrir, erguer o sobrolho)

C – Papel desempenhado pela imagem


• Criação de imagens ou sequências de imagens. A produção de publicações
electrónicas, de pinturas ou de animações são exemplos desta situação. Por outro
lado, para um cartógrafo o mais importante é o rigor da informação que é
medida no Mundo Real e não a simples produção de mapas.

• Criação da cena. Representação de um produto que irá ser produzido quer se


trate de um edifício ou de um produto electromecânico

D – Modo como as imagens são apresentadas


• Coerência espacial. Quando existe coerência espacial é apresentada uma
imagem de cada vez seja no ecrã, sob a forma de um álbum de fotografias, ou
numa impressora, num plotter ou sob a forma de uma imagem holográfica

• Coerência temporal. Quando existe também coerência temporal entre as


imagens elas podem ser apresentadas numa cadência que esteja bem definida
(por exemplo 50 imagens / segundo), vulgo animação, ou numa cadência
definível, vulgo simulação. A apresentação da sequência de imagem pode ser
efectuada no ecrã de um computador ou ser gravada em vídeo e apresentada em
cinema, televisão ou no próprio ecrã de um computador.
Arquitectura e Normas Gráficas

Representação Vectorial e de Quadrícula

Num projecto de engenharia a geometria tem um papel central, pelo que a representação
vectorial afigura-se como a mais correcta, quando é necessário criar representações do
Mundo, por exemplo a partir de imagens obtidas por satélite, a representação em
quadrícula é a mais correcta.

Modelo Conceptual

Uma norma como o GKS (Graphic Kernel System) permite o cálculo de primitivas
gráficas tais como linhas poligonais, polígonos, marcas, texto e, apesar de se tratar de
uma norma vectorial, mapas de quadrículas.

Como as primitivas gráficas eram 2D a distinção entre Modelo e Vistas sobre o Modelo
não era fácil de apreender.

Para efectuar o cálculo de uma vista sobre o modelo é utilizado o que se designa por
Pipeline de Visualização, isto é, um conjunto de operações algorítmicas necessárias à
transformação dos dados que descrevem um modelo nos dados necessários ao desenho
de uma vista específica numa superfície de visualização.
Em primeiro efectua-se o recorte identificando-se que parte do Mundo é que poderá ser
vista através de uma área poligonal. Segue-se a transformação de coordenadas entre os
dois espaços de coordenadas. A fase final, necessária em CG em quadrícula, efectua-se
a discretização da vista vectorial, com o cálculo da representação em quadrículas da
vista sobre o modelo.

Deslocação da janela sobre o Mundo (Panning)


TRANSFORMAÇÕES
Utilidade das transformações para a CG

► Construção de objectos por composição hierárquica


► Aumento do realismo
- Objectos e câmara usam movimentos realistas
► Realimentação cinestésica ao manipular objectos ou câmara
► Câmara sintética / parâmetros de visualização

Transformações planas elementares

Translação Escala Rotação

- Para deslocar polígonos é - Não preserva comprimentos - Rotação de vectores de


necessário aplicar a translação - Não preserva ângulos um ângulo β
a cada um dos vértices (excepção: escala uniforme) - Preserva comprimentos e
- Preserva comprimentos ângulos
(isométrica) - Demonstração através da
- Preserva ângulos (conforme) soma de ângulos

Tipos de transformações

Lineares → Transformam linhas em linhas ou pontos. A imagem do vector (0,0) é


sempre (0,0)

Afins → Transformam linhas paralelas em linhas paralelas. A imagem do vector (0,0)


nem sempre é (0,0)

Projectivas → Não preservam necessariamente o paralelismo das linhas. A imagem de


uma linha é um ponto ou outra linha, nunca uma curva

Coordenadas Homogéneas

• Pontos 2D escrevem-se como vectores de (1 x 3): [x y 1]


• Transformações geométricas como matrizes: (3 x 3)
• w = 1 para transformações afins em 2D
Problema: Rotação definida em relação a (0,0)
Como rodar em torno de um ponto qualquer?

Resposta: Sequência de 3 transformações básicas

Composição de transformações

• Em geral não é comutativa (produto de matrizes não o é)


• Alguns pares comutativos
- translação + translação
- escala + escala
- rotação + rotação

Transformações Básicas 3D

Translação T(dx, dy, dz) Escala S(Sx, Sy, Sz)

Rotação
Rx (θ
θ): em torno do eixo Ry (θ
θ): em torno do eixo Rz (θ
θ): em torno do eixo
dos XX dos YY dos ZZ
PIPELINE DE VISUALIZAÇÃO
Arquitectura Global

O tradicional sistema gráfico baseado num pipeline de visualização é constituído por


três grandes blocos:
• as operações de construção da cena;

• as operações geométricas que basicamente actuam sobre os vértices dos


polígonos e que incluem as operações de pré-remoção de polígonos não visíveis
(Culling), o recorte de polígonos (Clipping), a aplicação da transformação
perspectiva, a determinação da luminosidade por aplicação do modelo de
iluminação, a segmentação opcional de polígonos em triângulos (ou
triangulação) e a operação de mapeamento nas coordenadas físicas do
dispositivo de visualização

• a rasterização responsável pelo cálculo dos pixeis, remoção de superfícies


ocultas e sombreamento

Sistemas Coordenados

De forma a facilitar a modelação de um determinado objecto, opta-se geralmente por


descrever os seus diversos componentes (isto é, especificar os vértices dos polígonos
que o constituem) em função de um ponto localizado dentro ou perto do próprio
objecto. Nesta situação, os objectos dizem-se descritos em termos de um Sistema de
Coordenadas Local.

O passo seguinte consiste em colocar o objecto na cena que se pretende visualizar. Cada
objecto que constitui a cena tem o seu referencial local. Todos os objectos são
transformados de forma a poderem ser representados em função de um referencial
único, o que permite especificar o seu posicionamento relativo. Este referencial comum
é denominado Sistema de Coordenadas do Mundo. A descrição de cena é
complementada com a especificação das posições das fontes luminosas e da posição da
câmara, em particular, do ponto de observação e da direcção de observação.

Em CG recorre-se ao conceito de câmara virtual para definir um novo referencial,


denominado Sistema de Coordenadas da Câmara, cuja origem coincide com o centro
de projecção (posição da câmara) e cujo eixo dos ZZ é normal ao plano de visualização
e representa a direcção de observação.

O último espaço de coordenadas em que os objectos são transformados está relacionado


com as técnicas de projecção dos objectos da cena no plano de visualização. Define-se,
nesse sentido, um volume de visualização que delimita o volume do espaço que será
visualizado.

Nota:
Uma cena é composta por objectos, parâmetros de visualização e fontes luminosas
Interface de Visualização

Um sistema de Visualização consiste num conjunto de parâmetros através dos quais um


utilizador pode estabelecer uma transformação que conduza ao mapeamento de pontos
definidos em coordenadas do Mundo (WCS) em pontos sobre uma superfície de
visualização (2D).

O utilizador tem que definir a posição da câmara, a posição e a orientação do Plano de


Visualização no sistema de coordenadas WCS e o volume de visualização dentro do
qual reside a porção da cena a visualizar.

Parâmetros de posição e orientação de um observador:


• Posição da câmara: VRP (View Reference Point) em WCS

• Direcção para onde a câmara aponta: VPN (View Plane Normal) ou seja, a
direcção de visualização define imediatamente o plano de visualização

• Vertical: VUV (View Up Vector) define o ângulo de rotação em torno do VPN

• Distância do plano de visualização ao VRP, sobre a direcção VPN: D

A área rectangular, no plano de visualização, aonde irá ser projectada a cena, tem o
nome de Janela de Visualização e no modelo de câmara virtual simples está centrada
simetricamente relativamente ao VRP

O Volume de Visualização contém a parte da cena que está visível na direcção do


observador, ou seja, tudo aquilo que a câmara “vê”. A topologia do volume de
visualização depende do tipo de projecção utilizada. No modelo de câmara virtual
simples pode especificar 2 tipos de projecção: projecção perspectiva e projecção
ortogonal.
Projecção Perspectiva Projecção Ortogonal

O volume de visualização é definido por O volume de visualização é definido por


um tronco de pirâmide infinito cujo um paralelepípedo infinito passando
ápice se localiza no VRP e lados sobre a pelos lados da janela de visualização e de
janela de visualização. Fazendo o recorte arestas paralelas à direcção VPN
da cena sobre este volume, não ficam
projectados objectos que se encontrem
atrás do centro de projecção.

Existem consequências negativas na utilização de volumes de visualização infinitos, que


são particularmente evidentes no caso das projecções em perspectiva. Os objectos muito
afastados, depois de transformados ponto a ponto, podem reduzir-se a uma pequena
mancha no ecrã, o que corresponde a um desperdício de tempo de computação. Por
outro lado, projecções de objectos demasiado próximos, podem gerar resultados
caóticos, impossibilitando deste modo uma correcta visualização.

A solução passa por definir planos de recorte paralelos ao plano de projecção, através da
sua distância ao ponto VRP e medida ao longo da direcção VPN.

Resumo:
Construção de uma vista arbitrária 3D

Transformação de Visualização resume-se a colocar os objectos da cena de acordo


com a posição e a direcção de um observador e é implementada por uma translação e
uma rotação cujas matrizes são:

Então, a transformação de visualização será:

A conversão para o volume canónico ortogonal implica a realização de 2 passos:


• Translação do paralelepípedo de F unidades na direcção segundo Z, de modo a
que o plano anterior se localize na origem

• Escalar para que -1 ≤ x , y ≤ 1 e 0 ≤ z ≤ 1. A estas transformações


correspondem as matrizes de transformação

A transformação completa para o cálculo do volume canónico ortogonal será então:

Para obter o volume canónico perspectivo há que escalar o volume de visualização


genérico nas duas direcções x e y de modo a que se obtenha um declive unitário para os
planos laterais

Por outro lado, z não pode ser maior que 1, isto significa escalar o plano z = B

A transformação completa para o cálculo do volume canónico perspectivo será então:


Transformação total a ser aplicada aos objectos da cena antes da execução do algoritmo
de recorte, para cada tipo de projecção:

Projecção Ortogonal Projecção Perspectiva

Transformação Perspectiva

Na projecção ortogonal, os cálculos destinados a determinar se dois pontos P1 e P2 se


encontram sobre o mesmo raio projector são bastante simples pois consistem em
verificar se x1 = x2 e y1 = y2. Esta simplicidade decorre do facto de os raios projectores
na projecção ortogonal do modelo de câmara virtual simples serem paralelos ao eixo
dos ZZ.

No caso da projecção perspectiva, os cálculos complicam-se pois os raios projectores


são convergentes num centro de projecção e, portanto, oblíquos. Isto implica
imediatamente que o cálculo de visibilidade se revele dispendioso sobre o frustum
canónico.

A solução para este problema passa por converter o frustum normalizado no


paralelepípedo canónico através de uma operação conhecida por Transformação
Perspectiva que opera num espaço 3D e de que resultam pontos ainda num espaço 3D.
As vantagens inerentes à utilização desta transformação são:
• A determinação da possibilidade de oclusão entre dois pontos é realizada por
simples comparações das duas primeiras coordenadas (x1 = x2 e y1 = y2)
• O recorte é especializado apenas para o volume canónico ortogonal
• No desenho 2D utiliza-se a projecção ortogonal

O uso desta transformação tem as seguintes consequências:


• Transforma vértices do frustum em vértices do paralelepípedo canónico
• O vértice da pirâmide (centro de projecção) desloca-se para -∞
• Plano anterior, localizado em k, é deslocado para a origem
• Os valores de z variam entre 0 e 1
PROJECÇÕES

Projecções Geométricas Planas

Projecção Perspectiva Projecção Paralela

• Determinada pelo centro de projecção • Determinada por direcção de projecção


(CDP) • Distância ao CDP ao plano infinita
• Distância do CDP ao plano finita • Os raios projectores são paralelos entre
• Os raios projectores são convergentes si

Projecções Paralelas

Existem dois tipos distintos de projecções paralelas, em função de:


• direcção de projecção
• normal ao plano de projecção

As Projecções Ortogonais são projecções cuja direcção de projecção coincide com a


normal ao plano. Quando a normal ao plano está alinhada com um dos eixos obtém-se
as vistas (planta, alçado frontal, alçado lateral). Se a normal ao plano não estiver
alinhada com nenhum dos eixos então obtém-se as Projecções Axonométricas
(Isométricas – ângulos de 120º entre eixos; Dimétricas – 2 ângulos iguais; Trimétrica –
3 ângulos diferentes).

As projecções ortogonais são usadas em desenhos técnicos (engenharia civil e


mecânica, arquitectura). A vantagem deste tipo de projecção é que utiliza medidas
precisas e tem todas as vistas na mesma escala. As limitações das projecções ortogonais
é que não é possível “visualizar” objectos 3D e são necessárias múltiplas vistas para
definir uma peça.

As Projecções Obliquas são projecções cujos raios projectores formam um ângulo


oblíquo com o plano de projecção. O plano de projecção é normal a um dos eixos
principais. As vantagens das projecções obliquas é que mostra a forma exacta de uma
face do objecto projectado, permite a comparação de dimensões e transmite a ideia de
um objecto 3D. As desvantagens é que dependendo do plano de projecção a aparência
pode aparecer distorcida e tem alguma falta de realismo.
Alguns exemplos de projecções obliquas são o caso da Projecção Cavaleira, que tem
um ângulo entre os projectores e a normal de 45º e as faces são perpendiculares à
escala. Um outro exemplo é a Projecção Gabinete, cujo ângulo entre os projectores e a
normal é arctg(2), ou seja, 63.4º e as faces do objecto são perpendiculares à escala de
50%

Cavaleira Gabinete

Projecções Perspectivas

A aplicação de projecções perspectivas é mais utilizada em publicidade, arquitectura,


desenho industrial, engenharia, artes gráficas, entre outras. Este tipo de projecções
garante maior realismo mas alteram a geometria dos objectos.

Características:
• Linhas paralelas (não ao plano de projecção) convergem em pontos de fuga
• Linhas paralelas aos eixos definem pontos de fuga axiais (máximo de 3)
• Não mantém proporcionalidade entre distâncias
• Tamanho dos objectos diminui com a distância
• Só mantém a amplitude dos ângulos em faces paralelas ao plano de projecção

Pontos de fuga:
• Número de pontos de fuga é igual ao número de eixos coordenados
intersectados pelo plano de projecção
• Só para formas
- Faces em ângulos rectos
- Normais às faces perpendiculares aos eixos coordenados
Transformação Perspectiva

Plano de Projecção:
• normal ao eixo dos ZZ
• em z = d
• mapeado na superfície de visualização
do dispositivo
• origem do espaço de coordenadas de
visualização é igual à intersecção do plano
com o eixo ZZ

Transformação Ortogonal

• Plano de projecção perpendicular à direcção de projecção


• Simplificar:
- Direcção de projecção coincidente com o eixo ZZ
- Raios projectores paralelos a ZZ
ILUMINAÇÃO E SOMBREAMENTO
Para ser possível obter a imagem de uma cena esta terá que ser iluminada por uma ou
mais fontes de luz e têm que ser definidas as propriedades de interacção entre os
objectos que existem na cena e a energia luminosa que incide em cada um deles.

O processo de sombreamento consiste no cálculo da cor de cada uma das quadrículas


que foram identificadas no processo de rasterização dos elementos da cena.

Quando se consideram unicamente as contribuições da energia que é emitida pelas


fontes de luz e reflectida por uma única superfície designa-se por Modelos de
Iluminação Local, que requerem um esforço computacional baixo e conduzem a
imagens com uma qualidade aceitável para muitas aplicações.

Nos Modelos de Iluminação Global é considerada também a iluminação que é


reflectida ou refractada por outras superfícies. Estes modelos são fisicamente mais
correctos e produzem imagens com maior grau de realismo, mas requerem um esforço
computacional elevado.

Modelo de Iluminação Local de Phong

Este modelo permite calcular o valor da intensidade de um raio reflectido por uma
superfície em função da orientação da superfície, da posição da câmara, da posição da
fonte de luz e das propriedades da superfície.

O modelo de iluminação de Phong considera que os materiais, quanto ao modo como


reflectem a energia luminosa, são uma combinação linear de um material que reflecte
toda a energia numa única direcção, reflexão especular e de um material que reflecte
toda a energia luminosa de igual modo em todas as direcções, reflexão difusa.

O modelo considera ainda a existência de uma componente de Luz Ambiente a qual


simula a existência de iluminação global, isto é, de energia luminosa que é reflectida por
todas as restantes superfícies presentes numa cena e que ilumina a superfície.

Luz Ambiente
Se uma superfície, mesmo visível, não estiver directamente iluminada por um raio de
luz, não será desenhada.

Para resolver esse problema, o modelo assume que todas as superfícies da cena vão ser
iluminadas por uma fonte de luz ambiente, de valor constante, a qual resulta de
múltiplas reflexões da luz nas superfícies da cena.

Reflexão Difusa
Na reflexão difusa a energia luminosa é reflectida com igual intensidade em todas as
direcções, segundo uma semiesfera, e o seu valor depende unicamente do ângulo de
entre o raio incidente e a normal à superfície do objecto
A intensidade da energia luminosa reflectida não depende da posição do observador

Reflexão Especular
Na reflexão especular as propriedades do material são tais que toda a energia que incide
num ponto segundo uma dada direcção fazendo um ângulo com a normal à superfície, é
reflectiva segundo o mesmo ângulo. Sendo θ o ângulo entre o vector unitário normal à
superfície, N, no ponto de incidência e o vector unitário da fonte de luz, L.

A existência de superfícies especulares perfeitas é uma aproximação muito limitativa da


realidade. Só seria possível visualizar a superfície se o raio reflectido coincidisse com a
direcção de visão.

Para ultrapassar este problema considera-se a existência de superfícies reflectoras


especulares imperfeitas, onde a reflexão se verifica dentro de um ângulo sólido em torno
de raio reflectido. É possível obter o que se designa por brilho quando se observa o
objecto segundo um ponto de vista próximo do raio reflectido

Combinando todas as componentes descritas obtém-se a expressão global do modelo de


reflexão de Phong
Atenuação Atmosférica
Para melhorar o realismo da imagem devia ser possível considerar a absorção da energia
luminosa pelo meio de transmissão que é usado no percurso entre o objecto e o ponto de
vista. Este efeito, designado por Depth Cueing, permite representar com menor
intensidade luminosa os objectos que se encontrem mais afastados do ponto de vista.

No modelo de reflexão de Phong tal efeito de atenuação é obtido através da dependência


da distância entre o objecto e o ponto de vista do seguinte modo

Métodos de Sombreamento

Sombreamento Constante
Neste modelo é utilizada a normal à faceta para calcular uma cor a qual é usada para
sombrear toda a faceta.

Os resultados que se obtêm com este método de sombreamento são de baixa qualidade
uma vez que ficam visíveis as diferenças de cor nas fronteiras entre facetas, produzindo
imagens muito pouco realistas.

Os fracos resultados do método resultam do facto de aplicar um modelo de iluminação


local a cada faceta, não tendo em consideração que as facetas são partes de um único
objecto.

Sombreamento de Gouraud
A influência de facetas adjacentes é contemplada através do cálculo de normais em cada
vértice da malha de facetas. Estas normais são obtidas por interpolação das normais de
todas as facetas que partilham um mesmo vértice.

A maior limitação do método de sombreamento de Gouraud resulta do modo como é


efectuada a interpolação.

Sombreamento de Phong
No método de sombreamento de Phong, a partir das normais aos vértices, que são
calculadas do mesmo modo que no sombreamento de Gouraud, é calculada a normal a
cada quadrícula através da interpolação das normais. A normal calculada para cada
quadrícula é então usada no modelo de iluminação de Phong para calcular a intensidade
da energia luminosa reflectida.

Este método é computacionalmente mais pesado uma vez que é necessário calcular a
cor, por aplicação do modelo de sombreamento de Phong a todas as quadrículas da
faceta.

Limitações das Aproximações Interpoladas


Sendo a normal o único elemento geométrico utilizado no modelo de reflexão de Phong,
a geometria da silhueta de qualquer objecto modelado através de malha de facetas
aparecerá pouco realista.
Uma segunda limitação resulta do facto da interpolação de intensidade ser executada em
coordenadas de ecrã, embora partindo de vectores normais calculados em coordenadas
do mundo. Não tendo impacte negativo no cálculo da imagem de uma cena, poderá no
entanto conduzir a perturbações perceptíveis em sequências animadas.

Um último problema está relacionado com o aparecimento de falsos alisamentos entre


facetas adjacentes.

Método de Sombreamento Misto


Considerando as vantagens de cada um dos métodos de sombreamento, em particular a
rapidez do método de Gouraud e a boa capacidade em tratar a componente especular do
método de Phong, existe toda a conveniência em combinar a aplicação dos 2 métodos
na criação de imagens.
RAY TRACING
Algoritmo Fundamental de Ray Tracing

Os algoritmos de ray tracing são algoritmos para determinar a visibilidade dos objectos
de uma cena, operando ao nível de precisão da imagem. O algoritmo fundamental de ray
tracing considera raios com origem no centro de projecção em que cada um dos raios
passa pelo ponto correspondente a um pixel da imagem sobre o plano de projecção da
cena a representar. Se um raio não intersectar nenhum objecto da cena, é atribuída ao
pixel da imagem por onde o raio passa a cor de fundo da cena e ao pixel correspondente
ao raio é atribuída a cor do ponto de intersecção mais próximo da origem do raio.

A determinação da cor de cada pixel da imagem depende do cálculo da iluminação no


ponto da cena que o raio atinge. Esta depende da iluminação directa deste ponto pelas
fontes de luz da cena, da iluminação global da cena e da iluminação devida à luz
reflectida pelos objectos da cena que atinge esse ponto.

Existem três componentes que contribuem para a iluminação:


• luz proveniente de outros objectos, onde foi reflectida na direcção do objecto
cuja iluminação se pretende determinar
• luz refractada transmitida através do objecto e que ilumina o ponto
• luz proveniente directamente das fontes de luz e que é reflectida pelo objecto

A determinação de cada uma destas componentes requer cálculos próprios, sendo


necessário inspeccionar as origens prováveis de cada uma delas. Para isto empregam-se
os chamados raios secundários, traçados em sentido inverso ao da propagação da luz
correspondente a cada uma das componentes.
• raios reflectidos
• raios refractados
• raios de iluminação directa ou de sombra

A determinação das intersecções destes raios secundários com os objectos da cena


permite então calcular as características da luz proveniente desses objectos e a sua
contribuição para a iluminação do ponto de intersecção do raio primário com o objecto
original.

Cálculo de Intersecções

Os algoritmos para o cálculo de intersecções não devem realizar quaisquer cálculos


significativos antes de verificar se existe ou não intersecção dos raios com os objectos.

Equação paramétrica de um Raio

Em ray tracing, a origem dos raios primários encontra-se no centro de projecção,


enquanto corresponde ao centro do pixel cujas propriedades se pretende determinar.
O valor de t corresponderá então às seguintes situações:
•t<0 pontos para trás do centro de projecção e que não pertencem ao
raio
•0≤t≤1 pontos localizados entre o centro de projecção e o plano de
projecção
•t>1 pontos situados para lá do plano de projecção

Interacção da Luz com as Superfícies

Reflexão especular perfeita


Ocorre em superfícies lisas e brilhantes, normalmente espelhadas, metálicas ou de vidro.
O raio reflectido existe no plano definido pelo raio incidente e pela normal à superfície
e o ângulo de reflexão é igual ao ângulo de incidência.

Reflexão difusa perfeita


Nas superfícies rugosas não existe uma direcção pré-determinada segundo a qual a luz
incidente é reflectida. Todas as direcções são igualmente prováveis e, segundo o modelo
de reflexão difusa, a intensidade da luz reflectida é igual em todas as direcções.

Transmissão especular perfeita e refracção


A luz propaga-se através dos objectos transparentes ou translúcidos. Os objectos
aparentam estar mais próximos do observador do que realmente se encontram.

A lei de Snell estabelece a relação entre os dois ângulos e os índices de refracção (η)
dos dois meios

O índice de refracção de um meio depende das propriedades ópticas desse meio e varia
de meio para meio. O valor do índice de refracção de um meio depende também da
frequência (ou do comprimento de onda) da luz.
Reflexão total na interface entre dois meios
Um raio luminoso sofre uma refracção ao atravessar a interface entre dois meios de
densidade óptica diferente. Mas, quando a passagem se dá de um meio mais denso para
outro menos denso, o raio pode ser reflectido na interface em vez de ser refractado. Este
fenómeno é denominado de reflexão total e a sua ocorrência depende do ângulo de
incidência do raio luminoso e dos índices de refracção dos dois meios.

O valor máximo que o ângulo θt pode assumir é 90º. Existirá então um valor limite do
ângulo θi a partir do qual deixa de se dar a refracção e passa a verificar-se a reflexão dos
raios incidentes na interface entre os dois meios

Ângulo crítico:

Extensão do modelo de iluminação de Phong


O modelo de iluminação de Phong não inclui a contribuição da luz transmitida através
de objectos transparentes ou translúcidos para a iluminação. É necessário estender este
modelo para que possa ser empregue pelos algoritmos de ray tracing, adicionando um
termo correspondente à luz assim transmitida.

Iluminação directa e determinação de sombras


A iluminação de intersecção de um raio primário com um objecto da cena a representar
pode ser directa se o objecto for directamente iluminado por uma ou mais das fontes de
luz existentes na cena. Para verificar se esta condição ocorre é necessário determinar se
o ponto de intersecção se encontra em linha directa de visão com cada uma das fontes
de luz. Se tal acontecer, o ponto será directamente iluminado pela fonte de luz e a
respectiva contribuição para a iluminação do ponto deve então ser calculada. Caso
contrário, o objecto encontrar-se-á na sombra em relação a essa fonte de luz.

Para efectuar esta verificação empregam-se raios secundários do tipo raios de


iluminação.
Algoritmo Completo

O algoritmo básico de ray tracing encontra-se incompleto porque se limita a atribuir a


cada pixel da imagem a cor do ponto de intersecção do raio primário correspondente ao
pixel com o objecto mais próximo da origem do raio, sem atender a outras contribuições
para a iluminação desse ponto de intersecção que não seja a sua iluminação directa. É
necessário inspeccionar recursivamente a cena através da geração de raios secundários.

O algoritmo recursivo parte do nível zero com o valor negro atribuído à cor e com a
direcção e origem do raio primário correspondente ao pixel cuja cor se pretende
determinar. Se o raio não intersectar qualquer objecto, então a cor do pixel será a cor de
fundo da cena e o processo recursivo terminará. Caso contrário determina-se a cor local
devida à iluminação directa através de raios de iluminação. Seguidamente determinam-
se os raios secundários correspondentes às direcções cujos raios reflectido e transmitido
coincidem com a direcção do raio corrente e calculam-se as respectivas contribuições
para a cor do ponto corrente que, devidamente ponderadas, serão somadas com a cor
local à cor anteriormente determinada para o raio que está a ser calculado.

Estratégias de Optimização

A carga computacional da geração de imagens pelo algoritmo de ray tracing é bastante


pesada devido ao cálculo das intersecções dos raios com os objectos da cena. Para
resolver este problema existem quatro tipos de soluções:

Transformação da cena segundo o raio


A localização espacial das intersecções de um raio com os objectos de uma cena só é
conhecida depois de essas intersecções terem sido calculadas. Se o raio coincidir com o
eixo dos ZZ da cena, sabe-se que todas as intersecções corresponderão a pontos para os
quais X = 0 e Y = 0. Pode-se, então, fazer uso deste conhecimento, não procurando
intersecções do raio com todos os objectos que não possuam pontos com valor nulo das
coordenadas X e Y.

Esta estratégia apresenta no entanto a desvantagem computacional devida à necessidade


de aplicar uma transformação específica para cada raio, e de cada transformação ter que
ser aplicada a todos os objectos da cena.

Intersecção com volumes envolventes


Testar a existência de intersecção entre o raio e o volume envolvente do objecto cuja
intersecção com o raio é mais fácil e rapidamente determinada. Se o resultado for
afirmativo, existe grande probabilidade de existência de intersecção entre o raio e o
objecto e, então, deverão ser realizados cálculos mais detalhados de intersecção com os
elementos descritores do objecto. Caso contrário, pode-se passar ao objecto seguinte da
lista de objectos da cena e poupa-se cálculos demorados que iriam contribuir para tornar
o processamento da imagem muito mais demorado.

O volume envolvente deve ser tal que o objecto o preencha o mais completamente
possível, para que não ocorram muitas situações em que, existindo intersecção entre o
raio e o volume envolvente do objecto, não exista intersecção do raio com o objecto
envolvido pelo volume.
Esta estratégia permite diminuir a carga computacional de cálculo de intersecção entre
um raio e os objectos, pois elimina imediatamente o objecto contido num volume
envolvente se este volume não for intersectado.

Hierarquização do espaço
Os volumes envolventes podem ser organizados hierarquicamente, construindo uma
árvore onde os volumes envolventes de cada objecto singular correspondem às folhas de
cada ramo e em que cada nó intermédio representa um volume que envolve todos os
volumes situados nos ramos que dele dependem. Se num dado nó existir intersecção
entre o respectivo volume envolvente e o raio, dever-se-á então inspeccionar todos os
ramos com origem nesse nó. Se não existir intersecção com o volume envolvente a esse
nível, então não existirão quaisquer intersecções do raio com os volumes
correspondentes aos ramos com origem nesse nó e a determinação de intersecções pode
ser imediatamente terminada para o ramo corrente.

Partição do espaço
Dividir o espaço da cena em volumes envolventes paralelepipédicos dispostos segundo
uma grelha tridimensional. Cada partição do espaço assim obtida poderá ou não conter
objectos, não sendo necessário que cada objecto esteja totalmente contido numa única
partição.

Dado um raio, esta estratégia consiste então em determinar a intersecção do raio com as
partições seguindo uma ordem de teste por distância crescente das partições à origem do
raio.

Uma partição intersectada pelo raio é liminarmente eliminada se não contiver quaisquer
objectos. Caso contrário calculam-se então as intersecções do raio com os objectos
contidos na partição para, no final, reter a intersecção correspondente à menor distância
à origem do raio, aplicando a cada partição uma lógica em tudo semelhante à aplicada a
toda a cena quando se não considera a sua partição.

Antialiasing em Ray Tracing

A precisão dos algoritmos de ray tracing depende da resolução da quadrícula empregue,


que se encontra no espaço de imagem. Por este motivo, os algoritmos de ray tracing
estão sujeitos a fenómenos de aliasing que podem ser contrariados por técnicas de
antialiasing de pré-filtragem.

A cor de um pixel é determinada calculando a cor no ponto de intersecção do raio


primário correspondente ao pixel com o objecto intersectado no espaço do objecto. Em
lugar de se empregar apenas um raio primário por cada pixel, poder-se-ão empregar
vários raios primários cobrindo uniformemente a área correspondente ao pixel. A cor do
pixel será, então, a média das cores determinadas por cada um dos raios, o que equivale
a realizar uma pré-filtragem por sobre amostragem.

Amostragem adaptativa
Emprega inicialmente menos raios primários por cada área, normalmente em número de
cinco, em que um deles se localiza no centro da área e os outros quatro nos quatro
cantos dessa cena. Se as cores determinadas por cada um dos cinco raios forem
semelhantes, pode-se concluir que os raios intersectam o mesmo objecto e emprega-se a
cor média para a cor do pixel da imagem correspondente a essa área.
Um problema desta técnica reside em arbitrar quando é que existe ou não uma diferença
significativa entre as cores. Por outro lado, não é óbvio que a amostragem seja
significativa apenas porque as cores dos cinco raios de uma área são idênticas ou
semelhantes, pois pode acontecer que exista na área um objecto de pequena dimensão
que não seja detectado por qualquer dos cinco raios. A causa deste problema está na
natureza regular da malha definida pelos cinco raios.

Amostragem estocástica
Esta técnica permite calcular cores médias mais correctas, pois os raios encontram-se
melhor distribuídos dentro da área correspondente a cada pixel, mas introduz ruído
devido à distribuição aleatória. Esta técnica produz resultados de melhor qualidade
visual, principalmente em zonas de sombra parcial onde não existem arestas vivas.

Persistem os problemas associados ao número de raios a calcular e à correspondente


carga computacional. Podem existir pixeis para os quais nove raios primários são ainda
insuficientes, como o caso de um pixel a que corresponda uma área de padrão
axadrezado que contenha 16 cores diferentes. A solução consiste no aumento sucessivo
do número de raios primários até que, estatisticamente, se possa determinar que a cor
calculada é a cor correcta com uma dada probabilidade de certeza.
RADIOSIDADE
O método da radiosidade tem por objectivo o cálculo da iluminação e do sombreamento
em cenas em que predominam superfícies reflectoras difusas, e deriva do cálculo das
trocas de radiação térmica entre superfícies empregue em Transmissão de Calor
adaptado à Computação Gráfica.

A primeira diferença entre o método da radiosidade em Transmissão de Calor e em


Computação Gráfica está em que, na primeira, a radiação a ter em conta se encontra na
zona do espectro electromagnético cuja radiação produz efeitos térmicos ao atingir os
corpos, a zona dos infravermelhos, enquanto que na segunda a radiação a tratar
corresponde à radiação na zona visível do espectro, a luz. A segunda diferença consiste
em que, em Computação Gráfica, o objectivo do método é determinar a luz proveniente
de uma superfície, a radiosidade da superfície, enquanto que em Transmissão de Calor o
objectivo é determinar a temperatura das superfícies que trocam radiação térmica ou o
saldo da radiação trocada entre superfícies.

Para calcular as radiosidades de uma cena, dividem-se as superfícies desta em áreas em


que a radiosidade possa ser considerada uniforme e, seguidamente, estabelecem-se as
equações de balanço para cada uma das áreas. A precisão dos resultados depende assim
do número de áreas consideradas, do tamanho destas áreas e da sua adequação em
reproduzir os gradientes de sombreamento existentes na realidade.

O método da radiosidade é um método que opera no espaço dos objectos e não depende
da vista de cena que se pretende gerar.

Equação da Radiosidade

Irradiação total
A energia radiante total que atinge uma dada superfície pode ser por esta absorvida,
reflectida ou transmitida em proporções que dependem das propriedades físicas da
superfície e do respectivo corpo.
• Absorsividade (α) – fracção da irradiação total que é absorvida
• Reflectividade (ρ) – fracção da irradiação total que é reflectida
• Transmissividade (τ) – fracção da irradiação total que é transmitida através
do corpo da superfície

Radiosidade total e radiosidade


A energia radiante total proveniente de uma superfície é designada como a radiosidade
total dessa superfície.
• Irradiação (I) – energia incidente numa superfície por unidade de área da
superfície
• Poder Emissivo (E) – energia emitida por uma superfície por unidade de área
de superfície
• Radiosidade (B) – energia radiante que abandona uma superfície por unidade
de área de superfície
Factores de forma
Os factores de forma assumem um significado geométrico preciso correspondente à
forma como cada superfície “vê” outra superfície. Isto corresponde ao ângulo sólido do
campo de visão da superfície que “vê” ocupado pela superfície que é “vista”.

Os factores de forma dependem unicamente da geometria das superfícies e da sua


disposição espacial relativa

Propriedades dos factores de forma


• Reciprocidade
• Aditividade
• Fecho

Equação da Radiosidade

Esta equação tem que ser resolvida para cada uma das áreas em que a cena a calcular se
encontra decomposta.

Método do Hemicubo

O método do hemicubo tem por base a analogia de Nusselt:

“ Se duas superfícies diferentes ocupam a mesma parte do horizonte visual de


uma terceira superfície, os factores de forma desta última para cada uma
daquelas são iguais “

A analogia de Nusselt permite substituir o cálculo de factores de forma de geometrias


complexas pelo cálculo de factores de forma de geometrias mais simples, recorrendo a
geometrias para as quais existam expressões analíticas e cuja carga computacional não
seja demasiado elevada (rectângulos paralelos e rectângulos perpendiculares).

Considera-se duas superfícies para as quais se pretende determinar os factores de forma


e define-se um cubo centrado numa dessas superfícies, envolvendo-a completamente, e
em que um dos eixos coincide com a direcção da normal à superfície. Para efeitos da
determinação dos factores de forma, considera-se apenas a metade do cubo e descarta-se
a outra metade.
Optimização

Os algoritmos anteriormente descritos para o cálculo das radiosidades de uma cena


resolvem alguns dos principais problemas encontrados, mas deixam ainda por resolver
dois tipos de problemas:
• Grau de discretização da cena
• Velocidade de convergência do método de resolução do sistema de equações
lineares a resolver

A solução a estes dois problemas baseia-se em:


• Subdivisão Adaptativa – consiste em identificar as áreas de maiores
gradientes de radiosidade e subdividi-las quando se verifique que a divisão
inicial foi demasiado grosseira face aos gradientes calculados
• Radiosidade Progressiva
MODELAÇÃO GEOMÉTRICA
Modelação geométrica é o conjunto de operações que concorrem para a definição da
geometria e das propriedades dos objectos a ela associadas.

Os objectivos da modelação não se limitam à mera construção de modelos dos objectos


para produzir imagens de cenas.

A modelação geométrica permite definir as formas e propriedades dos objectos antes de


os mesmos serem manufacturados e determinar que processos de fabrico deverão ser
empregues na sua fabricação.

A modelação geométrica desempenha também um papel importante na modelação


conjunta de objectos com componentes móveis e na montagem de componentes.

A modelação deve ter em conta o realismo das representações dos objectos.

Propriedades Desejáveis para as Representações

Existem vários tipos de representação para a modelação geométrica de sólidos em que


cada forma pode ainda apresentar variantes. Esta multiplicidade tem origem nos
requisitos particulares decorrentes dos objectivos de cada tipo de representação. A
modelação dos objectos deve ser a mais exacta possível para que o tipo de representação
não introduza quaisquer artefactos indesejáveis.

Convém que as representações sejam universais, isto é, possam representar todos os


objectos imagináveis e não apenas um número restrito. Como tal é impossível na
prática, as representações deverão então poder representar o maior número possível de
objectos.

Os objectos devem também ser fielmente representados para que não possam existir
ambiguidades de interpretação quanto ao objecto representado.

As representações devem ser únicas, o que implica que cada tipo de representação não
possa representar um objecto por mais do que uma forma. Se não houvesse uma
representação única, poder-se-ia concluir que dois objectos eram diferentes embora se
tratasse do mesmo objecto representado de duas maneiras.

A representação de objectos deve ser precisa, isto é, não deve conter aproximações pois
disto depende o realismo da sua visualização e a correcção com que poderá ser
manufacturado.

Exige-se que os processos de criação de representações apresentem menores


probabilidades de ocorrência de erros.

O processamento de representações dos modelos geométricos de sólidos requer que


estas sejam compactas para que ao processamentos sejam rápidos e que estes possam
igualmente ser realizados através de algoritmos eficientes.
Tipos de Representação

Instanciação de primitivas
É uma das representações mais usadas devido à sua grande simplicidade e flexibilidade
de emprego. Este tipo de representação tem por base a definição de objectos
geométricos tridimensionais, as primitivas, que possuem atributos, os parâmetros, cujos
valores são definidos pelo utilizador no momento da criação de uma nova instância.

As primitivas serão postas à disposição dos utilizadores em bibliotecas ou repertórios


mais ou menos complexos mas sempre adequados aos fins em vista.

Os objectos modelados por instanciação de primitivas são agrupáveis para construir


objectos mais complexos. Não é, no entanto, possível definir uma nova primitiva com
parâmetros próprios à custa das primitivas existentes. Para criar uma nova primitiva é
necessário criar um novo objecto e definir os seus parâmetros e os procedimentos de
cálculo de propriedades como o volume e o centro de massa.

A hierarquização é uma propriedade importante da representação da modelação de


sólidos por instanciação de primitivas.

Representação por varrimento


A representação de sólidos tridimensionais por varrimento tem por base a descrição do
volume gerada quando um objecto é deslocado segundo uma dada trajectória e varre um
dado volume.

No caso dos sólidos gerados por extrusão e rotação a partir de secções bidimensionais
simples, os varrimentos produzem volumes com propriedades geométricas fáceis de
calcular. Esta facilidade complica-se um pouco se as secções bidimensionais que varrem
os volumes apresentarem formas irregulares. Estes cálculos tornam-se bastante mais
difíceis nos chamados volumes varridos gerais. Nestes, a secção bidimensional que
varre os volumes pode variar de ponto para ponto da trajectória, normalmente de forma
contínua.

Uma outra desvantagem é a dificuldade em aplicar operações a objectos modelados por


varrimento.

Em geral, a realização de operações entre volumes descritos por varrimento implica a


conversão prévia das representações dos operandos para representações em que as
operações sejam fáceis de realizar.
Representação de fronteira
A modelação geométrica de sólidos por representação de fronteira descreve os objectos
a representar por meio das superfícies que os limitam e das arestas e vértices que estas
superfícies apresentam.
De entre os vários tipos de representação de fronteira consideram-se os seguintes:

• Representação por poliedros


A representação de fronteira por malha poligonal é a representação mais comum
de modelação de sólidos por poliedros.
A representação por malha poligonal tem a vantagem adicional de permitir a
visualização rápida do sólido modelado através da representação das suas
arestas. Este tipo de representação, denominado modelo de arames, permite
verificar visualmente e de forma rápida a correcção da malha poligonal e
transmite ainda uma imagem bastante aproximada dos sólidos modelados.

• Representação por arestas estendidas ou arestas com alas


Este tipo de representação resolve o problema de dada uma aresta de uma dada
face, determinar que outra face da fronteira partilha essa aresta com ela. Basta
para isso associar estruturas de dados a cada aresta, vértice e face da malha
poligonal. A criação destas estruturas ordenadas implica um esforço adicional do
cálculo inicial que é posteriormente compensado no processamento da
representação, pois as relações de adjacência passam a ser explícitas e removem
a necessidade de efectuar buscas em listas mais ou menos longas.

• Representações não poliédricas


Em situações em que seja necessário calcular (prever) colisões de um cilindro
assim aproximado com um furo que também apresenta forma cilíndrica, é
provável que se obtenha colisões que não deveriam ocorrer. Se o cilindro puder
encaixar no furo, a animação da rotação do cilindro poderá não ser possível
porque será detectada uma colisão com o modelo do furo logo que o modelo
aproximado do cilindro (prisma) seja rodado.
A solução para estes problemas passa por representações de fronteira não planas
com o emprego de técnicas especiais.

Representação por partição do espaço


Esta representação consiste em representar sólidos por meio de conjuntos de sólidos
elementares que, quando justapostos e sem se intersectarem, reproduzem o volume
ocupado pelos sólidos a representar. Pode-se considerar quatro tipos de representação de
sólidos por partição do espaço:

• Decomposição em células
Esta representação tem por base a decomposição dos objectos a representar em
células ou elementos primitivos paramétricos. Este tipo de representação é
semelhante à representação facultada pela linguagem VRML. A decomposição
do espaço proíbe expressamente a intersecção e impõe a justaposição das
primitivas que partilham pontos, arestas ou faces.
Não permite qualquer ambiguidade, mas pode não ser única, isto é, podem
existir várias representações para um dado sólido.
• Enumeração da decomposição do espaço
Decompõe o espaço segundo uma grelha tridimensional composta por volumes
de forma a dimensões idênticos, os volumes elementares, também denominados
por voxeis. A representação de um sólido consiste então em arbitrar a
discretização pretendida, ou seja, determinar a dimensão dos voxeis, e,
seguidamente, enumerar quais os voxeis ocupados pelo sólido a representar. Tal
representação é única e não contem quaisquer ambiguidades.
A simplicidade desta representação permite detectar colisões entre objectos e a
sua adjacência de forma explícita, através da inspecção das células contíguas às
células das fronteiras dos objectos. O inconveniente mais grave consiste no
número elevado de volumes elementares necessários. Um voxel está sempre
completamente ocupado ou vazio.

• Representação por árvore de octantes


Tem por objectivo eliminar a desvantagem principal da representação por
enumeração do espaço.
Esta representação aplica a estratégia de dividir para conquistar, dividindo o
espaço em oito octantes pelo plano médio segundo cada direcção do espaço.
Cada octante assim obtido é sucessivamente subdividido em sub-octantes até
que estes se encontrem todos ocupados ou todos livres, ou ainda se atinja o nível
máximo de subdivisões permitido. Depois de uma subdivisão, se os octantes
resultantes forem homogéneos, os octantes são substituídos pelo octante que lhes
deu origem e o processo de subdivisão termina para esse octante.

• Representação por árvore de partição binária


Pretende optimizar a estratégia de subdivisão aplicada na representação por
árvore de octantes. A subdivisão de um octante em oito octantes é feita
cegamente, sem qualquer critério, segundo o plano médio de cada umas das três
direcções do espaço, quando uma melhor localização do plano bissector
resultaria em dois sub espaços em que em deles estaria ocupado pelo objecto e o
outro estaria vazio. Nesta representação o espaço é dividido em apenas dois sub
espaços por um plano arbitrário colocado de forma a coincidir com a superfície
ou parte da superfície do objecto a representar.
Uma vantagem deste tipo de representação é a maior fidelidade obtida na
representação das fronteiras do objecto.

Operações Lógicas em Modelação Geométrica

Uma operação de associação não tem um resultado único pois depende de que tipo de
associação se pretende efectuar.

A associação de sólidos para modelar um novo sólido depende do tipo de associação


pretendido, isto é, depende da operação lógica a realizar entre os volumes dos
operandos.

Os operadores lógicos empregues em modelação de sólidos permitem adicionar dois


volumes, isto é, calcular a sua união (∪), determinar o volume comum, ou seja, a sua
intersecção (∩), e a sua diferença (-), de que resulta um volume que é igual ao volume
de um dos dois operandos menos o volume da sua intersecção e depende da ordem dos
operandos.
O resultado de operações lógicas sobre volumes não é necessariamente um volume e
depende ainda de se considerar se a fronteira faz ou não parte do volume que limita.

Chama-se regularização de um objecto à operação que determina a fronteira que


envolve todos os pontos interiores de um volume aberto. Um objecto cujo conjunto de
pontos constituintes é idêntico ao seu fecho denomina-se objecto regular.

Modelo de Malha Poligonal

O modelo de malha poligonal é um modelo de representação geométrica de sólidos por


representação da fronteira que descreve as superfícies dos objectos através de uma
colecção de polígonos. Um modelo de malha poligonal corresponde à enumeração de
uma colecção de arestas, vértices e polígonos interligados numa malha que, no seu
conjunto, descreve a fronteira dos objectos a representar.

Operações sobre modelos de malha poligonal


Existem várias formas de representar uma malha poligonal. Cada uma delas emprega
ema estrutura de dados própria. O tipo de estrutura de dados a empregar em cada caso
concreto depende de que operações irão ser realizadas ao processar a malha poligonal.
Estas poderão ser a representação dos objectos modelados em dispositivos de saída
gráfica ou a verificação da consistência e correcção da malha poligonal que os descreve.

Operações mais comuns efectuadas sobre malhas poligonais:


• Representar a malha em dispositivos de saída gráfica
• Determinar que arestas concorrem num dado vértice
• Determinar os vértices de uma dada aresta
• Determinar os polígonos que partilham uma dada aresta ou um dado vértice
• Verificar a consistência da malha, determinando faltas de arestas, vértices ou
polígonos

É o tipo de processamento pretendido que determina que operações serão realizadas


sobre os modelos de malha poligonal.
Malha poligonal de lista explícita
Cada polígono é descrito por um conjunto de termos ordenados em que cada termo
contém as coordenadas de um vértice do polígono.

Este tipo de modelo de malha poligonal não possui qualquer informação sobre os
vértices e arestas comuns a dois ou mais polígonos. Qualquer aresta comum a dois ou
mais polígonos é desenhada em dispositivos de saída gráfica tantas vezes quanto o
número de polígonos a que a aresta pertença. Uma forma de evitar o desenho duplicado
de arestas consiste em, antes de desenhar uma dada aresta percorrer todos os polígonos
anteriormente desenhados para determinar se a aresta pertence a algum deles e,
portanto, foi já desenhada.

A utilização deste tipo de malhas é pouco eficiente quando se pretende alterar as


coordenadas dos vértices. A alteração destas é extremamente lenta, pois implica
percorrer toda a lista de polígonos para alterar as coordenadas de todas as ocorrências
do vértice a modificar.

Malha poligonal de lista de vértices


Baseia-se na construção de um conjunto de termos ordenados contendo as coordenadas
de cada vértice. Esta lista não contém vértices duplicados.

Cada polígono é descrito por uma lista de vértices em que cada elemento corresponde
ao número de ordem desse vértice na respectiva lista ou uma referência para a estrutura
que contém as coordenadas do vértice.

Esta descrição é mais compacta do que a descrição por lista explícita pois evita o gasto
de memória provocado pela duplicação do armazenamento das coordenadas dos
vértices. Por outro lado, a operação de alteração das coordenadas de um dado vértice
passa a ser explícita, sendo a alteração dessas coordenadas realizada uma única vez. As
arestas comuns a dois ou mais polígonos continuam a ser desenhadas duas ou mais
vezes nos dispositivos de saída gráfica.

Esta representação contínua a não ser eficiente na determinação de adjacências de


polígonos, uma vez que é necessário percorrer toda a lista de polígonos para determinar
se e quais polígonos referenciam um dado vértice ou uma dada aresta.

Malha poligonal de lista de arestas


Permite executar de forma eficiente a operação de determinação das adjacências que nas
representações anteriores é demasiado lenta. A representação por lista de arestas
constrói uma lista de vértices únicos e uma lista de arestas únicas que referenciam os
respectivos vértices e os polígonos a que pertencem. Estas referências encontram-se
numa estrutura associada a cada aresta e referem os dois vértices e, pelo menos, dois
polígonos se a malha for fechada.

Mantém-se a lista de polígonos mas agora existe uma estrutura associada a cada
polígono que referencia um mínimo de três arestas. A alteração das coordenadas de um
vértice é uma operação simples e explícita e não existe duplicação de informação que
implique gastos desnecessários de espaço de armazenamento.
As vantagens principais da representação por listas de arestas são tornar explícita a
determinação da adjacência de polígonos e eliminar o desenho duplicado de arestas em
dispositivos de saída gráfica, pois para desenhar as arestas basta percorrer a lista de
arestas na qual cada aresta é única.

Estas vantagens traduzem-se na redução do trabalho realizado pelo pipeline de


visualização no recorte, transformação e conversão dos segmentos de recta
correspondentes ao desenho das arestas.

A única desvantagem consiste na impossibilidade de determinação explícita de que


arestas concorrem num dado vértice dado que a estrutura associada a cada vértice
contém apenas as respectivas coordenadas.

Verificação da consistência de malhas poligonais


A verificação da consistência de uma malha deverá atender aos seguintes critérios:
• Todos os polígonos devem ser fechados
• Todas as arestas devem ser referenciadas pelo menos uma vez e não mais do
que um determinado número de vezes. Este número depende da forma da
superfície descrita pela malha
• Cada vértice deve ser usado por, pelo menos, duas arestas

Em malhas fechadas deve-se verificar se existem lacunas devidas à falta de polígonos.


Em malhas poligonais representando superfícies conectadas deve ser possível ligar um
vértice a um outro vértice qualquer percorrendo as arestas e passando por cada aresta
uma única vez. Em malhas topologicamente planas, deve verificar-se se os polígonos
com mais do que três arestas são planos ou não, isto é, se todos os pontos do polígono
existem no mesmo plano.

Critérios complementares:
• Uma aresta não deve ser usada duas ou mais vezes num mesmo polígono
• Um vértice deve pertencer a, pelo menos, um polígono
• As arestas não podem apresentar comprimento nulo
• Na representação por listas de arestas, a referência entre arestas e polígonos
tem que ser recíproca. Um polígono não pode referenciar uma aresta se esta, por
sua vez, não referenciar o polígono

Verificação de malhas topologicamente planas


Esta verificação só faz sentido se na malha existirem polígonos que não sejam
triângulos, pois um triângulo é uma figura geométrica intrinsecamente plana. A
verificação se todos os vértices de um polígono pertencem ao mesmo plano consiste em
determinar a equação do plano do polígono a partir de três dos vértices do polígono,
seguida da verificação se os restantes vértices do polígono pertencem ao plano.

Se a malha for topologicamente plana, os restantes vértices do polígono deverão existir


no plano cujos coeficientes acabam de ser determinados. Esta condição poderá não se
verificar, quer porque o método de geração da malha é inadequada, caso em que se
deverá optar por outro método, quer por erro numérico.
COR E LUZ
A cor confere realismo às imagens e cenas a visualizar. Quanto maior for a fidelidade da
reprodução da cor maior será o realismo e a naturalidade dos resultados observados.
Para obter uma reprodução fiel da cor deverão ser empregues modelos de cor correctos
e precisos.

A cor desempenha um papel importante na visualização de propriedades associadas aos


objectos visualizados.

A cor permite visualizar o não visível adicionando informação aos objectos


visualizados.

A cor desempenha a função de destacar e chamar a atenção para a informação e dar-lhe


significado.

Caracterização Perceptual da Cor

O modelo de cor de Munsel estabelece como parâmetros a cor (hue), o valor


(luminosidade) e a croma (saturação). É intrinsecamente subjectivo dado que depende
do julgamento pessoal de cada observador ajuizar se duas cores são ou não idênticas.

Em artes visuais empregam-se termos como cor pura, pastel, sombreado e tom. O
sombreado é o resultado da adição de um pigmento negro a um pigmento de cor pura
em que o pigmento negro retira luminosidade ao pigmento puro. Uma cor pastel resulta
da adição simultânea de um pigmento branco a uma cor, diminuindo a saturação. Um
tom resulta da adição simultânea de um pigmento negro e um pigmento branco a uma
cor, reduzindo a saturação e a luminosidade proporcionadas pelo pigmento da cor
original.

Os modelos anteriores são modelos inteiramente baseados na percepção da cor e


incluem um grau de subjectividade que não é desprezável e impede uma definição
precisa da cor e a sua correcta reprodução

Espectro Visível

Cores visíveis e cores espectrais


Cores espectrais são cores a que correspondem comprimentos de onda bem
determinados do espectro visível. A observação de um espectro visível mostra que nele
não se encontram todas as cores visíveis.

As cores não espectrais são devidas à mistura de luzes com diferentes comprimentos ou
gamas de comprimentos de onda.
Fisiologia da visão
O funcionamento do olho humano é semelhante ao funcionamento dos equipamentos de
registo de imagem, pelo menos na recepção e detecção da luz. O olho humano foca a luz
que recebe e fá-la convergir na retina onde se forma uma imagem invertida. Na retina
existem células sensíveis à luz, os bastonetes e os cones, que transformam os fotões que
absorvem em impulsos nervosos.

Existem cones sensíveis à luz na zona do vermelho (cones do tipo ρ), na zona
do verde (cones do tipo γ) e na zona do azul (cones do tipo β). A maior
sensibilidade do olho humano deverá verificar-se na gama de comprimentos
de onda detectada pelos cones γ e ρ, a zona intermédia entre o vermelho e o
verde.

Teoria dos três estímulos


É a diferença entre as respostas dos três tipos de cones que permite interpretar
diferentes comprimentos de onda como correspondendo a cores diferentes.
Esta interpretação é conhecida como teoria dos três estímulos. Esta teoria
postula que qualquer cor (comprimento de onda) do espectro visível pode ser
reproduzida através da adição dos resultados obtidos pelo estímulo dos três
tipos de cones de forma diferente. A cor percepcionada depende unicamente
da relação entre os três estímulos.

Esta teoria tem outra consequência que é a verificação de que da combinação


de cores diferentes pode resultar uma cor única. Chama-se cores metâmeras
ou metâmero a duas cores espectralmente diferentes mas que produzem a
sensação de uma mesma cor.

Outras consequências na percepção da cor


A primeira consequência respeita à capacidade de distinção entre cores puras
próximas.

O olho humano é capaz de discriminar o que corresponde a 128 cores. Uma


análise das respostas combinadas dos três tipos de cones da retina leva a
considerar que deverá existir maior facilidade de discriminar entre cores
sombreadas na zona do amarelo e uma menor facilidade na zona do azul. O
olho humano consegue distinguir um máximo de 23 cores sombreadas na zona
do amarelo e 16 cores sombreadas na zona do azul.

Modelação da Cor

Tendo em conta a teoria dos três estímulos, é imediato que qualquer modelo
de cor deverá possuir três parâmetros. O problema essencial da modelação da
cor está na definição de que grandezas devem ser associadas a cada um dos
três parâmetros.

A luz emitida segundo um comprimento de onda preciso produz uma cor pura
do espectro visível.
Modelo CIE
A incapacidade de modelos baseados na mistura de cores vermelhas, verdes e
azuis poderem representar todas as cores do espectro visível levou a que a CIE
criasse um modelo com três cores primárias denominadas X, Y e Z, que
substituíam as cores primárias vermelha, verde e azul, e que possuíam funções
peso de X, Y e Z, intrinsecamente positivas e tais que passasse a ser possível
representar todas as cores do espectro visível.

Modelo RGB
É um modelo de cor concebido com base nos dispositivos de saída gráfica
com três cores primárias: vermelho, verde e azul.

Este modelo descreve as cores como o resultado da adição das três cores
primárias, cada uma delas com uma intensidade que pode variar entre 0 e 1. A
cor branca corresponde à representação simultânea das três cores primárias,
todas à sua intensidade máxima, e a cor preta à cor que é obtida quando todas
as cores primárias apresentam intensidade mínima.

O modelo RGB está intimamente associado às superfícies emissoras de luz.

O modelo é omisso quanto ao que é uma cor primária pura, ou seja, não define
qual o comprimento de onda a que corresponde cada uma das três cores
primárias.

Modelo CMY
É um modelo de cor baseado nas cores complementares: cião, magenta e
amarelo.

Este modelo tem por base os fenómenos que se verificam quando a luz incide
em superfícies. Estas podem absorver, reflectir ou refractar a luz de forma
desigual consoante o comprimento de onda.

A absorção da luz em determinados comprimentos de onda é a razão pela qual


o modelo CMY é também designado por modelo subtractivo da cor, em
oposição ao modelo RGB que é designado por modelo aditivo da cor.
Quando a intensidade de uma componente CMY é nula, a cor aditiva primária
que a complementa não é absorvida e é totalmente reflectida. Toda a luz
branca incidente é reflectida e a superfície é percepcionada como sendo
branca.

De modo semelhante, quando uma componente CMY tem a intensidade


máxima, a cor aditiva primária complementar é totalmente absorvida. A
superfície será percepcionada como sendo de cor preta, dado que não
reflectirá qualquer luz.

As impressoras a cores empregam o modelo CMY por deposição sobre o


papel de tintas correspondentes às cores primárias complementares. Tal como
no modelo RGB, o modelo CMY também não define os comprimentos de
onda das cores primárias.

Modelo HSV
É mais intuitivo que os modelos RGB e CMY. A sua sigla corresponde às três
variáveis deste modelo: Hue (cor, matiz, cambiante de cor), Saturation
(saturação) e Value (valor). O modelo HSV aproxima-se muito do modelo
intuitivo empregue em artes visuais que emprega os conceitos qualitativos de
matiz, luz e tonalidade.

A saturação de uma cor corresponde à quantidade de cor branca que a cor


apresenta. Uma saturação de 1 significa que a cor é pura, enquanto uma
saturação de 0 significa que a cor é totalmente branca e, neste caso, o valor do
parâmetro H é irrelevante.

O parâmetro V corresponde à intensidade da cor e varia entre 0 (cor negra em


que os valores de H e S são irrelevantes) e 1 (intensidade máxima)

Modelo HLS
É também um modelo muito intuitivo tal como o modelo HSV. A sigla
corresponde aos nomes dos três parâmetros deste modelo: Hue (cor, matiz,
cambiante da cor), Lightness (luminosidade) e Saturation (saturação).
O parâmetro H corresponde ao ângulo em que a cor se encontra, o parâmetro
S tem o mesmo significado que no modelo HSV e o parâmetro L pode variar
entre 0, que corresponde a uma luminosidade nula, e 1 que equivale à
luminosidade máxima.

Modelos YIQ e ICbCr (YUV)


Estes modelos foram criados para permitir as emissões dos sistemas de
televisão a cores fossem compatíveis com os receptores a preto e branco.

Os dois modelos são muito semelhantes, baseando-se ambos na separação dos


sinais de cor RGB em um sinal de luminosidade, ou luminância, e dois sinais
de cromaticidade ou diferença de cor.

Os dois modelos de cor diferem ainda nos padrões de cor empregues na


calibração dos aparelhos receptores de televisão.

O modelo YCbCr, para além da sua aplicação à televisão a ao vídeo, é


também empregue por alguns formatos digitais de imagem, dos quais o mais
importante é o formato JFIF. A vantagem deste modelo é a separação da cor
em componentes de luminância e de crominância.
FORMATOS DE IMAGEM
Mapa de cores
A introdução de mapas de cor permitiu reduzir o tempo de transmissão de
uma imagem. Um mapa de cores é uma estrutura que declara as componentes
RGB das cores empregues pela imagem a que se encontra associada,
atribuindo a cada cor um índice único.

Entrelaçamento
Foi para permitir a observação do conteúdo de uma imagem sem dispor de
todos os seus pixéis que foi desenvolvida a técnica do entrelaçamento a partir
de uma técnica semelhante empregue na transmissão de imagens de televisão.

A técnica básica de transmissão parcial e progressiva de imagens por


entrelaçamento consiste em reordenar as linhas das imagens, organizando-as
em vários grupos. Cada grupo contém parte das linhas da imagem total e, se
uma linha for atribuída a um grupo, essa linha não fará parte de qualquer outro
grupo. A transmissão da imagem grupo a grupo permite que o utilizador
comece a formar uma ideia da imagem após algumas linhas terem sido
transmitidas.

Um outro tipo de entrelaçamento processa pixéis individuais em lugar de


processar linhas. Os pixéis a transmitir em cada passagem são determinados
por um padrão de n x n pixéis de que são feitas tantas cópias quanto as
necessárias para cobrir toda a imagem, estando as cópias justapostas.

Full Color e True Color


A designação High Color corresponde à possibilidade de utilizar 16 bits para
cada cor ou intensidade de tons de cinzento, e permite o emprego de até 65536
cores diferentes numa imagem.

A designação True Color corresponde a equipamentos que empregam 24 bits


para representar uma cor, ou seja, é possível apresentar imagens que
empreguem até 224 cores. Este número de cores é mais do que suficiente para
representar imagens de qualidade fotográfica.

As imagens dos tipos High Color e True Color não empregam mapas de cores.

Compressão
A ocorrência de grupos de pixéis consecutivos da mesma cor (ex.: gráficos)
propicia o emprego de algoritmos de compressão do tipo RLE que substituem
tais grupos por duas unidades de informação: o número de pixéis do grupo e o
índice de cor dos seus pixéis.

Os algoritmos do tipo LZ detectam sequências de pixéis (ex.: imagens) que,


embora não apresentem todos os pixéis da mesma cor, apresentam a mesma
sequência de cores.
Numa imagem digital de qualidade fotográfica o tipo de algoritmos empregue
são os baseados na Transformada Discreta do Co-Seno. Na prática, existem
perdas de carácter numérico que ocorrem durante a realização de operações
aritméticas com representação limitada do número de algarismos dos
operandos e perdas originadas pela eliminação de termos.

Formatos PBM

A definição original deste formato teve em vista permitir a transmissão de


imagens por meio de correio electrónico que, à data da definição, ainda não
permitia a transmissão de ficheiros anexados, binários ou não. A designação
de formato de imagem PBM engloba três formatos:
• PBM (Portable BitMap) – imagens a preto e branco
• PGM (Portable GrayMap) – imagens em tons de cinzento
• PPM (Portable PixMap) – imagens a cores

Vantagens Desvantagens
• Fácil de gerar • Ficheiros de grande tamanho
• Três subtipos para diferentes tipos de • Não permite compressão
imagens

Formatos DIB

Na origem da designação DIB está o facto de que este formato descreve as


cores de uma forma que é independente do processo empregue por cada placa
gráfica e respectivo monitor para apresentar a cor dos pixéis das imagens.

No formato DIB, as imagens são descritas por varrimentos ascendentes das


linhas, sendo os pixéis de cada linha varridos da esquerda para a direita.

O formato DIB permite descrever imagens a cores com 1, 4, 8 ou 24 bits por


pixel, representando assim imagens com 2, 16, 256 ou 224 cores,
respectivamente, empregando um mapa de cores em todos os casos excepto no
último. Este formato permite ainda a compressão opcional do conteúdo de
imagens com 16 ou 256 cores pelo algoritmo RLZ adaptado ao número de bits
por pixel.

Vantagens Desvantagens
• Cores reais • Ficheiros de grande tamanho
• Múltiplos subtipos para diferentes tipos • Compressão limitada a subtipos
de imagens • Compressão inadequada a imagens de
qualidade fotográfica

Formato GIF

Foi inicialmente concebido para a transmissão de imagens através das linhas


de comunicação de muito baixo débito existentes na altura.
O formato permite armazenar ou transmitir imagens com um máximo de 256
cores, definidas sempre por meio de mapas de cores. O conjunto dos índices
que compõem cada imagem está comprimido pelo algoritmo LZW.

O formato é na realidade um protocolo entre uma fonte emissora de imagens e


uma aplicação de destino que realiza a apresentação das imagens.

Um ficheiro, ou canal de dados, no formato GIF pode conter mais do que uma
imagem. Blocos de controlo inseridos entre imagens sucessivas determinam o
tempo durante o qual cada imagem persistirá na unidade gráfica de saída,
permitindo assim a apresentação sequenciada de várias imagens.

Vantagens Desvantagens
• Canal de dados • Limite de 256 cores
• GIFs animados • Formato e algoritmo de compressão
• Ficheiros de pequeno tamanho proprietários
• Impróprio para imagens de qualidade
fotográfica
• Transparência de uma única cor

Formato PNG

O formato PNG surgiu como resposta às limitações técnicas e às restrições


legais derivadas dos direitos de propriedade do formato GIF. A definição do
novo formato PNG reteve algumas das características mais vantajosas do
formato GIF.

Vantagens Desvantagens
• Suporta todos os tipos de imagem • Algoritmo de compressão impróprio
• Algoritmo de compressão do domínio para imagens com qualidade fotográfica
público
• Filtragem opcional das linhas melhora a
qualidade
• Transparência por canal alfa
• Permite sequências de imagens
• Bytes armazenados segundo convenção
neutra
• Guarda a correcção gama (opcional)

Formato JFIF (JPEG)

Define uma família de algoritmos de compressão e descompressão, com e sem


perda, para imagens de qualidade fotográfica, também designadas por
imagens de tons contínuos.
É um formato de imagens simples e que, embora apresente limitações, é
relativamente fácil de implementar e permite imagens a cores reais. Um dos
factores que mais contribuíram para esta aceitação foi a expansão da WWW
cujos utilizadores necessitavam poder transmitir imagens com mais cores do
que o máximo de 256 cores permitido pelo formato GIF, mas de comprimento
reduzido para diminuir o respectivo tempo de carregamento.

O formato JFIF não utiliza o modelo de cor RGB, mas o modelo YCbCr com
quantização da cor que, logo à partida, reduz o conteúdo da imagem a metade
do seu tamanho original, mas acarreta perda de informação.

A compressão JPEG empregue por este formato utiliza algoritmos de


compressão e descompressão do tipo da transformada discreta do co-seno.

Vantagens Desvantagens
• Recomendado para imagens de • Há sempre perda (mas a visão não
qualidade fotográfica detecta)
• Algoritmo de compressão normalizados • Impróprio para imagens com variações
súbitas de cor
RASTERIZAÇÃO
O objectivo da rasterização é determinar quais as quadrículas que
representarão as primitivas gráficas

A rasterização de primitivas gráficas é uma operação que é executada milhões


de vezes e, portanto, faz todo o sentido que os algoritmos desenvolvidos, além
de específicos, devam ser eficientes para que o desenho das primitivas seja o
mais rápido possível.

Rasterização de Segmentos de Rectas

A rasterização de segmentos de recta consiste em, num dispositivo de


quadrícula, dados os dois pixéis extremos de um segmento de recta,
determinar que pixéis localizados entre eles devem ser seleccionados para
compor visualmente o segmento.

Algoritmo Imediato
Tomando como base a equação da recta

Calculam-se os coeficientes dos extremos do segmento P1(x1,y1) e P2(x2,y2)

Para x1 ≤ x ≤ x2 calcula-se a ordenada usando a equação da recta


arredondando o resultado para as coordenadas do pixel a desenhar

O custo computacional do cálculo do valor de y para cada valor de x


corresponde à realização de três operações de vírgula flutuante e à operação
de truncatura de um valor real para valor inteiro.

Algoritmo Incremental Básico


Considera-se o valor de y para dois valores consecutivos de x que diferem
entre si de uma unidade

O valor de y para xi+1 é

Para calcular o valor de y para um novo pixel cujo valor da coordenada x dista
uma unidade do valor anterior, basta adicionar o declive da recta ao anterior
valor de y. É ainda necessário proceder ao arredondamento matemático do
valor calculado.
O número de operações de vírgula flutuante a realizar reduz-se a duas adições
e uma truncatura. Como a multiplicação é uma operação mais cara que uma
adição em termos computacionais é de esperar um aumento significativo do
desempenho.

Este algoritmo apresenta um problema de acumulação de erros devido ao


número limitado de algarismos significativos.

Algoritmo de Bresenham
O algoritmo de Bresenham realiza a rasterização de segmentos de recta
empregando apenas operações de aritmética de inteiros e, portanto permite um
maior desempenho. O algoritmo baseia-se no critério do ponto médio.

O algoritmo pode ser apresentado da seguinte forma:


• Calcular
dx = x2 – x1
dy = y2 – y1
d = 2dy – dx
incE = 2dy
incNE = 2(dy - dx)
• Inicializar x = x1 e y = y1 e marcar o pixel com estas coordenadas
• Repetir os passos seguintes enquanto x < x2
• Se d ≤ 0, incrementar d de incE, caso contrário incrementar d de incE
e incrementar y de uma unidade
• Incrementar x de uma unidade e marcar o pixel com as coordenadas x
e y.

Rasterização de Circunferências

A rasterização de circunferências emprega a propriedade de simetria que as


circunferências apresentam.

Algoritmo completo para a rasterização de circunferências:


• Calcular
d=1–R
deltaE = 3
deltaSE = -2R + 5
• Inicializar x = 0 e y = R e marcar os 4 pixéis da circunferência
correspondentes
• Repetir os passos 4 a 5 enquanto y > x
• Se d < 0
incrementar d de deltaE, deltaE de 2 e deltaSE de 2
caso contrário
incrementar d de deltaSE, deltaE de 2, deltaSE de 4 e
decrementar y de uma unidade
• Incrementar x de uma unidade e marcar os 8 pixéis da circunferência
correspondentes às coordenadas x e y

Preenchimento de Polígonos

A operação de preenchimento de polígonos tem por objectivo atribuir a cor do


polígono aos pixéis pertencentes ao polígono.

Algoritmo básico de preenchimento de polígonos


• Traçar sucessivas linhas de varrimento horizontais (scan lines)
• Calcular as intersecções entre scan line e arestas arredondando os
valores para o interior do polígono
• Ordenar os pontos de intersecção por abcissa crescente
(x1 < x2 < x3 < x4)
• Preencher cadeias de pixéis (“spans”) entre pares de pontos
delimitando as regiões interiores ao polígono
(x1 a x2: in x2 a x3: out x3 a x4: in)

A determinação das intersecções de uma linha de varrimento com os lados de


um polígono apresenta dois casos particulares:

Duplicação de intersecções
Ocorre quando a linha de varrimento intersecta um vértice de um polígono
onde concorrem sempre dois lados do polígono.

A solução para este caso passa por eliminar um dos lados do polígono. Se, por
convenção, não se considerar o lado do polígono que num dado vértice atinge
o valor máximo da sua ordenada, elimina-se aquela duplicação.

Esta solução apresenta apenas um pequeno inconveniente que consiste em


que, no vértice superior de um polígono, já não existam quaisquer lados a
serem intersectados pela linha de varrimento e, portanto, o pixel
correspondente ao vértice superior não será desenhado.

Lados horizontais
A intersecção de um lado horizontal com uma linha de varrimento, também
horizontal, resulta não num ponto, mas no próprio lado.

Porém, cada um dos vértices de um lado horizontal é também o vértice de um


outro lado do polígono e, portanto, existirá um lado à esquerda e outro à
direita do lado horizontal. Eliminando este, aqueles dois lados definirão dois
pontos de intersecção que criarão um span coincidente com o lado horizontal
eliminado e assim ficará resolvido o problema.
Lados, Lados Activos e Tabelas de Lados
Diz-se que um lado se encontra activo quando está a ser intersectado pela
linha de varrimento. É apenas sobre os lados activos num dado momento que
devem ser calculadas as suas intersecções com a linha de varrimento corrente,
pois é inútil tentar calcular intersecções da linha de varrimento com lados que
não se encontrem activos.

Constrói-se uma lista de lados que, inicialmente, contém todos os lados do


polígono, excepto os lados horizontais, e uma lista de lados activos que se
encontra vazia. Quando um lado se torna activo, esse lado é retirado da lista
de lados e colocado na lista de lados activos, passando a pertencer ao conjunto
de lados com os quais são calculadas as intersecções. Finalmente, quando a
ordenada da linha de varrimento atinge o valor do ymax do lado, o lado deve ser
retirado da lista de lados activos e eliminado pois não será mais intersectado
por qualquer linha de varrimento.

A estrutura de dados de cada lado deve conter os valores de ymax, x e 1/m, em


que, inicialmente, é atribuído a x o valor de x(ymin). Esta estrutura não
necessita de quaisquer outros valores depois de calculado o valor de 1/m. É
usual incluir nesta estrutura a referência ao lado que se lhe segue na lista.

Exemplo:
Aliasing e Antialiasing

A discretização de uma grandeza contínua implica perda de informação. Por


vezes a informação perdida não é significativa e é possível reconstruir quase
fielmente a grandeza original mas, a partir de uma certa perda, os valores
discretos medidos são insuficientes para que se possa proceder à reconstrução
da grandeza original. Quando tal sucede, a reconstrução produz informação
que pouco ou nada tem a ver com a informação original. Este fenómeno tem o
nome de aliasing.

Existem várias técnicas designadas genericamente por técnicas de


antialiasing para resolver de modo satisfatório, mas nunca total, os problemas
criados pelo fenómeno de aliasing nas suas várias manifestações. Estas
técnicas baseiam-se na filtragem da informação que pode ser realizada tanto
no espaço da imagem como no espaço dos objectos. A filtragem realizada no
espaço dos objectos designa-se por pré-filtragem, enquanto a realizada a partir
da informação que existe no espaço da imagem é designada por pós-filtragem.
REMOÇÃO DE SUPERFÍCIES OCULTAS
Estratégias Algorítmicas

Precisão Imagem
• Para cada pixel da imagem é necessário determinar o objecto mais próximo
visível através do pixel e desenhar o pixel com a cor correcta.
• Precisão dependente da resolução do dispositivo de visualização;
visibilidade determinada em cada pixel
• Algoritmos orientados para dispositivos “raster”
• Susceptíveis ao fenómeno de aliasing
• Para n objectos e p pixéis a complexidade algorítmica é de n x p
• Operações elementares e de baixa carga computacional

Precisão Objecto
• Para cada objecto da cena é necessário determinar as partes visíveis do
objecto e desenhar essas partes com a cor correcta
• Precisão finita; resolução da visibilidade ao nível de porções dos objectos
• Algoritmos inicialmente orientados para dispositivos vectoriais
• Para n objectos presentes na cena tem-se uma carga computacional
proporcional a n2
• As operações individuais são tipicamente complexas e de elevada carga
computacional

Faces Traseiras

Partindo da hipótese que se tem um objecto que é um poliedro sólido (faces


poligonais envolvem o volume) e o interior não é exposto pelo recorte não é
possível saber se a face em questão é traseira ou não.

A solução para este problema consiste em determinar o produto interno entre


as normais às faces e o vector de visualização com origem no centro da
projecção e terminando em qualquer ponto do polígono. Se o resultado do
produto interno for
< 0 Polígono visível
= 0 Arestas visíveis
> 0 Polígono invisível (back-face)
Este cálculo é efectuado no sistema de coordenadas de visualização

Em polígonos convexos a remoção de superfícies ocultas fica completa com a


eliminação de back-faces

Em poliedros côncavos algumas front-faces podem estar totalmente ou


parcialmente ocultas
Algoritmo Z-Buffer

Este algoritmo baseia-se na estratégia de precisão de imagem.

Tem como requisito o Frame-Buffer com profundidade em Z. Não necessita


de ordenação de polígonos nem de cálculos de intersecções.

Algoritmo:
Inicializa o Zbuffer com a profundidade máxima e Frame-Buffer com
a cor de fundo
Para cada polígono
Para cada ponto do polígono:
pz = valor de z (x, y)
se pz < ReadZ (x, y)
WriteZ (x, y, pz)
WritePixel (x, y, cor em (x, y))

Vantagens Desvantagens
• Independente do número de polígonos • Melhora o desempenho se a ordenação
• Aplicável a qualquer forma for feita em Z
• Realizado em hardware • Problemas de aliasing

AlgoritmoDepth-Sort

Este algoritmo baseia-se em desenhar os polígonos na ordem decrescente da


distância ao observador (referencial de visualização orientado mão direita)

Algoritmo:
• Ordenar todos os polígonos constituintes da cena por ordem
crescente da sua menor coordenada Z (ou ordem decrescente da sua
maior coordenada Z num referencial mão esquerda)
• Resolver situações ambíguas, nalguns casos em que os intervalos de
ocupação dos polígonos segundo ZZ se sobrepõem. Por vezes, a
resolução dessas ambiguidades passa pela fragmentação dos polígonos
• Rasterizar os polígonos (originais e resultantes da fragmentação) por
ordem crescente da sua menor coordenada (desenhar os polígonos por
ordem decrescente de profundidade)

Algoritmo do Pintor
Consiste numa versão simplificada do algoritmo Depth-Sort onde os
polígonos pertencem a planos com Z constante

Resolução de ambiguidades
Antes de rasterizar o primeiro polígono (P) da lista, ou seja, o mais afastado do
observador, compará-lo com todos os polígonos (Q) cujos intervalos de ocupação
segundo z sobreponham o intervalo z do primeiro.

O processo de comparação tem por objectivo provar que P não obstrui a visibilidade de
Q. Basta que uma das 5 condições seguintes se verifique:
1) Os intervalos de ocupação de P e Q, segundo XX , não se sobrepõem.
2) Os intervalos de ocupação de P e Q, segundo YY , não se sobrepõem.
3) P encontra-se totalmente contido no semi-espaço definido pelo plano de Q, oposto
aquele em que se encontra o ponto de observação da cena.
4) Q encontra-se totalmente contido no mesmo semi-espaço, definido pelo plano de P,
em que se encontra o ponto de observação da cena.
5) As projecções de P e Q no plano (x, y) não se sobrepõem.

Se P passa no teste de não obstrução com todos os polígonos Q pode ser rasterizado e o
próximo polígono da lista passa a ser o novo polígono P.

Se o teste falha com um dos polígonos Q, deve fragmentar-se P segundo um plano de


corte coplanar com Q (ou vice-versa), descartar o polígono original, inserir na lista os
fragmentos resultantes por ordem crescente de Zmin e repetir o algoritmo.

Algoritmo Scan-Line

Coerência de linha de varrimento e de aresta

Algoritmo:
• Construção da tabela de arestas (ET) para todas as arestas não horizontais de
todos os polígonos, projectadas no plano de visualização, ordenadas com base
na menor coordenada Y e em cada tabela no declive, contendo:
- coordenada X do vértice com menor Y
- coordenada Y do outro vértice
- incremento em X (dx é o inverso do declive)
- identificação do polígono
• Polígonos organizados em tabela de polígonos (PT) contendo:
- coeficiente equação do plano
- cor do polígono
- etiqueta de entrada/saída (inicialmente a falso)
• Manipulação da tabela de arestas activas (AET)

Se os polígonos não se interpenetram


• Alguns cálculos de profundidade podem ser evitados.
• Com base na coerência de profundidade se estão presentes na AET de uma
linha de varrimento os mesmos lados estavam na AET da linha anterior, e pela
mesma ordem, então as relações de profundidade entre polígonos permanecem
inalteradas em todos os intervalos da linha (spans).
• Para polígonos interpenetrantes deve calcular-se a intersecção entre
polígonos, criar um falso lado, e com ele fragmentar um dos polígonos
originais em dois novos polígonos não penetrantes.
• O plano de fundo da cena pode ser tratado de uma das seguintes formas:
- inicializar o “frame-buffer” com a cor de fundo
- modificar o algoritmo para atribuir cor de fundo a todos os pixéis
tratados nas situações em que todos os polígonos estão “out”
- introduzir na cena um polígono de grandes dimensões, paralelo ao
plano de projecção e mais afastado do observador que qualquer outro
polígono (atribuir cor e sombreamento desejados).
RECORTE
Neste capítulo pretende-se identificar quais os objectos que se encontram
totalmente dentro do volume canónico, os quais são trivialmente aceites, e
quais os que se encontram parcialmente dentro do volume, pelo que têm que
ser recortados pelas faces da fronteira do volume canónico.

O objectivo do recorte será eliminar as partes dos objectos da cena que se


encontrem fora do volume canónico

Recorte de Linhas

O recorte de segmentos de recta consiste em identificar os valores das


coordenadas X, Y e Z que correspondem aos pontos de intersecção com cada
uma das faces do volume canónico, caso esses pontos existam.

Algoritmo da Força Bruta


Efectua o cálculo de recorte de um segmento de recta através do cálculo da
sua intersecção com cada uma das arestas que limitam o rectângulo de recorte.

Algoritmo:
• Testar extremos do segmento com rectângulos de recorte
• Tratar os casos triviais de inclusão total
• Casos não triviais: usar equação paramétrica da recta

• Resolver equações simultâneas para segmento de recta (taresta) e os 4


lados do rectângulo (tseg). Existe intersecção se:

Algoritmo de Cohen-Sutherland
O algoritmo inicia-se com o cálculo do sub espaço em que se encontra cada
um dos vértices do segmento de recta a recortar. Para simplificar a
identificação dos sub espaços em que se encontram os vértices recorre-se a
uma codificação dos 9 sub espaços usando uma codificação com 4 bits
(outcodes), em que cada um dos bits define a posição do sub espaço
relativamente a uma das arestas do polígono de recorte.
Considera-se que OC0 é o código do sub espaço dentro do qual se encontra o
primeiro vértice do segmento de recta a recortar e que OC1 é o código do sub
espaço dentro do qual se encontra o segundo vértice do segmento.

Nas situações em que é necessário subdividir o segmento de recta tem que se


calcular a intersecção com a recta sobre a qual assenta uma das arestas do
rectângulo de recorte. O algoritmo de Cohen-Sutherland não garante que o
cálculo de intersecções seja efectuado só quando necessário.

Este algoritmo é eficiente nas situações em que a maioria dos segmentos de


recta são trivialmente aceites ou trivialmente rejeitados.

Sempre que o rectângulo de recorte é muito pequeno comparado com a cena a


maioria dos segmentos de recta são trivialmente rejeitados. Sempre que o
rectângulo é muito grande a maioria dos objectos são trivialmente aceites.

O algoritmo é facilmente estendido para 3D, bastando para tal identificar 27


sub espaços e utilizar códigos compostos por 6 bits.

Algoritmo Paramétrico de Cyrus-Beck


Algoritmo que permite o recorte de um segmento de recta por qualquer
polígono convexo, em 2D, ou de um segmento de recta em 3D por qualquer
poliedro convexo. Tal como o nome indica, este algoritmo baseia-se na
equação paramétrica da recta

Este algoritmo aplica-se sucessivamente a cada uma das arestas do polígono


convexo.

É ainda necessário identificar se o primeiro vértice do segmento de recta está


no exterior e o segundo no interior, situação em que a intersecção é definida
como Potencialmente de Entrada (PE), ou em que a intersecção é definida
como Potencialmente de Saída (PS).

Identifica-se a intersecção do tipo PE que corresponde ao maior t e a


intersecção do tipo PS que corresponde ao menor t e comparam-se os dois
valores de t. Se o valor de t da intersecção do tipo PE for superior ao valor de t
da intersecção do tipo PS, então todo o segmento de recta pode ser rejeitado.
Se o valor de t da intersecção do tipo PE for inferior ao valor de t na
intersecção do tipo PS, então usam-se os dois valores para obter as
coordenadas dos vértices do segmento de recta recortado.
Recorte de Polígonos

O recorte de polígonos implica a identificação do lugar geométrico dos pontos


que simultaneamente pertencem ao polígono a recortar e ao polígono de
recorte.

Algoritmo de Sutherland-Hodgman
Este algoritmo permite o recorte de qualquer tipo de polígono por um
polígono convexo de recorte. Baseia-se na aproximação de “dividir para
conquistar” segundo a qual se obtém um polígono recortado por recorte
sucessivamente efectuado por cada uma das arestas de suporte de cada uma
das arestas do polígono de recorte.

Dada a descrição de um polígono através de uma lista de vértices, o algoritmo


consiste em, ao recortar o polígono contra cada uma das rectas sobre a qual
assenta uma aresta do polígono de recorte, obter uma nova lista de vértices, ou
mais do que uma lista se houver lugar ao aparecimento de polígonos
degenerados que são separados. Cada uma destas listas descreve um dos
polígonos recortados contra cada um desses limites.

Em primeiro lugar é necessário identificar se o 1º vértice se encontra dentro


ou fora do polígono de recorte. Este vértice é colocado na lista de vértices do
polígono já recortado se o vértice se encontrar dentro do polígono de recorte,
caso contrário, a lista permanecerá vazia.

• Transição Interior-Interior: Quando ambos os vértices estão


contidos no semi-plano interior, o 2º vértice da aresta é adicionado à
lista de vértices do polígono recortado
• Transição Interior-Exterior: Quando ocorre uma transição do
semi-espaço interior para o exterior é necessário calcular o vértice de
intersecção o qual é adicionado à lista de vértices do polígono
recortado
• Transição Exterior-Exterior: Quando ambos os vértices estão
contidos no semi-plano exterior nada é adicionado à lista de vértices do
polígono recortado
• Transição Exterior-Interior: Quando ocorre uma transição do
semi-espaço exterior para o interior é necessário calcular o vértice de
intersecção o qual é adicionado à lista de vértices do polígono
recortado, assim como o 2º vértice da aresta

Você também pode gostar