Fundamentos de
Computação Gráfica
Aplicação de Tags em Objetos de Sistemas
de Visualização em Tempo Real
Renato Deris Prado
Tópicos principais
Introdução e Objetivos
1.


Conceitos Importantes
2.






2
Modelos massivos e modelos CAD
Texturas e texturização de imagens
Textura procedural
Projeto
3.
4.
Sistemas de visualização em tempo real e autotags
Objetivos
Grafo de cena
Aplicação dinâmica de texturas
Testes e Resultados
Considerações Finais
1. Introdução e Objetivos
Sistemas de visualização em tempo real (Environ –
Tecgraf/Puc-Rio)

Sistema de realidade virtual
que busca aumentar a
qualidade gráfica e o realismo
da visualização.
Permite a interação com o
usuário de diversas formas
(Mover objetos, navegar pela
cena, criar anotações)
Imagem do software Environ mostrando uma
refinaria de petróleo.
3
A resposta do programa é em
tempo real (Exemplo:
Movimentação de câmera).
1. Introdução e Objetivos
Autotags

Cada objeto da cena
tridimensinal tem um nome
específico.
As autotags (circuladas de
vermelho na foto) são
aplicadas nos objetos e
mostram seus nomes.
Permitem a rápida
identificação de objetos.
Esse tipo de identificação
existe em objetos reais.
Imagem do software AvevaReview 2010 de
uma refinaria de petróleo mostrando as autotags.
4
1. Introdução e Objetivos
Objetivos

5

Estudar como fazer uso das autotags.

Inicialmente criar uma aplicação simples de tempo real para poder
desenvolver os testes (mais complicado testar com o Environ).

Ao usar autotags não comprometer o desempenho da aplicação
de tempo real.

Usar futuramente as autotags no Environ, em arquivos de
extensão rvm ou modelos CAD (slide 6).
2.Conceitos Importantes
Modelos massivos e modelos CAD

6

Alguns modelos carregados pelo Environ contém milhões
de objetos (cilindros, cubos, cones, etc) e por isso são
chamados de modelos massivos. Arquivos de extensão
rvm podem ser modelos massivos e são modelos CAD
que são o foco do trabalho.

Modelos CAD ou Computer Aided Design são os modelos
que recebem as autotags em softwares concorrentes ao
Environ. Eles representam objetos reais para
visualização científica e mostram refinárias e plataformas
de petróleo, como exemplos.
2.Conceitos Importantes
Texturas e texturização de imagens


Em computação gráfica texturização é um processo que
recebe uma superfície de um objeto e modifica sua
aparência em cada localização usando alguma imagem,
função ou outra fonte de dados.
Aplicação de tags é um
processo de texturização.

7
Como exemplo, ao invés de criar vários cubos para
representar uma parede de tijolos, pode-se usar uma
imagem de parede de tijolos e aplicá-la a somente um
cubo maior.
2.Conceitos Importantes
Texturas e texturização de imagens

Duas formas de texturização foram cogitadas:

Texturização de imagens bidimensionais:
Aplicação de uma imagem png, representando a autotag, sobre as
geometrias.
Problemas:
 Cada textura diferente ou autotag ocuparia memória de vídeo. Podem existir milhões de
objetos, cada um com sua autotag. Com isso, a possibilidade de a memória ser insuficiente
é enorme.


Como saber os nomes dos objetos para criar imagens de textura? Necessidade de criação
de texturas a medida que carrega modelos e conhece os nomes dos objetos.
Textura procedural:
Programação em placa de vídeo com programas chamados shaders.
Problemas:
 Como ter os caracteres ASCII já que não temos uma imagem com a tag?

8
Os caracteres ASCII teriam que ser criados por código para serem aplicados.
3.Projeto
No inicío da implementação foi escolhida a texturização de
imagens bidimensionais para ver na prática como o sistema
computacional se comportaria com os problemas
apontados anteriormente (slide 8) e se alguma solução
viável poderia ser encontrada.
Grafo de cena

É uma estrutura de dados que facilita a separação de
funcionalidades do projeto (classes) e a estruturação de objetos na
cena. A hierarquia de classes e seus detalhes estão explicados no
texto. O grafo de cena permitiu criar a aplicação de tempo real e as
cenas com objetos tridimensionais.
9
3.Projeto

Grafo de cena
Imagem retirada da aplicação criada nesse trabalho. Do lado esquerdo
uma cena com sessenta mil objetos e do lado direito com dez mil. Os
objetos vermelhos são cubos e os azuis, cilindros.
Com o grafo de cena construído o próximo passo foi resolver a
aplicação dinâmica de texturas.
10
3.Projeto

Aplicação dinâmica de texturas
Porque aplicação dinâmica de texturas?


Cada objeto tem um nome único e precisa de uma textura diferente.
Vários arquivos com objetos diferentes podem ser carregados e não se sabe
o nome deles até a leitura do arquivo.
O que foi feito?

Uma imagem com todos os caracteres ASCII necessários foi usada como base.
Esta imagem png fica inicialmente guardada em disco.
Quando a aplicação roda, é carregada em RAM.
Para o OpenGL uma imagem é armazenada como
um vetor unidimensional.
Uma vez que se tem essa imagem guardada em um
vetor, é possível “recortar” letras do repositório e
organizá-las em um novo vetor. Para isso era preciso
conhecer previamente a altura e a largura desses
caracteres no repositório.
11
3.Projeto

Aplicação dinâmica de texturas
Exemplo de tags que podem ser extraídas do repositório.

As tags são brancas com contorno preto para que possam aparecer também em
objetos escuros. Qualquer outra combinação de cores poderia ser usada.

A organização dos novos vetores toma conta de colocar as letras bem juntas
parecendo realmente uma palavra única.

A medida que o arquivo é carregado diferentes tags podem ser construídas para
que cada objeto possa receber uma textura diferente.
12
3.Projeto

Aplicação dinâmica de texturas
A medida que o arquivo é carregado, diferentes tags podem
ser construídas para que cada objeto possa receber uma
textura diferente.
Objetos já com as tags aplicadas sobre eles.
13
3.Projeto

Testes e resultados
Máquina com Windows7, Geforce9600GT de 512Mb, 2Gb de RAM. GPU-Z usado
para medir VRAM.
Teste 1


Objetivo: Ver quantos objetos poderiam ser renderizados sem as texturas
mantendo um frame rate bom para uma aplicação de tempo real.
Resultado:
Objetos
Textura
FPS
60.000
Não
4
10.000
Não
30
Com cinco mil cilindros e cinco mil cubos frame rate de 30 fps (objetos
muito aglomerados)
14
3.Projeto

Testes e resultados
Teste 2


Objetivo: Medir consumo de memória de vídeo e ver quantos objetos
poderiam ter tags.
Resultado:
Objetos
Textura
VRAM
FPS
40.000
Não
148Mb
8
40.000
Sim
508Mb
0
30.000
Não
122Mb
10
30.000
Sim
500Mb
2
- Sistema operacional gasta 110 MB, logo, gasto com geometria é baixo.
- A aplicação de texturas fez o fps cair drasticamente. Dúvida que surge: O alto
consumo de VRAM está fazendo cair o fps ou existe algum gargalo no grafo?
15
3.Projeto

Testes e resultados
Teste 3


Objetivo: Examinar possíveis gargalos na aplicação.

Foi visto que a função glBindTexture2D poderia ser responsável pela queda de
performance.

Essa função deve ser chamada antes do desenho de cada objeto para que
troque a textura/tag da vez. Como cada objeto tem uma tag diferente, ela acaba
sendo chamada uma vez para cada objeto.
Resultado:
Objetos
Textura
VRAM
FPS
40.000
Sim
508Mb
8
As texturas continuaram sendo jogadas na placa, mantendo o gasto de
VRAM em 508Mb mas agora não foram realizados os “binds”. O frame
rate não caiu para 0 fps como antes. O glBindTexture2D era o gargalo!
16
3.Projeto

Testes e resultados
Com o resultado do Teste 3, o problema de usar a função glBindTexture2D
muitas vezes, se tornou maior do que o do gasto de memória de vídeo,
quando lidando com modelos massivos.

17
Solução encontrada

Foi visto que no software concorrente AvevaReview, nem todos os objetos da cena
recebiam tags de uma vez. Eles iam recebendo tags a medida que ficavam mais
próximos da câmera – a medida que os quadros iam sendo renderizados e a câmera
ia se movimentando.

A solução é escolher um certo limite de objetos que receberá tags por quadro.
Exemplo: Os objetos mais próximos da câmera.

Foi feita uma adaptação no grafo de cena para que, antes da renderização de um
quadro, seja calculada a posição da câmera no espaço 3D. Na hora de renderizar os
objetos, é calculada a distância deles para a câmera. Os objetos que estão até uma
distância x da câmera irão receber tags e os outros não.
3.Projeto

Testes e resultados

Solução encontrada

Limitando as chamadas a função glBindTexture2D, foi possível manter um
desempenho aceitável. Quanto menos chamadas dessa função melhor. Faz sentido
que o usuário não precise ver todas as tags ao mesmo tempo!
É possível notar que os
objetos próximos da câmera
têm tags e os mais ao fundo
não.
18
3.Projeto

Testes e resultados

19
Solução encontrada

Uma vez que o problema do “bind” foi diminuindo, a memória de vídeo
volta a ser um problema. Com muitos objetos, mesmo que só alguns
recebam tags, ainda é preciso guardar na placa uma textura diferente
por objeto. Até o presente momento não foi feito um controle de
memória, mas para a solução ser viável, é necessário que isso exista
futuramente.

A escolha de quais objetos devem receber tags por quadro pode ser
mais bem feita para que sejam obtidos resultados visuais melhores.
4.Considerações Finais

Exibição de tags sobre objetos é um bom recurso para pessoas que
trabalham com modelos CAD, já que facilitam a identificação dos objetos.

A solução encontrada é viável de ser implementada. Com um limite de
objetos que podem receber tags, a performance da aplicação é pouco
comprometida.

Entretanto, ajustes nos algoritmos precisam ser feitos para que a solução
fique mais completa e possa de fato ser usada no Environ.
20

Melhor escolha de quais objetos recebem tags para que um número mínimo de
binds seja realizado e melhores efeitos visuais sejam obtidos.

É necessário existir uma gerência de quando as texturas entram e saem da
placa de vídeo para que o gasto de VRAM não seja maior do que o possível.
4.Considerações Finais


21
O que foi feito:

Grafo de cena

Criação e montagem dinâmica de texturas

Aplicação de tags em cilindros e cubos

Testes de performance
Falta fazer no futuro:

Melhoria dos algoritmos para escolha dos objetos que recebem
tags.

Controle de memória de vídeo

Ajuste na orientação das tags

Conversa com usuários reais do Environ sobre as soluções que
os atenderiam melhor
FIM
22
Download

Aplicação de tags em modelos massivos - PUC-Rio