Representação de Objetos em 3D
Sumário
● Hoje veremos algumas técnicas para
modelar objetos em 3D. Dentre elas destacaremos:
● Malhas poligonais
● Superfícies Quádricas
● Modelagem por Varredura (Sweep)
● Método CSG (Constructive Solid Geometry) ● Octrees
Malhas Poligonais
● A forma mais simples e rápida de
representarmos objetos em 3D é através de superfícies (ou malhas) poligonais
● Uma malha poligonal é uma coleção de faces
(onde cada uma é um conjunto de vértices) que definem um objetivo tridimensional
● As faces geralmente são constituídas por
Malhas Poligonais
● Vários métodos de representação 3D geram,
ao final, malhas poligonais
● Existem vários padrões de armazenamento
de malhas poligonais em arquivos. Alguns exemplos de formato são OBJ, PLY, VRML,
BLEND etc.
● O formato de arquivo utilizado no tutorial do Nate
Mal
has
Po
lig
on
ai
s
- E
xemp
lo
s
Superfícies Quádricas
● Outra classe de objetos 3D são as
superfícies quádricas. Como o nome sugere, são superfícies 3D descritas através de
equações quádricas
● Algumas superfícies quádricas:
● Esferas ● Elipsóides ● Toroides
Modelagem por varredura (Sweep)
● Modelagem por varredura são úteis na
construção de objetos tridimensionais que
possuam simetrias translacionais, rotacionais ou outras
● Objetos são especificados com formas
bidimensionais e esta forma é “movida” em uma determinada direção para formar o
Mo
del
ag
em
po
r V
arred
ura
Tran
sl
aci
on
al
e
Ro
taci
on
al
Método CSG
(Constructive Solid Geometry)
● Constructive Solid Geometry (CSG) pode ser
utilizado na modelagem de sólidos através da utilização de dois outros objetos 3D e operações de conjunto
● Operações válidas incluem
● União
Méto
do
CS
G
Di feren
ça
In terseção
Método CSG
● CSG usualmente começa com um conjunto
pequeno de primitivas como blocos, pirâmides, esferas e cones
● Dois objetos são inicialmente utilizados para
criar um novo objeto através de operações de conjunto
● Este objeto pode então ser combinado com
outros objetos (ou primitivas) para criar novos objetos
● Este processo continua até que a modelagem
Método CSG
Objeto CSG
oper1
obj1 obj2
oper3
obj4 oper2
obj2 obj3
● Modelos CSG são usualmente representados
Octrees
● Octrees são árvores hierárquicas utilizadas
para representar objetos sólidos
● Octrees são particularmente
úteis em aplicações que necessitam visualizar
objetos cortados – por exemplo, aplicações médicas
● São tipicamente utilizadas quando a
Octrees & Quadtrees
● Octrees são baseadas no esquema de
representação bidimensional das quadtrees
● Quadtrees dividem uma região quadrada do
espaço em 4 regiões iguais até que áreas homogêneas sejam encontradas
● Estas regiões podem então ser organizadas
Octrees
● A utilização de Quadtrees possibilita uma
considerável economia de armazenamento quando existem áreas com cores
homogêneas em imagens
● Octrees usam a mesma abordagem, mas
dividem regiões cúbicas em octantes
● Cada região em uma octree é chamada de
Octrees
● Divisões são feitas até que áreas
homogêneas sejam encontradas
● Em 3D, regiões podem ser consideradas
homogêneas em termos de sua cor, tipo de material, densidade ou qualquer outra
caraterística física
● Voxels podem inclusive ser considerados
Octrees
Regiões do espaço tridimensional
O
ctree
- E
xemp
lo
Outras formas de modelagem
● Todas as técnicas de modelagem vistas até
aqui usam métodos da geometria Euclideana
● Objetos são descritos através de equações
● Isto funciona bem para objetos manufaturados ● Mas como fazer objetos naturais que possuem
características irregulares ou fragmentadas?
Geometria Fractal e
Modelagem Procedural
●
Objetos naturais podem ser descritos de
forma realista através de métodos de
geometria fractal
●
Métodos fractais usam procedimentos ao
invés de equações para modelar objetos.
Chamamos isso de
Modelagem
Geometria Fractal e
Modelagem Procedural
●
A principal característica de qualquer
modelo procedural é que os modelos não
são baseados em dados, mas sim num
conjunto de regras implementados como
procedimentos
●
Este processo permite que modelos sejam
criados durante a execução de um
Fractais
● Um objeto fractal possui duas características
básicas:
● Detalhes infinitos em cada ponto
● Um certa autossimilaridade entre partes do objeto
Tipos de Fractais
● Fractais podem ser classificados em 3 grupos
● Fractais com autossimilaridade
● Eles tem partes que são versões em menor escala do
objeto como um todo
● Usados para modelar árvores, folhas, arbustos etc
● Fractais com autoafinidade
● Possui partes formadas por diferentes parâmetros de
escala em cada dimensão
● Tipicamente usados para modelar terrenos, nuvens etc
● Conjuntos fractais invariantes
Geração de Fractais
● Um objeto fractal é gerado através da
repetida aplicação de uma transformação específica em uma região do espaço
● Se
P
0 = (x
0, y
0, z
0) for a posição inicial, cadainteração de uma transformação F gerará sucessivos níveis de detalhe com o cálculo:
P1 = F(P0), P2 = F(P1), P3 = F(P2),...
● Em geral a transformação é aplicada a um
conjunto específico de pontos ou um
Geração de Fractais
● Apesar de, por definição, objetos fractais
possuírem um nível infinito de detalhes, as transformações serão aplicadas um número finito de vezes (objetos serão representados em dispositivos discretos)
● Uma representação procedural aproximará
uma representação real na medida que o número de interações é aumentado
● A quantidade de detalhes é limitada pela
Exemp
lo
: Cu
rva
de
Ko
ch
Geradores de Fractais
● Veja nos links abaixo alguns exemplos de
geradores de fractais:
● Triângulo de Sierpinski
Algoritmo do deslocamento
aleatório do ponto médio
● Um dos usos mais bem sucedidos das
técnicas de fractais é na geração de paisagens
● Desta técnicas, um método eficiente para
geração de paisagens é o método RMD
Algoritmo RMD
● Este algoritmo permite
simular formas
irregulares, sendo
utilizado para modelar terrenos em geral
● A rugosidade do
Algoritmo RMD
● É possível estender o algoritmo RMD para
Algoritmo RMD
Veja um exemplo aqui:
Saiba mais!
● Computação Gráfica - Teoria e
Prática.
● Capítulo 3 e 4
Nestes capítulos você encontrará seções sobre superfícies de
revolução (cap. 3) e as demais
Saiba mais!
● Computer Graphics, C Version
● Capítulo 10
Neste capítulo há um amplo
detalhamento dos métodos vistos nesta aula, além de inúmeras
Saiba mais!
● Learn OpenGL
● Capítulos 19 a 21
Resumo
● Hoje vimos algumas técnicas para
representação de objetos 3D
● Vimos técnicas simples como modelagem por
Pratica
● Abra o projeto Obj Viewer ● Neste projeto, malhas
Utilizando a técnica de modelagem por varredura utilizando um círculo (baixe o código circle.cpp)
como base, implemente um algoritmo que seja capaz de gerar as duas imagens abaixo. As linhas que ligam os circulos devem ser retas.
A interação com os objetos deverá ser feita através de mouse (utilize o projeto Obj Viewer por exemplo).