Vamos falar sobre modelagem computacional, voltando nosso foco às simulações físicas em especial. Com mundos fictícios cada vez mais avançados, seja em computação gráfica ou jogos, somos forçados agora mais do que nunca a entender como funciona a realidade para conseguirmos moldá-la em nossos pequenos (ou não) mundos da imaginação.
Além disso, por que não conseguimos elaborar modos mais eficientes de evitar catástrofes naturais? Não é possível utilizar os dados para traçar uma tendência e criar situações hipotéticas? Sim, é possível, e é nisso que muitos pesquisadores trabalham hoje em dia. Podemos dizer então que a utilização de computadores para simular fenômenos e modelar situações já está presente, de uma forma ou outra, em nossas vidas.
O que é modelagem computacional?
Um modelo ou simulação computacional é geralmente um software que, como o nome indica, simula um modelo abstrato de algum fenômeno ou situação. E não se restringe apenas à matemática, física e afins, pois vem ganhando aceitação inclusive nas ciências sociais. Há até mesmo um projeto destinado a simular um cérebro virtual: o Blue Brain Project.
O interesse por simulações vem desde o início da computação moderna, sendo notória sua participação no projeto Manhattan para modelar um processo de detonação nuclear durante a Segunda Guerra Mundial. Nas telonas, o uso da animação por computador começou nos anos 70 inicialmente apenas como efeitos visuais. Toy Story da Pixar foi o primeiro filme completamente gerado por computador, e a partir de então não parou mais.
Técnicas cada vez mais complexas e sofisticadas foram criadas para aumentar o senso de imersão, tanto no cinema quanto em jogos digitais. Vamos voltar nossa atenção principalmente aos motores de física, usados em jogos e simulações científicas para simular situações da física newtoniana.
Dinâmica de corpos rígidos e corpos macios
Primeiro precisamos diferenciar esses dois conceitos da física. Um corpo rígido ou extenso é um corpo que, teoricamente, não sofre nenhuma deformação e portanto mantém sua forma constante independentemente das forças externas. Como não precisamos considerar deformações, fica claro até a leigos como nós que é muito mais fácil do que lidar com os ditos corpos macios, como cabelo e roupas. Aqui vamos nos preocupar apenas com a simulação de corpos rígidos.
Simulação de corpos rígidos
Se está em dúvidas por que diabos um sujeito que faz Ciência da Computação precisa ter Cálculo e Física, aí está uma possível resposta. Como veremos mais abaixo, dependendo da aplicação, nem sempre é necessário ser um ninja da física para conseguir simular fenômenos físicos em um contexto virtual.
Mas é aquela história de sempre: não dá para sair construindo foguetes mal sabendo o que é Cálculo Diferencial, mesmo tendo computadores modernos automatizando muitos processos e realizando cálculos complicados. Além disso, muitas vezes corre-se o risco de esbarrar nos limites de uma ferramenta, e aí o cidadão fica desconsolado e não sabe mais o que fazer.
Falando em Cálculo, pode ter certeza que ele te acompanhará desde o básico de física de partículas até a simulação de corpos rígidos; isso porque simular o movimento de um corpo rígido é quase o mesmo que simular o de uma partícula. Mas então o que seria diferente? Bem, um corpo rígido tem vários atributos, entre os quais:
- Posição e orientação
- Velocidade linear e angular
- Massa
- Centro de massa
- Momento
E vários outros mais, sem esquecer das forças externas e os torques produzidos por elas. Claro, também não podemos nos esquecer das colisões. Lembram-se delas? Elásticas, parcialmente elásticas e inelásticas, mas como estamos tratando de corpos rígidos só precisamos nos preocupar com as últimas. Colisões são uma parte bem complexa de simulações, apesar de inicialmente parecer só questão de verificar se há overlap através de um conjunto de pontos.
Mas não é viável utilizar capacidade de processamento para verificar todas as possíveis colisões o tempo inteiro, principalmente com 3 ou mais corpos, pois é possível descartar alguns pares seguindo alguns critérios (estarem longe demais, por exemplo). Quando for detectada a colisão, deve-se além disso calcular as forças necessárias para empurrar os objetos no sentido oposto aos seus movimentos. Outra questão a ser considerada é a possibilidade de um objeto a alta velocidade atravessar o outro, sem detectar colisão.
Na prática
Poxa, então quer dizer que você precisa ter um mestrado em física só para criar um game tipo Pong? Não necessariamente (não sei quanto a vocês, mas eu não tenho). Em primeiro lugar, falando de jogos simples, geralmente o máximo necessário é uma biblioteca gráfica e simples variáveis numéricas para manipular as interações físicas de acordo com o que se quer.
E mesmo quando for conveniente usar os tais motores físicos que simulam corpos rígidos, é mais proveitoso não se ater muito à realidade e usar suas próprias configurações. Verdade seja dita, apesar dos avanços no realismo em jogos, há limites até onde podemos chegar — afinal, ninguém quer "jogar" uma exata réplica do cotidiano. Claro que também não dá para ignorar a física e fazer coisas como esta:
Um motor de física encapsula a maior parte da complexidade ao redor das interações físicas e deixa o programador responsável por ajustar os parâmetros de forma coerente e decidir o que fazer com os eventos. Mas nas demais aplicações, que requerem um grau mais apurado de realismo, aí sim vai ser preciso usar seu arsenal de conhecimento físico. Um exemplo deste tipo é o Phun, introduzido em um post anterior, onde expus alguns simuladores gratuitos. Jogos de simulação também se encaixam aqui.
Fontes
Computer simulation
Rigid Body Simulation I — Unconstrained Rigid Body Dynamics
Simulação Física de Corpos Rígidos com Detecção de Colisões
Introdução a Física nos Jogos
Soft body dynamics



0 comentários:
Postar um comentário