CHAPITRE 4 MATÉRIAUX POREUX A GRADIENT DE PROPRIÉTÉS
4.4 Maximisation de l’absorption en incidence normale et en fond rigide
4.4.2 Optimisation de micro-treillis idéalisé
A Bounding Volume Hierarchy, ou BVH, é uma estrutura de da- dos em forma de árvore para objetos geométricos introduzida pelo traba- lho (RUBIN; WHITTED, 1980). Geralmente os objetos geométricos são colocados dentro de volumes que apresentam cálculos de interseção efi- cientes, como ortoedros (também conhecidos como caixas) ou esferas (KAY; KAJIYA, 1986). Esses volumes formam os nós-folhas da árvore. Outras caixas ou esferas podem agrupar uma ou mais folhas, assim cri- ando um volume maior. Esses volumes podem ser agrupados por outros volumes maiores, recursivamente. O nó raiz será um volume que engloba todos os outros volumes.
Um exemplo dessa organização pode ser visto na Figura 3.8. O nó A é o nó raiz, que é um volume que engloba todos os outros nós. Os nós B e C são nós filhos do nó A. Esses nós agrupam outros volumes que estão completamente contidos neles. Os nós folhas armazenam os objetos geométricos da cena. Os volumes de cada nó da BVH estão re- presentados por caixas, que podem ser usadas para otimizar a travessia do raio na cena. O teste de interseção entre raio e caixa é eficiente, as- sim, por exemplo, um raio pode testar interseção com a caixa do nó C, e caso não haja interseção se elimina a necessidade de testar interseção com os objetos contidos em C (que podem conter um teste de interseção caro), pois é garantido que o volume do nó pai será sempre maior que de seus filhos em uma BVH.
Figura 3.8: Exemplo de Bounding Volume Hierarchy A
B C
A
B C
Fonte: Schreiberx. Disponível em: <http://en.wikipedia.org/wiki/ Bounding_volume_hierarchy>. Acesso em: 20/05/2015.
Cada objeto geométrico tem apenas uma instância na hierarquia, permitindo assim melhor previsibilidade no cálculo de consumo de memó- ria e garante que apenas um teste de interseção será feito durante a tra- vessia do raio. Entretanto, regiões de nós distintos em uma BVH podem compartilhar um mesmo espaço, e isso pode resultar em uma travessia ineficiente com interseção de primitivas na ordem errada ou travessia do mesmo espaço diversas vezes (WALD, 2004).
A BVH também pode usar SAH para melhores divisões, assim como a KD-tree. O número de divisões por nó pode variar, podendo ter apenas duas, um máximo de quatro, ou um número arbitrário de divisões (BIKKER, 2012).
Uma variação da BVH é a BIH, Bounding Interval Hierarchy, que é uma estrutura de dados proposta por Wächter e Keller (2006). Ao invés de armazenar caixas delimitadoras para cada nó, ela armazena apenas dois planos paralelos a um dos eixos cartesianos. Esses planos repre- sentam intervalos onde primitivas estão presentes. A principal vantagem do método é um custo de memória previsível enquanto mantem uma tra- vessia tão eficiente quanto a da KD-tree.
3.5 Discussão do capítulo
As técnicas de ray tracing são flexíveis e capazes de renderizar qualquer representação de superfícies que suporte teste de interseção contra um raio. Já a rasterização com a OpenGL e DirectX geralmente são usadas para visualizar B-Reps simples, planares, e constituídas de triângulos.
Rasterização é o método mais usado para visualizações intera- tivas para cenas simples. Entretanto, ray casting apresenta uma comple- xidade diferente da rasterização, e alguns trabalhos na literatura indicam que ray casting oferece melhor escalabilidade referente a complexidade do modelo 3D, porém ambas as técnicas são usadas atualmente para vi- sualização interativa de modelos complexos. Para alcançar complexidade
sub-linear, a rasterização faz a redução do número de triângulos antes do processo de renderização, enquanto ray casting oferece complexidade sub-linear durante a renderização caso seja usada com estruturas de da- dos espaciais. Assim, a etapa de pré-processamento da rasterização ge- ralmente é constituída de simplificação da malha de triângulos e/ou de técnicas para remoção de triângulos não visíveis. Já o pré-processamento usado em ray casting geralmente é a construção da estrutura de dados espacial.
Entre as técnicas de ray tracing há a troca de simplicidade e desempenho pela qualidade da imagem. Por exemplo, ray casting lança apenas um raio por pixel, e sem nenhuma recursão, porém isso faz com que essa seja a técnica com pior qualidade da imagem final. WRT tam- bém lança um raio por pixel, porém o algoritmo recursivo requer um nú- mero maior de testes de interseção. Com isso o custo computacional au- menta, mas efeitos como reflexo, refração e sombras são possíveis. Já o ray tracing distribuído e o pathtracing lançam vários raios por pixel, as- sim aumentando ainda mais o custo computacional, porém aumentando a qualidade da imagem final.
Além das diferentes técnicas de ray tracing, diferentes estruturas de dados podem ser usadas para acelerar a travessia dos raios. Grades são adequadas para cenas interativas pois elas oferecem acesso direto a superfícies e rápida construção. Já a Octree, KD-tree e BVH são técni- cas que ocupam menos memória, apresentam algoritmos de travessia de raios mais eficiente que grades, porém a construção dessas árvores têm um custo computacional elevado.
Neste trabalho a visualização interativa dos modelos complexos gerados pela simulação de usinagem é feita usando ray casting. O uso de ray casting ao invés da rasterização se dá por causa da sua simplicidade, pois ela permite a visualização direta de campos de distância e a etapa de pré-processamento é apenas a construção da estrutura de dados acele- radora, diferente da rasterização que precisa de algoritmos complexos de simplificação de malha e remoção de triângulos não visíveis. Além disso,
a principal vantagem da rasterização é sua aceleração em hardware, po- rém para fazer uso dela é necessário a sincronização do modelo geomé- trico com a GPU. Essa sincronização aumenta a complexidade pois ela pode ser uma etapa demorada. Além disso, a GPU apresenta uma res- trição maior na quantidade de memória disponível para o modelo 3D, e assim aumenta a complexidade da implementação.
Campos de distância é a representação para os modelos 3D usa- dos durante a usinagem, como discutido na Seção 2.8. A sua visualização direta com ray casting é possível pois existe o teste de interseção en- tre um raio e essa representação, como visto na Seção 2.6.6. Por causa disso, os modelos 3D não precisam ser transformados em uma malha po- ligonal antes de sua visualização, que é uma etapa custosa e necessária caso tenha sido usada a rasterização.