6
Técnicas de Programação em GPU Aplicadas à Visualização de Modelos com Múltiplas Texturas Vitor de Andrade Escola Politécnica - UFRJ Rio de Janeiro - Brasil Email: [email protected] Ricardo Marroquim COPPE - UFRJ Rio de Janeiro - Brasil Email: [email protected] Figura 1. 4 fotos (do total de 41) em alta resolução de um instrumento científico (esquerda), projetadas em um modelo não texturizado (meio), obtendo um modelo final (direita) Resumo—Nas últimas décadas surgiram novas técnicas de digitalização através da utilização de scanners 3D. Esta tecnologia permite obter representações virtuais de objetos reais com cada vez mais fidelidade e facilidade. Porém, as técnicas para atribuição de cores a esses modelos (texturas ou BRDFs) ainda apresentam uma série de desafios. Este artigo propõe um sistema de gerenciamento e visualização de objetos contendo várias tex- turas para auxiliar este processo, focando em aplicações na área de bens culturais. Este trabalho envolve conceitos de renderização em multipassadas, off-screen rendering, programação em GPU, shaders e OpenGL 4. Keywords-Renderização em multipassadas; Off-screen Ren- dering; Programação em GPU; Digitalização Tridimensional; Computação Gráfica Abstract—In the last decades new techniques of digitalization using 3D scanners have emerged. This technology makes it possible to obtain virtual representations of real objects with less effort and more fidelity. However, the techniques for attributing color to these models (textures or BRDFs) still present a series of challenges. In order to aid this process, this paper proposes a visualization and management system for objects containing many textures, focusing in the cultural heritage area. This work involves concepts of multipass rendering, off-screen rendering, GPU programming, shaders and OpenGL 4. Keywords-Multipass Rendering; Off-screen Rendering; GPU Programming; Three-Dimensional Digitalization; Computer Graphics I. I NTRODUÇÃO É de grande importância que existam métodos de se registrar elementos culturais ao longo da história de um país. Livros Figura 2. A luneta meridiana Bamberg podem guardar referências aos costumes e o cotidiano da população através dos tempos. Quadros e pinturas armazenam informações sobre as tendências artísticas e muitas vezes sobre o passado. Os museus são locais que podem contar de forma única a história de um país ao armazenar peças que foram importantes para a formação, seja cultural, cien- tífica ou econômica da nação. Neste sentido, o avanço da tecnologia proporciona uma nova maneira de se interagir com o patrimônio histórico, de forma que um visitante possa ter contato com a peça em seu contexto original e possa visualizá- la em funcionamento virtualmente.

Técnicas de Programação em GPU Aplicadas à Visualização de … · 2012-12-04 · Técnicas de Programação em GPU Aplicadas à Visualização de Modelos com Múltiplas Texturas

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Técnicas de Programação em GPU Aplicadas à Visualização de … · 2012-12-04 · Técnicas de Programação em GPU Aplicadas à Visualização de Modelos com Múltiplas Texturas

Técnicas de Programação em GPU Aplicadas àVisualização de Modelos com Múltiplas Texturas

Vitor de AndradeEscola Politécnica - UFRJ

Rio de Janeiro - BrasilEmail: [email protected]

Ricardo MarroquimCOPPE - UFRJ

Rio de Janeiro - BrasilEmail: [email protected]

Figura 1. 4 fotos (do total de 41) em alta resolução de um instrumento científico (esquerda), projetadas em um modelo não texturizado (meio), obtendo ummodelo final (direita)

Resumo—Nas últimas décadas surgiram novas técnicas dedigitalização através da utilização de scanners 3D. Esta tecnologiapermite obter representações virtuais de objetos reais comcada vez mais fidelidade e facilidade. Porém, as técnicas paraatribuição de cores a esses modelos (texturas ou BRDFs) aindaapresentam uma série de desafios. Este artigo propõe um sistemade gerenciamento e visualização de objetos contendo várias tex-turas para auxiliar este processo, focando em aplicações na áreade bens culturais. Este trabalho envolve conceitos de renderizaçãoem multipassadas, off-screen rendering, programação em GPU,shaders e OpenGL 4.

Keywords-Renderização em multipassadas; Off-screen Ren-dering; Programação em GPU; Digitalização Tridimensional;Computação Gráfica

Abstract—In the last decades new techniques of digitalizationusing 3D scanners have emerged. This technology makes itpossible to obtain virtual representations of real objects with lesseffort and more fidelity. However, the techniques for attributingcolor to these models (textures or BRDFs) still present a seriesof challenges. In order to aid this process, this paper proposesa visualization and management system for objects containingmany textures, focusing in the cultural heritage area. This workinvolves concepts of multipass rendering, off-screen rendering,GPU programming, shaders and OpenGL 4.

Keywords-Multipass Rendering; Off-screen Rendering; GPUProgramming; Three-Dimensional Digitalization; ComputerGraphics

I. INTRODUÇÃO

É de grande importância que existam métodos de se registrarelementos culturais ao longo da história de um país. Livros

Figura 2. A luneta meridiana Bamberg

podem guardar referências aos costumes e o cotidiano dapopulação através dos tempos. Quadros e pinturas armazenaminformações sobre as tendências artísticas e muitas vezessobre o passado. Os museus são locais que podem contarde forma única a história de um país ao armazenar peçasque foram importantes para a formação, seja cultural, cien-tífica ou econômica da nação. Neste sentido, o avanço datecnologia proporciona uma nova maneira de se interagir como patrimônio histórico, de forma que um visitante possa tercontato com a peça em seu contexto original e possa visualizá-la em funcionamento virtualmente.

Page 2: Técnicas de Programação em GPU Aplicadas à Visualização de … · 2012-12-04 · Técnicas de Programação em GPU Aplicadas à Visualização de Modelos com Múltiplas Texturas

Visando contribuir para a preservação de patrimônioshistóricos, desenvolveu-se uma parceria entre a UniversidadeFederal do Rio de Janeiro (UFRJ) e o Museu de Astronomiae Ciências Afins (MAST) no Rio de Janeiro, para realizar adigitalização utilizando um scanner 3D de um instrumentocientífico histórico em processo de restauração, a lunetameridiana Bamberg (Figura 2), de forma que se obtenhamréplicas virtuais. Estas réplicas serão utilizadas para fazer otreinamento de novos especialistas em manutenção e restaurode instrumentos científicos, além de disponibilizar no museuuma réplica fotorrealista da luneta em seu contexto e utilizaçãooriginais.

Figura 3. Exemplo de foto sendo projetada em um modelo de uma caneca.

Após o início do projeto, percebeu-se que existem váriosdesafios no que se refere à texturização do modelo escaneado.Diversas fotos em alta resolução devem ser obtidas e proje-tadas no modelo geométrico adquirido pelo scanner para seobter uma reprodução fiel da peça (Figura 1 e Figura 3). Entre-tanto, a montagem destas projeções não é uma tarefa simples,uma vez que cada parte da peça é representada em diversasfotos adjacentes e o mapeamento deve ser extremamentepreciso (Figura 4). Além disso, há ainda uma complicaçãorelacionada à limitação do número de texturas visualizadassimultaneamente. Considerando estes desafios, foi proposto odesenvolvimento de um software para realizar o alinhamentosemiautomático das fotos, chamado de Photojibe [1].

Apesar de existirem diversas técnicas para alinhar fotoscom o modelo geométrico [2], [3], geralmente é abordado oproblema do ponto de vista da projeção de cada foto indi-vidualmente. Por outro lado, após realizar o alinhamento detodas fotos existem diversas abordagens para realizar a fusãogerando uma textura única [4], [5], [6]. No entanto, existemmuitas dificuldades na elaboração de um sistema de alin-hamento semiautomático que geralmente não são mencionadasna literatura. Por exemplo, é desejável acompanhar o progresso

do alinhamento em tempo real, sendo necessário visualizar emanipular um único modelo contendo diversas texturas, i.e.diversas fotos projetadas. Este é um caso pouco comum, poisaté que a texturização completa seja alcançada, cada vérticepode possuir um número arbitrário e possivelmente grande decoordenadas de texturas, devido à sobreposição das fotos.

Neste trabalho, focamos neste desafio específico de geren-ciamento e visualização de várias texturas simultaneamente.Os métodos utilizados para resolver estes desafios envolvemos conceitos de renderização em multipassadas (MultipassRendering), Off-screen Rendering, programação em GPU coma utilização de shaders e OpenGL 4 e utilização de bufferspara renderização em non-immediate-mode. Nas próximasseções descreveremos como utilizamos estas técnicas em nossotrabalho.

Figura 4. Exemplo de texturas adjacentes com mapeamento impreciso, comperda na qualidade da reprodução.

II. BUFFERS

Um fator de grande importância para o desenvolvimentode qualquer sistema em computação gráfica é o desempenho.Quando é necessário trabalhar com uma grande quantidadede texturas projetadas em um modelo de alta resolução, odesempenho se torna uma questão ainda mais sensível. Nestesentido, fazemos uso de técnicas recentes de renderização, afim de melhorar o desempenho e possibilitar a visualizaçãointerativa (i.e. ao menos 30 quadros por segundo) dos modelos.Por exemplo, foi utilizada a renderização em non-immediate-mode através dos buffers VBO e TBO, descritos a seguir.

A. Immediate-mode e non-immediate-mode

A renderização em immediate-mode consiste em produzircada quadro a partir de comandos explícitos para desenharcada primitiva (ex. triângulos). O maior problema desta abor-dagem é que a cada quadro todos os triângulos da cena sãotransferidos da memória da CPU para a GPU.

Já a renderização em non-immediate mode permite guardardados como coordenadas de vértices, vetores normais dopolígono, coordenadas de textura, entre outros atributos, di-retamente na memória da GPU. Desta forma, no momentoda renderização da cena o acesso a estes dados é realizadodiretamente da memória da placa gráfica, evitando o alto custocomputacional da transferência de dados da CPU para a GPU.

Page 3: Técnicas de Programação em GPU Aplicadas à Visualização de … · 2012-12-04 · Técnicas de Programação em GPU Aplicadas à Visualização de Modelos com Múltiplas Texturas

bc

d

e

a

VBOa b c d e

IBO

VBO[0] VBO[1] VBO[2] VBO[3] VBO[4]

0 1 2 0 3 4

abc ade

Figura 5. Exemplo de utilização de VBO e IBO.

B. VBO

Um Vertex Buffer Object (VBO) permite manter as infor-mações mencionadas acima (coordenadas dos vértices, vetoresnormais, cores...) armazenadas diretamente na memória daGPU. Ele se relaciona com outro buffer, chamado de IBO(Index Buffer Object), na criação dos polígonos. Os valoresdas coordenadas dos vértices são guardados em um VBO einformações de como os polígonos serão construídos, i.e. osíndices dos vértices que compõem o polígono, são guardadasno IBO. Este último é utilizado para que não seja necessáriodefinir múltiplas vezes no VBO vértices compartilhados porvários polígonos. Na Figura 5, temos que os triângulos abce ade, compartilham do vértice a. Então o vértice a possuiapenas uma referência no VBO (índice 0), porém o IBOcontém duas entradas para este índice, indicando que doispolígonos compartilham este vértice.

C. TBO

Um Texture Buffer Object (TBO) é um array unidimensionalde elementos de textura armazenados em Buffer Objects. Elepermite armazenar as coordenadas de textura diretamente naGPU. Como o sistema trabalha com um número muito grandede texturas projetadas simultaneamente, a utilização destebuffer é essencial para otimizar o desempenho da renderização.

Uma vez que uma textura é corretamente alinhada com omodelo geométrico, é gerado um TBO que ficará responsávelpor guardar as coordenadas desta textura. Além disso, existeainda um TBO temporário relacionado à textura que está sendoalinhada no momento.

Vários vértices no modelo contêm coordenadas de texturaválidas em mais de um TBO (ou seja, há várias texturas pro-jetadas em um mesmo vértice), uma vez que frequentementehá várias fotos sobrepondo uma mesma região do modelo.Neste caso, é feito posteriormente um blending entre as coresprovenientes destas texturas. Além disso, um vértice nãonecessariamente contém coordenadas para cada foto. Nestecaso, atribui-se a este vértice as coordenadas st(0, 0) para estatextura. Este critério é válido pois na prática nenhum vérticeé realmente associado a estas coordenadas, porém para ser

estritamente correto seria necessário utilizar um vetor auxiliarpara indicar quais texturas são utilizadas para cada vértice.

III. RENDERIZAÇÃO EM MULTIPASSADAS

A renderização em multipassadas, ou multipass rendering,é uma técnica largamente utilizada na computação gráfica. Aideia por trás desta técnica é simples: dividir a renderizaçãode uma cena complexa em passos, unir o resultado de cadapasso com a utilização de um FBO (Framebuffer Object) efinalmente utilizá-los na renderização final da cena.

As aplicações para esta técnica são as mais diversas: efeitosde espelhos ou TVs através da renderização de uma cena parauma textura, com a sua posterior projeção em um elementorenderizado na tela; blurring alcançado ao renderizar a mesmacena várias vezes com uma pequena variação na posição dacâmera, desenhando-as na tela simultaneamente; efeitos deiluminação, como por exemplo, renderizar cada fonte de luz dacena separadamente para controlá-las individualmente, dentreoutros.

A técnica mencionada anteriormente de renderizar uma cenapara uma textura é chamada de Off-screen Rendering. Algumasaplicações para esta técnica envolvem geração de imagens dealta resolução e geração de texturas.

A utilização da renderização em multipassadas em conjuntocom a off-screen rendering no projeto teve como objetivo re-solver o desafio da limitação do número de texturas projetadasno modelo que poderiam ser visualizadas simultaneamente.Isto acontece porque cada placa gráfica possui um limite deslots de textura que é, em todo caso, inferior à demanda destaaplicação. A cada passada é renderizado para uma textura, omodelo com um certo número de texturas projetadas. Ao fimde cada uma delas, mistura-se o valor das cores dos pixels dapassada atual com o das anteriores, como descrito em detalhesa seguir.

A. Texturização em multipassadas

Inicialmente utilizava-se um slot de textura da placa gráficapara cada foto selecionada para visualização. Dessa forma,na nossa aplicação, rapidamente se esgotaria a quantidade de

Page 4: Técnicas de Programação em GPU Aplicadas à Visualização de … · 2012-12-04 · Técnicas de Programação em GPU Aplicadas à Visualização de Modelos com Múltiplas Texturas

Tex 1 Tex 2 Tex 3

Tex 1

Slot 1 Slot 2 Slot 3 Slot m

Tex 2Tex 3

Tex n+1 Tex n+2 Tex n+3

First Pass

Second Pass

Tex Ith Pass

...

...

...

...

Tex n

Slot n

Tex 2n

Tex

(n*i)-n+1Tex

(n*i)-n+2Tex

(n*i)-n+3 n*i

...

Tex n

Tex 1Tex 2

...Tex 2n

Tex n

Tex n+1

Tex n+2...

++

+

+

Tex 1Tex 2

...

Tex (n*i)-n

Tex (n*i)-n+1

Tex (n*i)-n+2

Tex n*i

...+

+

++

...

...

...

... ...

Figura 6. Esquema da renderização em Multipassadas

memória disponível, tornando impossível que se visualizasse omodelo com todas as texturas desejadas. Para solucionar esteproblema, determinou-se um número n de slots de textura aserem utilizados para guardar texturas individuais. Além disso,reservou-se um slot de textura extra para a renderização emmultipassadas. Caso o número de texturas para visualizaçãoseja menor do que o número de slots reservados para texturasindividuais, a renderização ocorre diretamente para o back-buffer. Isto significa que na primeira passada podem servisualizadas até n texturas simultaneamente sem a utilizaçãoda renderização em multipassadas. Caso se deseje visualizarmais de n texturas, uma vez terminada a primeira passada,a cena é renderizada para o FBO (Off-screen rendering) e éativado um flag a ser lido pelo fragment shader, que indicaa utilização do slot de textura reservado para a multipassada.Temos então nesta textura, o resultado da renderização comas n texturas iniciais, porém utilizando apenas uma texturaefetivamente (aquela relacionada ao slot da multipassada). Osn primeiros slots podem então ser liberados para que se façauma nova passada, visualizando outras n novas texturas. Comisso, após a segunda passada teremos no total 2n texturasvisualizadas. Generalizando, ao final de um número i depassadas, teremos até n ∗ i texturas visualizadas, utilizando-seno máximo n + 1 slots de textura, independente do númerototal de texturas (Figura 6).

B. OpenGL 4

Toda a comunicação com os shaders foi implementada comOpenGL 4, utilizando o conceito de Vertex Attribute Pointere Vertex Attribute Array. No Vertex Shader, foram definidasvárias variáveis de entrada utilizando o conceito de layoutqualifiers. Isto permite que cada variável relacione-se a umattribute index. Separou-se um índice para as coordenadas dosvértices dos polígonos, um para as coordenadas dos vetoresnormais, um para as coordenadas da textura atual sendoalinhada e um número de índices determinado pela capacidadedo hardware para texturas individuais sendo visualizadas (sema multipassada). Durante a execução, no momento em quese deseja enviar determinados dados para o Vertex Shader,relaciona-se o buffer em questão a um determinado attributeindex.

Não é necessário que se tenha um índice separado paraas coordenadas de textura de multipassada, uma vez que seumapeamento é feito diretamente no fragment shader. Isto épossível porque a textura possui as mesmas dimensões doviewport, o que significa que suas coordenadas corresponderãoexatamente às coordenadas do fragmento na tela, que podemser acessadas através da variável gl_FragCoord.xy.

C. Fragment Shader

No fragment shader, temos a definição dos n slots de tex-tura reservados para texturas individuais, assim como aquelereservado para a multipassada. A cada passada, faz-se umblending entre as cores provenientes de cada uma das texturasindividuais. Em seguida, o flag de multipassada emitido no

Page 5: Técnicas de Programação em GPU Aplicadas à Visualização de … · 2012-12-04 · Técnicas de Programação em GPU Aplicadas à Visualização de Modelos com Múltiplas Texturas

FragmentColor

Slot 1

Slot 2

Slot n

... Use Multipass?

Yes

No

BlendFragment color

Multipass color

Calculatelightning

Drawto

BackBuffer

Last pass?

Drawto

FBO

Yes

No

&

Figura 7. Fragment Shader

momento da renderização é lido. Caso este flag indique autilização da multipassada, faz-se o blending destas texturasiniciais também com aquela proveniente do FBO. O valor finaldo pixel é dado por:

Cf =

∑ni=1 Ci

n(1)

onde n é o número total de texturas e Ci é a cor dopixel associada a i-ésima textura. Note que o número to-tal de texturas é acumulado até a última passada, onde sóentão é feita a divisão. Para tanto, foi necessário utilizarGL_TEXTURE_RECTANGLE para que a soma não fossetruncada ao final de cada passada. Tendo acumulado todas astexturas, podem ser calculados os efeitos de iluminação paraque seja emitido o valor final da cor do fragmento (Figura 7).

IV. RESULTADOS

A seguir descreveremos as melhorias obtidas no sistema aoserem implementadas as técnicas de programação em GPUdescritas nas seções II e III.

Com o desenvolvimento da renderização utilizando bufferse programação em GPU, houve um aumento considerável nodesempenho do sistema. Quando a renderização ainda erafeita através do immediate mode, notava-se que conforme seaumentava o número de texturas registradas, a taxa de quadrospor segundo decrescia rapidamente. A partir da quarta texturaela já se tornava proibitivamente lenta. Com a utilização dosVBOs, mesmo que se eleve consideravelmente o número detexturas registradas, são mantidas taxas interativas, como podeser visto na tabela I.

Já com o desenvolvimento da renderização em multipas-sadas, pôde ser resolvido o problema da limitação do númerode texturas a serem visualizadas simultaneamente no mod-elo. Com ele o usuário pode visualizar o modelo com umnúmero muito maior de texturas alinhadas, possibilitando avisualização de modelos complexos totalmente texturizados.Ainda mais, o número máximo de texturas simultâneas não émais dependente do hardware. A tabela II indica os valoresde taxas de quadros por segundo medidos na visualização deum modelo para diferentes quantidades de texturas registradas,de forma que possa ser avaliada a performance do sistemaconforme se aumenta o número de passadas necessárias paraa renderização. Neste teste foram utilizados 7 slots de textura

para texturas individuais e mais um slot para a multipas-sada. Percebe-se então que mesmo quando foram projetadasmais de 40 texturas simultaneamente no modelo, as taxas derenderização mantiveram-se interativas. É importante lembrarque cada textura corresponde a uma foto em alta resolução(aproximadamente 3.2M pixels).

As configurações do computador utilizado para todos ostestes indicados nesta seção são: processador Intel Core i7com 8 núcleos, placa de vídeo NVidia GeForce 470 GTS e16GB de memória RAM.

Tabela ITABELA COMPARATIVA DE TAXAS DE QUADROS POR SEGUNDO EMimmediate mode E non-immediate mode PARA VÁRIOS NÚMEROS DE

TEXTURAS REGISTRADAS.

Registered Textures Immediate Mode FPS Non-ImmediateMode FPS

0 22.6 10001 11.2 5562 6.9 4963 4.7 4944 3.6 4935 2.9 4936 2.3 4937 2.0 490

Tabela IITABELA DE TAXAS DE QUADROS POR SEGUNDO MEDIDAS COM A

UTILIZAÇÃO DA RENDERIZAÇÃO EM MULTIPASSADAS.

Registered Textures Number of Passes FPS6 1 5507 2 495

14 3 33321 4 31028 5 25035 6 24542 7 230

V. CONCLUSÕES

Neste artigo, foram apresentados os conceitos de render-ização em multipassadas, off-screen rendering e renderizaçãoem non-immediate mode aplicados à texturização de mod-elos 3D. Os resultados encontrados demonstram o sucessoobtido na aplicação destas técnicas. A utilização dos buffers

Page 6: Técnicas de Programação em GPU Aplicadas à Visualização de … · 2012-12-04 · Técnicas de Programação em GPU Aplicadas à Visualização de Modelos com Múltiplas Texturas

proporcionou uma grande melhora no desempenho da visual-ização do modelo. Além disso, a utilização da renderizaçãoem multipassadas e da off-screen rendering permitiram autilização de um grande número de texturas projetadas emum único modelo, permitindo com que se faça a texturizaçãode modelos complexos de forma eficiente e visualizando omodelo completo em todos os momentos.

REFERÊNCIAS

[1] R. Marroquim, G. Pfeiffer, F. Moura de Carvalho, and A. Oliveira,“Texturing 3d models with low geometric features,” in Graphics, Patternsand Images (Sibgrapi), 2011 24th SIBGRAPI Conference on, aug. 2011,pp. 1 –8.

[2] R. Pintus, E. Gobbetti, and R. Combet, “Fast and robust semi-automaticregistration of photographs to 3d geometry,” in The 12th InternationalSymposium on Virtual Reality, Archaeology and Cultural Heritage, Oc-tober 2011.

[3] M. Corsini, M. Dellepiane, F. Ponchio, and R. Scopigno, “Image-to-geometry registration: a mutual information method exploitingillumination-related geometric properties,” Computer Graphics Forum,vol. 28, no. 7, pp. 1755–1764, 2009.

[4] A. Baumberg, “Blending images for texturing 3d models,” in Proc. Conf.on British Machine Vision Association, 2002, pp. 404–413.

[5] N. Bannai, R. B. Fisher, and A. Agathos, “Multiple color texture mapfusion for 3d models,” Pattern Recogn. Lett., vol. 28, no. 6, pp. 748–758,Apr. 2007.

[6] M. Callieri, P. Cignoni, M. Corsini, and R. Scopigno, “Masked photoblending: mapping dense photographic dataset on high-resolution 3dmodels,” Computer & Graphics, vol. 32, no. 4, pp. 464–473, Aug 2008.