Escolar Documentos
Profissional Documentos
Cultura Documentos
Geométricas Mutantes
haroldonascimento@hotmail.com, pellegrino@ita.br
Abstract. Virtual reality is becoming each day more present in our lives, but many factors
need to be more studied to make a VR system simulates the environment where we live in the
best possible way. One of these factors is the collisions detection, which it is a high cost
process and highly necessary to keep the allegiance of a simulation. In this paper this study
was developed. We intended to minimize the effort necessary to locate collisions by liberating
features for accomplishment of other tasks that imply the improvement of a virtual
environment. To reach this objective, were used the technique of spherical Octree to find the
collision area and the API Java 3D to perform the hard task of representing and visualizing
the synthetic bodies, focusing the work in the development and improvement of the technique
proposed.
Resumo. A realidade virtual está a cada dia tornando-se presente na vida de mais pessoas,
mas ainda existem muitos fatores a serem estudados para que um sistema de RV simule o
ambiente em que nós vivemos da melhor maneira possível. Um desses fatores é a detecção de
colisões, que é um processo muito custoso e altamente necessário para manter a fidelidade de
uma simulação. Este trabalho descreve um método que identifica em tempo real a região de
colisão, minimizando o esforço computacional necessário para esta. Para atingir esse
objetivo, foram utilizadas a técnica de Octrees esféricas para encontrar a área de colisão e a
API Java3D para realizar a trabalhosa tarefa de representar e visualizar os corpos
sintéticos, focando o trabalho no desenvolvimento e aperfeiçoamento da técnica proposta.
1. Introdução
Poder prever com antecipação a ocorrência de colisões, em ambientes virtuais, é uma tarefa
desejável e custosa.Um dos grandes problemas encontrados no desenvolvimento de eficientes
sistemas de detecção de colisão é minimizar o elevado poder computacional exigido. Este trabalho
apresenta um Sistema de Detecção de Colisões (SDC) em tempo real que identifica os pontos de
colisão minimizando os cálculos de interseção através de previsões de colisões e particionamento
dos objetos por octrees esféricas.
Com o objetivo de maximizar a performance da aplicação adotou-se a linguagem Java e sua
API gráfica Java3D.
A seguir um breve histórico da realidade virtual é mostrado, seguido da apresentação da API
Java 3D, da descrição da estratégia de octrees e dos conceitos dos modelos adaptativos adotados. É
feita uma descrição do SDC e de suas fases de detecção. Por fim, a aplicação gerada é mostrada
juntamente com seus resultados.
2. A Estratégia de Octree
Octree é uma estrutura de dados hierárquica que divide recursivamente o volume de um cubo em
oito cubos menores, conhecidos como octantes, até uma dada precisão. Cada um dos octantes é
rotulado como [MAZ88]:
• Branco: corresponde ao octante pertencente à região exterior do objeto, isto é, não pertence
ao objeto;
Figura 1. Representação de sólido por Octree. (a) Sólido. (b) Divisão recursiva do sólido. (c)
Octree representativa.
• Apresentar uma performance em tempo real quando objetos complexos colidem, obtendo
alta e constante taxa de frame (atualização do ambiente) além de baixa latência,
• Tolerar objetos cujo movimento seja aleatório ou controlado pelo usuário, isto é, a trajetória
não deve ser pré-conhecida.
O problema da detecção de colisão entre objetos geométricos tem sido foco de muitos
trabalhos em diferentes linhas de pesquisas, entre elas pode-se destacar principalmente as
aplicações de Realidade Virtual e Robótica.
4. Algoritmo Proposto
A colisão do par de esferas ocorrerá quando a distância entre seus centros for menor que a soma da
medida dos seus raios. A Figura 4 ilustra a situação em 2D, onde os envoltórios esféricos são
representados por círculos.
Figura 4. Posições relativas dos envoltórios. a) Não há colisão. b) Colisão entre os envoltórios.
Considerando-se c1 e c 2 o centro das esferas de raios r 1 e r 2 respectivamente, o teste de verificação
de colisão pode ser dado analisando-se a seguinte condição:
c1 - c 2 < r1 + r2
entretanto,
c1 - c 2 = (c1x - c 2x ) 2 + (c1y - c 2y ) 2 + (c1z - c 2z ) 2
assim tem-se:
2
(c1x - c 2x ) 2 + (c1y - c 2y ) 2 + (c1z - c 2z ) 2 < (r1 + r2 )
Os prováveis pontos de colisão são identificados somente após a detecção de colisão entre os
envoltórios. São utilizadas funções da biblioteca API Java 3D para a implementação desses cálculos
de modo a melhorar o desempenho do sistema.
De forma a tornar mais veloz o processo, o método de octrees esféricas é aplicado em apenas um
dos objetos estudados. Com essa abordagem, isolam-se as esferas que não interagem com a esfera
envolvente do outro objeto, reduzindo drasticamente os cálculos. Assim, apenas as partes de
interesse serão alvo de novas análises.
O provável ponto de colisão será o ponto central da maior esfera completamente contida
dentro do envoltório do outro objeto.
Adotou-se a estratégia de validar cada um dos prováveis pontos de colisão imediatamente
após a sua identificação, caso este ponto não seja validado o processo de subdivisões recomeçará a
partir da última região analisada.
A Figura 5 mostra a identificação de cinco prováveis pontos de colisão, representados pelas
circunferências preenchidas, obtidos através da aplicação da estratégia de octrees no objeto A. Estes
cinco pontos correspondem ao ponto central das circunferências totalmente contidas no envoltório
do objeto B.
A fase de validação da colisão tem o objetivo de precisar se o provável ponto de colisão (P pc) obtido
na fase anterior pertence ao interior dos dois objetos. Esta estratégia não se aplica a objetos
côncavos. Esta fase é dividida em duas subfases:
4.1.3.1. Validação I
São realizadas comparações entre o ponto Ppc e o ponto central do envoltório esférico, este pertence
ao interior do objeto que sofreu o processo de octree, em relação à superfície de cada face do objeto.
Através de processos analíticos as faces e os vetores normais são obtidos [KLE70].
Aplica-se à equação o provável ponto de colisão (P pc) e o ponto do centro da esfera que
circunscreve o objeto. Caso alguma dupla de valores seja de sinais opostos e F(Ppc) diferente de
zero, pode-se afirmar que o ponto Ppc pertence ao envoltório esférico mas não está contido no objeto
regular, caso contrário Ppc pertence a alguma face ( F(P pc) = 0) ou está contida no objeto regular.
Caso o ponto Ppc não pertença ao objeto e o sistema ainda tenha tempo para o refinamento,
então o processo de octree é reiniciado, caso contrário inicia-se a fase de Validação II.
4.1.3.2.Validação II
Nesta fase é feita a análise com o outro objeto, isto é, são realizadas comparações entre o ponto P pc
e o ponto central do envoltório esférico do outro objeto em relação à superfície de cada uma de suas
faces.
Se o ponto Ppc não pertencer ao objeto então se volta a fase de detecção dos prováveis
pontos de colisão, reiniciando o processo de octree, apenas se houver tempo disponível para uma
próxima análise.
A Figura 7 ilustra esta fase através de dois objetos 2D. A área em cinza claro corresponde à
região de interseção dos dois objetos. Os pontos de colisão são representados pelas circunferências
preenchidas, que pertencem aos dois envoltórios circulares como também aos dois objetos.
A Figura 8 apresenta um diagrama dos processos executados para cada frame. Pode ser
verificado que a precisão do SDC é inversamente proporcional ao número de elementos envolvidos.
Figura 7. Visualização dos Pontos de Colisão após a fase de Validação II.
não
Colisão
sim
Geração da Octree
Id e n t i f i c a ç ã o d o P r o v á v e l P o n t o d e
Colisão - Ppc
não
Identificação
sim
Validação do Objeto I
não
Validação
sim
Validação do Objeto I I
não
Validação
sim
Colisão
5. Resultados
Um ambiente de simulação foi criado de modo a se analisar o desempenho do SDC.
5.1. Aspectos Gerais da Aplicação
As simulações realizadas são definidas segundo três módulos de configuração, onde o usuário tem a
liberdade de criar ambientes virtuais com quaisquer e quantos objetos sólidos convexos desejar.
O modelador de ambientes virtuais permite definir o tipo de movimento (rotação e/ou
translação) e a velocidade inicial dos objetos. No segundo módulo, que se destina à configuração do
objeto, são definidas geometrias, dimensões, posições iniciais na cena e textura dos corpos que
compõe a cena. O terceiro e último módulo define o tipo e o nível de precisão na detecção de
colisão.
O número de parâmetros existentes no modelador permite simular de forma realística alguns
comportamentos existentes no mundo real.
• Fazer uma avaliação de desempenho do sistema em relação aos níveis de precisão, número
de octantes gerados e geometrias dos objetos
O primeiro teste faz uma avaliação comparativa de desempenho das fases que constituem o
processo de detecção de colisão. Observa-se pela Tabela 1 que a facilidade e rapidez de se
identificar colisões entre envoltórios esféricos chega a ser insignificante quando comparado com as
demais fases. Isto é um indicativo positivo de que a técnica adotada foi uma boa escolha.
Tabela 1. Avaliação de desempenho das fases do SDC.
Percentagem média
sobre o tempo total
Fases
de processamento
Detecção de Colisão entre Envoltórios Esféricos 1.0%
Identificação dos Prováveis Pontos de Colisão 48.0 %
Validação 51.0%
Outro teste de desempenho refere-se ao tempo médio despendido durante todo o processo
em relação ao número de octantes gerados. Verifica-se através da Figura 9 que esta relação é
praticamente linear, isto é, quanto maior for o número de células geradas pela técnica de
subdivisões por octree, maior será o tempo de processamento. Este resultado é esperado, visto que
para cada octante gerado, é verificado se este representa uma área de interesse, e caso seja, é
aplicado então uma abordagem para precisar e validar o elemento, consumindo assim, maior
processamento.
Os picos do gráfico apresentado na Figura 9 ocorrem devido à existência de um número
maior de pontos P PC não validados na última subfase da fase de Validação.
O terceiro teste de desempenho realizado mostra a influência da precisão do SDC na
performance do sistema. Pela Figura 10, observa-se que o número de iteração igual a dois, três e
quatro obtém os melhores resultados de performance. É importante ressaltar que quanto maior for o
nível da octree, maior será a precisão.
1100
1000
900
800
Tempo (mseg)
700
600
500
400
300
200
100
0
342 404 463 524 585 646 707 769 828 889 950
3000
2500
Tempo (mseg)
2000
1500
1000
500
0
2 3 4 5 6 7
Nível da Octree (Precisão)
O outro teste de performance utiliza seis objetos de geometria distinta, que foram analisados
segundo quatro diferentes níveis de precisão. Observa-se que a geometria do objeto influencia no
resultado.
A outra análise de performance, mostrou que o SDC é totalmente satisfatório quando se
introduzem até 10 objetos no ambiente. Foi observado que com 20 objetos o sistema ainda foi capaz
de detectar as colisões com eficiência, mas o movimento dos objetos tornou-se prejudicado.
Um outro tipo de teste realizado foi verificar o comportamento do sistema quando ocorre
mais do que uma colisão ao mesmo tempo e em um mesmo objeto. Nesta linha, os testes não foram
exaustivos, mas foi possível se ter uma idéia de como o SDC responde frente a esse tipo de
situação. Verificou-se que o sistema responde bem a essas situações.
(a) (b)
Figura 11. Detecção de colisão entre envoltórios esféricos. (a) Visão frontal (b) Visão superior.
Pode ser observado que a utilização de Octrees esféricas não apresenta boa precisão, uma
vez que qualquer objeto será aproximado por uma esfera, o que em muitas vezes não representa o
mesmo envoltório.
Uma abordagem computacionalmente mais custosa, porém precisa é mostrada na Figura 12,
são identificados os pontos de colisão entre as primitivas.
Adotou-se representar os reais pontos de colisão através de pequenas esferas, de forma a
permitir ao observador visualizar e mapear, após uma simulação, os locais e quantidades de colisões
ocorridas durante o experimento.
(a) (b)
Figura 12. Detecção de colisão entre primitivas. (a) Colisão (b) Configuração após a colisão.
Ainda em relação à detecção de colisão entre primitivas, deve-se considerar um parâmetro
muito importante na precisão do processo: o nível da octree.
Foram realizados testes entre objetos de geometrias distintas com o intuito de verificar a
variação da precisão em relação ao número de subdivisões geradas pela estratégia de octree.
A Figura 13 mostra a percentagem média de erro na identificação de pontos de colisão em
relação a quatro configurações distintas do SDC.
10%
Percentagem Média de Erro
9% 8,3%
8%
7%
6%
5% 4,1%
4%
3% 2,1%
2%
1,0%
1%
0%
3 4 5 6
Níveis de Precisão
6. Conclusões
O método mostrou-se bem robusto no que diz respeito a identificação de colisões, deixando um
pouco a desejar quando se pensa em identificar o ponto exato da colisão.
Este efeito indesejável pode ser melhorado utilizando-se octrees heterogêneas, o que não foi feito
neste trabalho, mas que de certa forma tentou-se otimizar o método quando tratou-se de fazer as
subdivisões em apenas um dos objetos.
AGRADECIMENTOS
Agradecimentos a CAPES pelo apoio financeiro dado a este trabalho.
REFERÊNCIAS BIBLIOGRÁFICAS
[AUK92] Aukstakalnis, S.; Blatner, D. Silicon Mirage: The Art and Science of Virtual Reality,
Peatchpit Press, Berkeley, CA, 1992.
[GAR89] Garcia, G.; Corre, J. F. A New Collision Detection Algorithm Octree Models, IEEE
International Workshop on Intelligent Robots and Systems. Japan, Sep. 1989, p 93-98.
[HUB95] Hubbard, P. M. Collision Detection for Interactive Graphics Applications, IEEE
Transactions on Visualization and Computer Graphics, Sep. 1995, p 218-230.
[MAC94] Machover, C.; Tice, S.E. Virtual Reality. IEEE Computer Graphics & Applications,
pp.15-16, Jan. 1994.
[PIM95] Pimentel, K.; Teixeira, K. Virtual reality - through the new looking glass. 2.ed. New
York, McGraw-Hill, 1995.
[SMI95] Smith, A.; Kitamura, Y.; Takemura, H.; Kishino, F. A Simple and Efficient Method for
Accurate Collision Detection Among Deformable Polyhedral Objects in
Arbitrary Motion, IEEE Transactions on Visualization and Computer Graphics,
1995, p 136- 145.
[SOW99] Sowizral, H. A.; Rushforth, K. C.; Deering, M. F. The Java 3D API Specification.
Addision Wesley, Reading, Mass. December, 1999.
[SUN97] Sun Microsystems. The Java 3D API - Technical White Paper. July, 1997.
[TZA96] Tzafestas, C.; Coiffet, P. Real-Time Collision Detection using Spherical Octrees:
Virtual Reality Apllication, IEEE International Workshop, pp. 500- 506. 1996.