Você está fazendo a pergunta errada. Você está cometendo o erro que muitos programadores de jogos novos cometem. Jogos não são simulações perfeitas, eles não são nem próximos. Os jogos simulam apenas o suficiente para serem divertidos / interessantes. Todo o resto está falsificado.
Caso em questão:
World of Goo: simula massa, resistência à tração e elasticidade. O resto é falso, porque não adiciona a sensação do jogo. Por exemplo, não simula a gravidade. Todos os objetos aceleram com força constante. Boyancy é falsificado. Os balões puxam para cima com uma força constante e as bolas embaixo da água também experimentam uma força ascendente constante. Tudo isso funciona muito bem para o jogo. No entanto, seria quebrado se você tentasse fazer um elevador espacial usando o mecanismo de física do World of Goo.
Vamos imaginar um mecanismo de som baseado na física quase perfeito. E os efeitos ambientais? É a flauta em uma caverna ou em um campo. O mecanismo fornece um conjunto predefinido de ambientes (quantos?) Ou calcula a topografia física real (sim, certo)? O jogador tem orelhas direcionais (ala humano) ou apenas orifícios (ala golfinho ou alienígena) ou multidirecionais como um animal? O ar está quente? Quão úmido é isso. Essa lista pode ficar fora de controle rapidamente.
Agora, suponha por um momento que esse verdadeiro mecanismo de som da física existisse. Você realmente gostaria de usá-lo para fazer um jogo? Quanto tempo você levaria para definir o som da flauta voando pelo ar. Quantos parâmetros você precisa para acertar (100's?).
O que você deveria ter perguntado é:
Como posso simular o som de uma flauta quando ela passa pelo player?
O OpenAL pode fazer o que você quiser.
- Ouvinte direcional
- Fontes sonoras direcionais
- velocidades de fonte e efeitos doppler.
Eu sugeriria ter um efeito sonoro repetitivo de uma flauta giratória. Insira a posição do jogador e a posição / velocidade da flauta. Ignore o material direcional por enquanto.
Você pode gravar o som que sai de cada extremidade de uma flauta à medida que o ar flui e fazer com que a flauta use duas fontes de som. Mas duvido que valha a pena o esforço, a menos que toda a mecânica do jogo girasse em torno de flautas jogadas e giratórias.
Você quer modelagem física? Experimente o Synthesis Toolkit:
https://ccrma.stanford.edu/software/stk/classstk_1_1Flute.html .
Você terá que escrever o código da cola que define a velocidade / amplitude do vento.
O que você está pedindo ainda não foi inventado. Estamos chegando perto - veja isso, eu vi outro dia:
http://www.physorg.com/news198351307.html
fonte
Duvido que você encontre um mecanismo de áudio-física. O mais provável é usar qualquer mecanismo de física que você goste (como o Bullet ) e usar o OpenAL como som. Calcule a posição da flauta e use-a como a posição da fonte.
fonte
Phya é uma biblioteca de síntese de áudio de colisão baseada em "amostragem física" que pode ser conduzida por um mecanismo de física de jogos. (Bullet foi usado nos exemplos)
http://www.zenprobe.com/phya/
Não sei qual é a mais recente, a última atualização do site foi feita há mais de um ano.
Não é tão voltado para modelar a ressonância do ar em um volume, mas talvez possa ser um bom exemplo de como conduzir a síntese de áudio em tempo real da física.
Eu acho que isso não precisa ser uma tarefa incrivelmente cara da CPU. O problema declarado é totalmente determinístico e deve ser possível em hardware moderno. (pelo menos até um nível adequado para um produto de entretenimento / aprendizado.)
A pergunta a ser respondida é até que ponto você precisa simular e quanto você pode fingir? Para o áudio, apenas ter algum tipo de modulação do som em tempo real de uma maneira razoavelmente convincente leva você muito sem ter que modelar as vibrações acústicas até a molécula.
Talvez isso ajude. Boa pergunta, aliás.
-j
fonte
Realmente, fazer uma simulação precisa da física envolvida aqui seria substancialmente mais complexa (e computacionalmente cara) do que um sistema físico comum como Havok ou Bullet. Um sistema de física tradicional é otimizado para corpos rígidos e corpos moles, os quais são limitados em sua complexidade de malha por razões de velocidade.
O som, por outro lado, é uma propagação de ondas pelo ar, e as frequências geradas por algo como o seu exemplo dependem de toneladas e toneladas de propriedades. De que material é feito? Que modelo matemático devemos usar para partículas de ar interagindo com esse material? Se for um formato de tubo, quais são as dimensões do tubo? (Isso determina a frequência ressonante.) Etc., etc.
Além disso, você precisa executar uma simulação de partículas bastante sofisticada para modelar o ar, além de extrair ondas de movimentos de partículas que são essencialmente as ondas sonoras que atingem seus tímpanos. E nem vamos mencionar os tímpanos, porque a ressonância das ondas no canal auditivo também afeta o que você ouve.
Em suma, isso é simulação demais para um jogo atual, especialmente se você tem alguma esperança de uma taxa de quadros interativa. Como deft_code observou, os jogos raramente são simulações precisas, mas sim falsamente gloriosas. A melhor maneira de abordar isso provavelmente seria começar com um grande conjunto de amostras de som e começar a executar as coisas através de um DSP até que você tenha uma idéia de como pode impactar o efeito desses sons. Os DSPs são definitivamente rápidos o suficiente para jogos em tempo real e, se o som for um grande componente, faz sentido dedicar uma parte decente do seu tempo de quadro ao processamento do som.
tl; dr: Simulações precisas provavelmente estão fora de questão nos próximos anos. Grandes jogos fingem. Com um conjunto de amostras grande o suficiente e ajustes DSP suficientes, você provavelmente também pode fingir.
fonte
Confira nossa abordagem.
http://dsp.agh.edu.pl/en:research:rayav
A biblioteca desenvolvida utiliza o rastreamento de feixe para fornecer ao usuário uma auralização de áudio realista. Todos os efeitos de áudio são calculados com base na geometria real de um determinado nível de jogo, bem como em suas propriedades acústicas (materiais acústicos, atenuação do ar). O som muda dinamicamente, juntamente com o movimento do personagem do jogo e das fontes sonoras. O algoritmo de criação de caminhos de som suporta fenômenos como reflexões especulares, reflexões difusas e difração de arestas, enquanto o processamento de áudio suporta filtragem de sinais (modelagem de despejo de ar, impacto de reflexão / difração e assim por diante), modelagem de efeitos Doppler e efeitos espaciais. Finalmente, o som direcional é implementado usando HRTF por cada caminho sonoro.
fonte
Sei que essa é uma pergunta antiga, mas as coisas estão progredindo nos últimos dois anos, e o que você está descrevendo está se tornando cada vez mais viável, computacionalmente.
Ferramentas como o Synthesis Toolkit são usadas para responder ao seguinte tipo de pergunta: "Meu mecanismo de física me disse que a flauta está vibrando de tal maneira. Que nota isso produz?"
Há outra questão importante que deve ser respondida, no entanto: "Como esta nota soa da posição do ouvinte?"
É um equívoco comum que APIs de áudio como o OpenAL cuidem disso. De fato, tudo o que eles fazem é o que é chamado de áudio posicional . Eles não modelam a propagação do som: as interações entre as ondas sonoras e o ambiente. A propagação do som envolve responder perguntas como:
Phonon é um mecanismo de áudio-física que responde a essas perguntas. (Divulgação completa: estou envolvido no desenvolvimento do Phonon.) Com o Phonon, o usuário precisa especificar um conjunto muito pequeno de parâmetros (coeficientes de absorção e dispersão). O Phonon executa a computação apenas o suficiente para recriar de forma convincente os efeitos de propagação do som para o ouvinte.
Atualmente, o Phonon está disponível como um plugin para o Unity. Além do PC e do celular, o Phonon também pode ser executado em plataformas de realidade virtual como o Oculus Rift, e também faz uma diferença notável.
Espero que isto ajude!
fonte
Ao ler sua pergunta, posso traduzi-la de duas maneiras.
No jogo? não que eu tenha ouvido falar.
Sim! eles são chamados de "mecanismos de som 3D", um conhecido é o OpenAL .
fonte