Você está na página 1de 12

Detecção de Colisões entre Objetos Convexos com Características

Geométricas Mutantes

Haroldo P. Nascimento, Sergio R. M. Pellegrino

Divisão de Ciência da Computação


Instituto Tecnológico de Aeronáutica - ITA
12228-900 São José dos Campos - SP

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]:

• Preto: identifica o octante completamente contido no sólido;

• Branco: corresponde ao octante pertencente à região exterior do objeto, isto é, não pertence
ao objeto;

• Cinza: representa o octante parcialmente preenchido pelo objeto;


O processo recursivo ocorre apenas enquanto houver nós cinzas, portanto todo nó folha da
octree deverá ser preto ou branco, caso contrário deverá sofrer nova divisão, gerando oito nós
filhos. A Figura 1 exibe a representação de um sólido através da técnica de octree.
Algumas vantagens dessa técnica tornam-se evidentes a primeira vista: uma delas é a
relativa facilidade com a qual se pode representar objetos sólidos das mais diversas formas, não
importando se os mesmos são côncavos ou convexos. Outra vantagem é o aumento de performance
obtido em sistemas que detectam colisões de objetos [GAR89] [NAS00a] [NAS01] [PEL00]
[TZA96], pois esta estratégia elimina muitas regiões do objeto que não estão na iminência de
colidir. Entretanto, uma desvantagem desse método é que, por mais precisa que seja a
representação, ela será sempre uma aproximação do sólido original, nunca uma representação fiel.
Partindo-se da abordagem das octrees, encontra-se na literatura uma variação do método,
denominado Octree Esférica [GAR89] [TZA96]. Nessas porém, utilizam-se esferas.
A opção em adotar octree esférica, deve-se à facilidade e eficiência na identificação da
relação de distância entre os envoltórios esféricos, sendo esta a base para da eficiência do algoritmo
proposto, uma vez que, quando se identificam colisões entre os envoltórios, tem-se a indicação da
iminência de colisão entre objetos.
A Figura 2 apresenta um exemplo de divisões por octantes; neste caso limitado ao plano como
melhor meio de visualização. Para a seleção do octante, o objeto é envolvido em um cubo que
melhor o contenha, na figura um quadrado, e este passa a ser englobado por uma esfera, na figura
circunferência.

3. O Problema da Detecção de Colisão entre Objetos


A detecção de colisões trata-se de um problema complexo, visto que os objetos de ambientes
virtuais possuem formas variadas e movimentos nem sempre bem definidos, além de que os objetos
podem ter formas não convexas e outras vezes possuírem formas geométricas mutantes.
A colisão entre objetos prescinde de prévia detecção, isto porque, no momento que ela
ocorre, o movimento deve cessar imediatamente para em primeira análise, evitar que os corpos se
interpenetrem, e em uma segunda análise, simular o comportamento de um objeto real, criando um
ambiente virtual mais realístico.

Figura 1. Representação de sólido por Octree. (a) Sólido. (b) Divisão recursiva do sólido. (c)
Octree representativa.

Figura 2. Visualização em 2D do processo de subdivisão da octree esférica. a) Iteração zero.


b) Iteração um. c) Iteração dois. d) Iteração três.

Pesquisadores têm desenvolvido um grande número de algoritmos para analisar a colisão


entre objetos, os quais geralmente apresentam duas fases: a de detecção de colisão, que determina
se o objeto simulado penetrará em outro; e a de reação da colisão, responsável pela alteração do
comportamento e estrutura física dos objetos colididos.
Duas características importantes devem estar presentes nos algoritmos de detecção de
colisão, são elas:

• 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 preocupação foi em desenvolver um algoritmo capaz de se adaptar a situações de alteração de


forma dos objetos e que trate situações genéricas onde há liberdade de movimentos.

4.1. Descrição da Técnica


O (SDC) é constituído de três fases: Fase de Detecção de Colisão entre Envoltórios Esféricos, Fase
de Identificação dos Prováveis Pontos de Colisão e Fase de Validação da Colisão. A Figura 3
apresenta um diagrama destas etapas:
Fase de Validação
Fase de Detecção de Fase de Identificação
Colisão entre Envoltórios dos Prováveis Pontos Fase de Fase de
Esféricos de Colisão Validação I Validação I I

Figura 3. Fases do Sistema de Detecção de Colisão.

4.1.1. Fase de Detecção de Colisão entre Envoltórios Esféricos

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.

4.1.2. Fase de Identificação dos Prováveis Pontos de Colisão

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.

Figura 5. Visualização dos Prováveis Pontos de Colisão (P pc).


Percebe-se, através da Figura 5, que nesta fase obtém-se um conjunto de pontos P pc que
poderão não ser validados nas fases posteriores, pois são pontos que pertencem aos envoltórios, mas
não estão contidos dentro dos objetos.

4.1.3 Fase de Validação da Colisão

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.

Figura 6. Visualização dos Prováveis Pontos de Colisão após a fase de Validação I.

Através da Figura 6 pode-se visualizar os possíveis casos da fase de Validação I. Os dois


casos de interesse são representados pelas quatro circunferências preenchidas.

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.

Atualização do Ambiente Virtual

Deteção de colisão entre os


envoltórios esféricos

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

Figura 8. Algoritmo do Sistema de Detecção de 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.

5.2. Análise de Performance

Os testes de performance realizados permitem extrair dados sob dois enfoques:

• Determinar o esforço computacional que cada fase do sistema proposto requer

• 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

Número de Octantes Gerados

Figura 9. Análise de Performance: Tempo versus número de octantes gerados.

3000

2500
Tempo (mseg)

2000

1500

1000
500

0
2 3 4 5 6 7
Nível da Octree (Precisão)

Figura 10. Análise de Performance: Tempo versus número de iteração da octree.

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.

5.3. Análise de Precisão


A Figura 11 mostra um exemplo de detecção de colisão entre envoltórios. Observa-se que o método
é eficiente, não havendo sobreposição de envoltórios. Isso ocorre devido ao pequeno número de
operações necessárias na monitoração da posição de esferas.
A Figura 11.a corresponde à visão frontal e a Figura 11.b mostra através da visão superior a
colisão entre envoltórios esféricos.

(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

Figura 13. Análise de precisão em relação aos níveis de subdivisões da octree.

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.

[BAR00] Barbosa, D. B. M.; Nascimento, H. P; Pellegrino, S. R. M.. Modelo de Detecção de


Colisões em Ambientes Virtuais, Instituto Tecnológico de Aeronáutica, WorkComp
2000, São José dos Campos, 2000, p 153-158.

[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.

[JAC94] Jacobson, L. Realidade virtual em casa. Rio de Janeiro, Berkeley, 1994.

[KIR98] Kirner, C. Sistemas de Realidade Virtual, São Carlos. Disponível em


http://www.dc.ufscar.br/ ~grv/tutrv.htm. Novembro,1998.

[KLE70] Kletenik, D. Problemas de Geometria Analítica. Ed Paz, Moscow. 1970.

[MAC94] Machover, C.; Tice, S.E. Virtual Reality. IEEE Computer Graphics & Applications,
pp.15-16, Jan. 1994.

[MAZ88] Mazumder, P. A New Strategy for Octree Representation of Three-Dimensional


Objects, IEEE International Workshop on Robot and Human Communication, 1988, p
270- 275.

[NAS00] Nascimento, H. P.; Barbosa, D. B. M.; Pellegrino, S. R. M. Detecção de Colisão em


Ambientes Virtuais usando Modelos Adaptativos, Jornada de Iniciação Científica e
Pós-Graduação da UNESP, Guaratinguetá, SP, 2000, p 43-46.

[NAS00a] Nascimento, H. P.; Barbosa, D. B. M.; Pellegrino, S. R. M. Sistema de Detecção de


Colisão usando Octree Esféricas. 3° Workshop Brasileiro de Realidade Virtual,
Gramado, RS, 2000, p 271-272.

[NAS01] Nascimento, H. P. Detecção de Colisão entre Objetos Convexos com Características


Geométricas Mutantes Usando a Técnica de Octree Esféricas. Tese de Mestrado -
ITA - SP, 2001.

[PEL00] Pellegrino, S. R. M.; Nascimento, H. P; Barbosa, D. B. M. Detecção de Colisão em Alvos


Móveis, 3° Workshop Brasileiro de Realidade Virtual, Gramado, RS, 2000, p 275-
276.

[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.

Você também pode gostar