Mecanismo de som 3D perfeito para a física (ou em algum lugar próximo) [fechado]

11

Sou iniciante em programação de jogos, embora tenha alguns anos de experiência em desenvolvimento de console / web. Meu problema não é tanto que não consigo encontrar o que estou procurando, mas não tenho a terminologia para realizar uma pesquisa bem-sucedida.

Estou procurando um mecanismo de física que tenha grande foco nos sons. Na verdade, eu não me importo com mais nada. O que quero dizer é melhor explicado por um exemplo:

Suponha um jogo do tipo 1ª pessoa. Você está de frente para o norte, e alguém em algum lugar ao seu redor joga uma flauta para você (não importa o absurdo da situação). A flauta gira enquanto está a caminho, emitindo sons através dos orifícios. Há um vento de, 5 nós ao sul.

Eu imagino que um mecanismo de física seja capaz de calcular a trajetória da flauta, bem como a direção que ela toma depois de atingida. O que eu quero é que o mecanismo de física calcule os sons precisos que ele emitirá, da perspectiva de qualquer ouvinte.

Existe algum mecanismo desse tipo? Se houver vários, qual seria o melhor para o exemplo acima?

Félix Saparelli
fonte

Respostas:

10

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.

deft_code
fonte
Bem, toda a ideia do jogo gira em torno de objetos em movimento produzindo som. O exemplo dado é complexo demais de propósito, no entanto, a ideia do jogo envolve objetos que soam realisticamente em movimento.
Félix Saparelli
A maioria dos parâmetros seria realmente controlada: considere uma sala cúbica fechada (selada) com paredes de um material específico (cujas propriedades eu defino), temperatura do ar, pressão, umidade etc. são todos controlados. Orelhas são humanas. Eu nem preciso considerar o resto do corpo. De fato, em vez da lista negra, posso especificar exatamente quais parâmetros eu uso e definir (constante) todo o resto. É o meu mundo (virtual): eu o defino como quero.
Félix Saparelli 27/02
Meu argumento foi que a quantidade de esforço que esse mecanismo de áudio exigiria no caso geral não vale a pena. Especialmente quando engenheiros de som talentosos podem falsificar de maneira convincente os efeitos que você precisa. O Doppler é incorporado. O eco, o amortecimento etc. podem ser feitos com a filtragem.
Deft_code
8

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

homebrew
fonte
Coisas interessantes. É isso que eu quero dizer, e isso ainda não foi feito, não me atrapalha. Não pretendo começar um trabalho real (não conceitual) antes de 1-2 anos.
Félix Saparelli
4

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.

O Pato Comunista
fonte
Eu quero um pouco mais do que isso.
Félix Saparelli
1
O que mais você quer? Com a minha sugestão, você pode fazer com que a posição do som mude a cada quadro. Eu acho que estou perdendo alguma coisa.
The Duck Comunista
6
Eu acho que ele quer simular as ondas de ar e outras vibrações para gerar os sons. E com certeza isso é possível, mas nenhum computador (exceto talvez alguns clusters de supercomputadores) poderia calcular isso para qualquer tamanho de espaço útil em tempo real; portanto, não, se você quer dizer que não existe tal coisa (nem existe uma necessidade real, use o mecanismo de física e os dados de colisão lidos para reproduzir uma amostra apropriada estão "próximos o suficiente").
Elva
3
Se você deseja obter esse avanço, não apenas existe a) Como o Yourdoom disse, nenhuma maneira que um computador normal possa fazer isso eb) ninguém seria capaz de dizer a diferença.
The Duck Comunista
3
Ainda há muito o que os jogos modernos fazem (e APIs de nível superior como o FMOD fornecem) que o OpenAL não pode fazer, ou pelo menos não faz da caixa - como efetores baseados em volume (geométricos), que podem ser conectados adicionalmente portais para simular a passagem de áudio por várias salas. Não é comum, mas está feito, e você pode dizer a diferença.
4

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

Jason Cobb
fonte
Eu posso fingir muito. Apenas ... muito menos que os videogames contemporâneos. Qual é o ponto: não estou criando um videogame, mas um jogo de áudio. Meio.
Félix Saparelli
3

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.

Bob Somers
fonte
2

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.

NoMoreMrNiceGaius
fonte
0

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:

  • Essa sala é grande o suficiente para haver reverberação perceptível?
  • Ou os móveis da sala absorvem a maior parte do som?
  • Quando estiver ao ar livre, devo ouvir ecos de uma colina distante? Um prédio próximo?
  • O som se dissipa por longas distâncias?
  • A fonte de som está ocluída (oculta) do ouvinte?
  • Em caso afirmativo, existem rotas alternativas que as ondas sonoras podem usar para alcançar o ouvinte? Talvez por debaixo de uma porta fechada, em torno de um canto do corredor ou através de uma abertura?

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!

Lakulish Antani
fonte
0

Ao ler sua pergunta, posso traduzi-la de duas maneiras.

  1. Existe um mecanismo que pode criar sons com base em simulações físicas? Como o ar soprando através de uma palheta ou um martelo atingindo uma corda?

No jogo? não que eu tenha ouvido falar.

  1. Existe um mecanismo que reproduz sons pré-existentes, mas os modifica com base em informações físicas, como a distância do microfone, para simular uma "experiência de som surround"?

Sim! eles são chamados de "mecanismos de som 3D", um conhecido é o OpenAL .

Nathan Goings
fonte