Um programa deve receber entrada, processá-lo e fornecer saída. Então, o que exatamente um mecanismo de física toma como entrada e fornece como saída?
Um programa deve receber entrada, processá-lo e fornecer saída. Então, o que exatamente um mecanismo de física toma como entrada e fornece como saída?
Respostas:
Um mecanismo de física é responsável por simular os movimentos e a reação dos objetos como se estivessem sob as restrições da física do mundo real (ou semelhante ao mundo real). Devo observar que geralmente não é um programa independente, mas um componente de um programa maior e mais interessante (como um jogo).
A entrada para uma simulação de física geralmente é uma coleção de objetos ("corpos") com propriedades (como sejam rígidas ou moles, suas massas, formas etc.), bem como a coleção de forças que atuam sobre esses corpos.
Com base nessa entrada, o mecanismo simula posições e orientações atualizadas dos corpos e os aplica ("saídas"). Geralmente, quando os objetos colidem ou se sobrepõem, isso é incluído na saída de uma etapa de simulação na forma de um retorno de chamada no qual o código do cliente pode ser conectado para lidar com a lógica de jogo específica relevante para a colisão.
A entrada de velocidade, massa e tempo, a saída são novas velocidades. Às vezes, o momento de rotação / angular também é uma entrada e uma saída.
Essencialmente, os motores de física tentam simular os efeitos da gravidade e das colisões. Para melhores mecanismos de física, isso significa que eles incluem deformação permanente e temporária de objetos, incluindo a divisão de objetos em vários objetos e o momento angular dos objetos. Idealmente, eles também simulariam o estresse, por exemplo, quantos caminhões podem atravessar a ponte até que ela desmorone, mas isso é muito raro. Outras variáveis de simulação, como a resistência do ar, também contariam como um mecanismo de física, mas até onde eu sei, elas ainda não entraram em nenhum jogo.
A maioria dos mecanismos de física é especializada em algum grau e simulará a física a um ponto necessário para o jogo. Os motores de física para jogos de carros geralmente são bem diferentes dos motores de física para atiradores em 3D. E o mecanismo de física de um jogo de golfe pode ter cálculos excessivos das interações da bola de golfe e das folhas individuais da grama, enquanto falta completamente o manuseio de colisões de alta velocidade e deformação de um carro (caso seja atingido por uma bola de golfe) .
Normalmente, um mecanismo de física é usado para fazer com que um objeto em um jogo se comporte de maneira realista em relação ao ambiente, sem precisar criar animações específicas para todos os cenários possíveis.
Especificamente, um mecanismo de física pega um modelo com um conjunto de propriedades (massa, juntas, etc.) e o torna no jogo de acordo com um conjunto de parâmetros.
Um exemplo inicial disso foram os motores raggdoll (por exemplo, na Unreal), que modelavam a maneira como corpos frágeis caíam degraus etc.
Na tecnologia atual, os mecanismos de física costumam ser intimamente integrados em um pacote geral de design de jogo, juntamente com a IA, a interface do usuário no jogo, a geração de cenas etc.
Você certamente poderia argumentar que os mecanismos de física remontam ao início do design de jogos, por exemplo, o pong pode ser considerado um mecanismo de física bruto. No entanto, o ponto principal é que um mecanismo de física é capaz de gerar pontos de animação em tempo real com base em um conjunto de parâmetros, em vez de apenas usar sequências de animação predeterminadas de captura de movimento ou animação manual.
Como mencionado em outras respostas, em algumas classes ou jogos, como condução ou simulação de vôo, o mecanismo de física pode ser fundamental para o jogo e, como tal, será a principal entrada para a animação na tela. Embora normalmente o termo seja usado para uma ferramenta de uso geral que possa ser aplicada a uma variedade de situações sem exigir conhecimento muito específico ou análise do contexto em questão por parte do desenvolvedor, em vez de um simulador muito específico construído a partir do solo para uma aplicação específica.
Um mecanismo de física é responsável por simular o movimento de objetos no "mundo" (o que isso significa no contexto do mecanismo). Atualmente, a maioria dos mecanismos de física usa a mecânica newtoniana para fazer isso, pois eles são relativamente simples de simular e "precisos o suficiente" para a maioria dos propósitos, a menos que você esteja fazendo um sim espacial.
Em teoria, um mecanismo físico "puro" precisaria de três entradas:
Levando em consideração a inércia e as forças, o mecanismo move os objetos. A saída do mecanismo de física é simplesmente o novo estado do "mundo" , que o jogo pode ler e modificar conforme necessário.
Na prática, os mecanismos de física não são necessariamente tão "puros" . Os objetos precisam ser criados e destruídos, e às vezes precisam ser movidos de maneiras que as leis do mecanismo de física não permitiriam. Às vezes, isso pode ser feito fora do mecanismo, mas às vezes é feito dentro e, para fazer isso, o mecanismo precisa de mais entradas. Mas as três entradas mencionadas acima cobrem o básico.
Por exemplo, digamos que você precisava mover um personagem em um jogo usando um joystick. Se você não estiver usando um mecanismo de física, isso é bastante direto: quando você vê que o usuário está movendo o joystick, você move o objeto de acordo. Com um mecanismo de física, você não move o objeto diretamente: aplica-lhe uma força, correspondente à direção em que deseja que o objeto vá, e deixa o mecanismo manipular o movimento real .
Qual é a diferença? Mesmo que não haja mais nada no mundo, é improvável que o objeto se mova da mesma maneira, porque o mecanismo de física lidará com coisas como aceleração realista. Mas também é possível que outras forças possam estar atuando no objeto ao mesmo tempo, assim como inércia, e o mecanismo levará todas elas em consideração . Por exemplo, se você aplicar uma força para o norte no objeto, mas alguma outra coisa estiver aplicando uma força para o oeste (ou o objeto já estiver se movendo para o oeste e nada estiver diminuindo a velocidade), o mecanismo moverá o objeto para o noroeste.
É isso que um mecanismo de física recebe: ele mantém o controle de objetos, suas posições e velocidades e as forças que atuam sobre eles. Graças às leis da mecânica, ele pode até criar algumas forças por conta própria, para lidar automaticamente com coisas como colisões, fricção e gravidade, tudo sem você, o desenvolvedor do jogo, ter que fazer algo extra.
Um mecanismo de física é basicamente um simulador de corpos físicos.
Ele permite que você crie um corpo (ou vários) especificando suas propriedades físicas, como massa, tamanho, densidade, etc.
Também permite definir as propriedades do mundo da física em que a simulação ocorre (por exemplo, gravidade).
Finalmente, permite aplicar forças ou criar articulações entre os corpos.
Depois de definir todas essas coisas, você pode iniciar a simulação e o Mecanismo de Física informará onde cada corpo será colocado no próximo passo temporal (que geralmente corresponde ao próximo quadro do seu jogo). E o próximo, e assim por diante ...
Você vê os Sprites se movendo na tela, porque todo quadro que o Game Engine pede ao Physics Engine
Onde está esse corpo agora?
e o Game Engine atualiza a representação gráfica de acordo.
Normalmente, gosto de ver o Physics Engine como uma ferramenta para aplicar as leis da física de maneira declarativa .
De fato, ao invés de escrever um código para descrever quais cálculos devem ser realizados para determinar onde um corpo estará no próximo passo temporal, eu simplesmente descrevo o mundo da física definindo os atributos dos corpos (e do próprio mundo da física) e deixo o mecanismo da física responder essa pergunta para mim.