HOME.

Introdução

Este é um breve tutorial de como fazer uma implementação de um sistema massa-mola simples para simulação de tecidos. O algoritmo que será apresentado se baseia na Segunda Lei de Newton, usando a integração numérica de Verlet e algumas características da implementação em GPU.

Motivação

A simulação de tecidos é um dos passos propostos para o desenvolvimento de um algoritmo para simulação de objetos deformáveis. Devido à simplicidade do sistema massa-mola, as etapas de construção do algoritmo e posterior expansão para dimensões maiores é relativamente rápida.
Uma das principais características do problema é prover independência de dados de forma que é possível extrair um alto grau de paralelismo, como será demonstrado a seguir, o que motiva sua utilização para o aproveitamento do hardware gráfico programável.

Sistema massa-mola

O sistema massa-mola é composto basicamente por partículas e constantes elásticas, a interação entre esses elementos sob a presença de uma força externa é o que constitui a simulação.

Princípio de funcionamento

O princípio de funcionamento do sistema é bastante simples. Imagine uma massa interligada a um ponto fixo, ou massa infinita, através de uma mola. Uma vez que essa mola seja comprimida, surgirá uma força de reação de direção contrária que tende a afastar as massas. Se a mola for esticada, a força de reação tenderá a reaproximar as massas, como mostra a figura abaixo.
masspring.PNG
As forças de reação da mola continuarão agindo até que esta volte à posição de repouso ou, caso haja alguma força externa, até que as forças convirjam para um estado de equilíbrio.
A força de reação da mola num dado instante é dada por:
forca.PNG
Onde d é o vetor direção da força, k é a constante elástica, l é o comprimento atual e r é o comprimento da mola em estado de repouso.

Simulação de tecido

Para simular tecidos, é construído um sistema de partículas interligadas por molas, como mostra a figura.
molas8.png
Para cada partícula, a nova posição dada pela integração de Verlet é:
verlet.PNG
Onde a representa a aceleração, m a massa, g o vetor gravidade, x a posição e d o damper (ou constante de dissipação).

Aplicação em GPU

Para simplificar a implementação e a maneira de pensar sobre o problema, suas variáveis são vistas como matrizes. Ou seja, as posições e aceleração são matrizes onde cada elemento corresponde a uma partícula do sistema. Assim, a conectividade das massas é dada pela vizinhança dos elementos da matriz, como mostra a figura.
mtx.PNG

Last edited Jul 17, 2009 at 6:39 PM by Lenna, version 10

Comments

No comments yet.