Motore audio 3d perfetto per la fisica (o da qualche parte vicino) [chiuso]


11

Sono nuovo nella programmazione di giochi, anche se ho alcuni anni di esperienza nello sviluppo di console / web. Il mio problema non è tanto che non riesco a trovare quello che sto cercando, è solo che non ho la terminologia per eseguire effettivamente una ricerca di successo.

Sto cercando un motore fisico che si concentri molto sui suoni. In realtà, non mi interessa per niente altro. Quello che voglio dire è meglio spiegato da un esempio:

Supponiamo un gioco di tipo in prima persona. Sei rivolto a nord e qualcuno da qualche parte intorno a te ti lancia un flauto (non importa l'assurdità della situazione). Il flauto gira mentre è in viaggio, emettendo suoni attraverso i suoi buchi. C'è un vento di dire, 5 nodi a sud.

Immagino che un motore fisico sarà in grado di calcolare la traiettoria del flauto, nonché la direzione che prende dopo che colpisce. Quello che voglio è che il motore fisico calcoli i suoni precisi che produrrà, dal punto di vista di ogni ascoltatore.

Esiste un tale motore? Se ce ne sono diversi, quale sarebbe il migliore per l'esempio sopra?

Risposte:


10

Stai facendo la domanda sbagliata. Stai commettendo l'errore che fanno molti nuovi programmatori di giochi. I giochi non sono simulazioni perfette, non sono nemmeno vicini. I giochi simulano quanto basta per essere divertenti / interessanti. Tutto il resto è falso.

Caso in questione:
World of Goo: simula massa, resistenza alla trazione ed elasticità. Il resto è falso perché non aggiunge la sensazione del gioco. Ad esempio, non simula la gravità. Tutti gli oggetti accelerano verso il basso con forza costante. La fanciullezza è falsa. I palloncini si tirano su con una forza costante e anche le palle appiccicose sott'acqua subiscono una forza verso l'alto costante. Tutto funziona alla grande per il gioco. Si romperà comunque se provassi a costruire un ascensore spaziale usando il motore fisico di World of Goo.

Immaginiamo un motore sonoro basato sulla fisica quasi perfetto. Che dire degli effetti ambientali? È il flauto in una grotta o in un campo. Il motore fornisce un set predefinito di ambienti (quanti?) O lo capisce calcolando la topografia fisica effettiva (sì, giusto)? Il giocatore ha orecchie direzionali (ala umana) o solo fori per le orecchie (ala delfino o alieno) o multidirezionali come un animale? L'aria è calda? Quanto è umido. Questo elenco può rapidamente sfuggire al controllo.

Ora supponiamo per un momento che sia esistito un vero motore sonoro di fisica. Vorresti davvero usarlo per creare un gioco? Quanto tempo impiegheresti a definire il suono del flauto che vola nell'aria. Quanti parametri devi ottenere nel modo giusto (100?).

Quello che avresti dovuto chiedere è:
come posso simulare il suono di un flauto quando vola oltre il lettore?

OpenAL può fare quello che vuoi.

  • Ascoltatore direzionale
  • Sorgenti sonore direzionali
  • velocità della sorgente ed effetti doppler.

Suggerirei di avere un effetto sonoro ripetuto di un flauto rotante. Inserire la posizione del giocatore e la posizione / velocità del flauto. Salta il materiale direzionale per ora.
È possibile registrare il suono che proviene da ciascuna estremità di un flauto mentre l'aria scorre e fare in modo che il flauto utilizzi due fonti sonore. Ma dubito che varrebbe la pena, a meno che l'intera meccanica di gioco non ruotasse attorno a flauti lanciati e rotanti.


Bene, l'intera idea di gioco ruota attorno a oggetti in movimento che producono suono. L'esempio fornito è intenzionalmente troppo complesso, tuttavia l'idea di gioco coinvolge oggetti dal suono realistico in movimento.
Félix Saparelli,

La maggior parte dei parametri verrebbe effettivamente controllata: si consideri una stanza cubica chiusa (sigillata) con pareti di un materiale particolare (di cui definisco le proprietà), temperatura dell'aria, pressione, umidità, ecc. Le orecchie sono umane. Non ho nemmeno bisogno di considerare il resto del corpo. In effetti, invece della lista nera, posso specificare esattamente quali parametri utilizzo e definire (costante) tutto il resto. È il mio mondo (virtuale): lo definisco come voglio che fosse.
Félix Saparelli,

Il mio punto era che la quantità di sforzo che un tale motore audio richiederebbe nel caso generale non ne vale la pena. Soprattutto quando ingegneri del suono di talento possono falsificare in modo molto convincente qualsiasi effetto di cui hai bisogno. Doppler è integrato. L'eco, lo smorzamento, ecc. Possono essere fatti con il filtraggio.
deft_code

8

Vuoi la modellazione fisica? Prova il Synthesis Toolkit:

https://ccrma.stanford.edu/software/stk/classstk_1_1Flute.html .

Dovrai scrivere il codice della colla che imposta tu stesso la velocità / ampiezza del vento.

Quello che stai chiedendo non è stato ancora davvero inventato. Ci stiamo avvicinando però- dai un'occhiata, l'ho visto l'altro giorno:

http://www.physorg.com/news198351307.html


Roba interessante Questo è ciò che intendo, e non essere ancora fatto non mi ostacola. Non ho intenzione di iniziare il lavoro effettivo (non concettuale) prima di 1-2 anni.
Félix Saparelli,

4

Dubito che troverai un motore fisico-audio. Ciò che è più probabile è usare qualsiasi motore fisico che ti piace (come Bullet ) e usare OpenAL per il suono. Calcola la posizione del flauto e usala come posizione della Sorgente.


Voglio un po 'di più però.
Félix Saparelli,

1
Cosa vuoi di più? Con il mio consiglio, puoi far cambiare la posizione del suono ad ogni fotogramma. Penso che mi manchi qualcosa.
Il comunista Duck il

6
Penso che significhi simulare le onde d'aria e altre vibrazioni per generare i suoni. E certo che è possibile, ma nessun computer (tranne forse alcuni cluster supercomputer) potrebbe calcolarlo per qualsiasi spazio di dimensioni utili in tempo reale, quindi no, se vuoi dire che allora non esiste tale cosa (né c'è alcuna reale necessità, usa il motore fisico e leggere i dati di collisione per riprodurre un campione appropriato è "abbastanza vicino").
Elva,

3
Se vuoi ottenere questo avanzato, non solo c'è a) Come ha detto Yourdoom, nessun modo in cui un normale computer potrebbe farlo, e b) nessuno sarebbe in grado di dire la differenza.
L'anatra comunista il

3
C'è ancora molto che i giochi moderni fanno (e le API di livello superiore come FMOD forniscono) che OpenAL non può fare, o almeno non lo fa immediatamente - come gli effettori (geometrici) basati sul volume, che possono essere agganciati ulteriormente ai portali per simulare l'audio che passa attraverso più stanze. Non è comune, ma è fatto e puoi dire la differenza.

4

Phya è una libreria di sintesi audio basata su "campionamento fisico" che può essere guidata da un motore di fisica del gioco. (La pallottola è stata usata negli esempi)

http://www.zenprobe.com/phya/

Non sono sicuro di quale sia l'ultimo, l'ultimo aggiornamento del sito è finito un anno fa.

Non è molto orientato alla modellizzazione della risonanza dell'aria in un volume, ma potrebbe forse essere un buon esempio di come guidare la sintesi audio in tempo reale dalla fisica.

Penso che questo non debba essere un'impresa incredibilmente costosa, il problema dichiarato è del tutto deterministico e dovrebbe essere realizzabile su hardware moderno. (almeno a un livello adatto per un prodotto di intrattenimento / apprendimento.)

La domanda a cui rispondere è quanto devi simulare completamente e quanto puoi falsificare? Per l'audio che ha solo una sorta di modulazione del suono in tempo reale in un modo ragionevolmente convincente ti ottiene molto senza dover modellare le vibrazioni acustiche fino alla molecola.

Forse questo aiuta. Bella domanda, a proposito.

-j


Posso fingere molto. Solo ... molto meno dei videogiochi contemporanei. Qual è il punto: non sto creando un videogioco, ma un gioco audio. Tipo.
Félix Saparelli,

3

Effettuare una simulazione accurata della fisica coinvolta qui sarebbe sostanzialmente più complesso (e computazionalmente costoso) di un sistema di fisica ordinaria come Havok o Bullet. Un sistema fisico tradizionale è ottimizzato per corpi rigidi e corpi morbidi, entrambi i quali sono limitati nella loro complessità della maglia per motivi di velocità.

Il suono, d'altra parte, è una propagazione delle onde attraverso l'aria, e le frequenze generate da qualcosa come il tuo esempio dipendono da tonnellate e tonnellate di proprietà. Di che materiale è fatto? Quale modello matematico dovremmo usare per le particelle d'aria che interagiscono con quel materiale? Se è una forma di tubo, quali sono le dimensioni del tubo? (Questo determina la frequenza di risonanza.) Ecc., Ecc.

Inoltre, devi eseguire una simulazione di particelle piuttosto sofisticata per modellare l'aria, nonché estrarre onde di movimenti di particelle che sono essenzialmente le onde sonore che colpiscono i tuoi timpani. E non menzioniamo nemmeno i timpani, perché anche la risonanza delle onde nel condotto uditivo influisce su ciò che senti.

Tutto sommato, questa è troppa simulazione per l'esecuzione di un gioco attuale, soprattutto se hai qualche speranza di un frame rate interattivo. Come notato da deft_code, i giochi sono raramente simulazioni accurate, ma piuttosto fasullemente gloriose. Il modo migliore per avvicinarsi a questo sarebbe probabilmente iniziare con un ampio set di campioni audio e iniziare a far funzionare le cose attraverso un DSP fino a quando non avrai una comprensione di come puoi influenzare l'effetto di quei suoni. I DSP sono decisamente abbastanza veloci per i giochi in tempo reale, e se il suono sarebbe un componente importante allora ha senso dedicare una buona parte del tempo del tuo frame all'elaborazione del suono.

tl; dr: la simulazione accurata è probabilmente fuori discussione per molti anni a venire. I grandi giochi lo fingono. Con un set di campioni abbastanza grande e una regolazione DSP sufficiente, probabilmente puoi anche fingere.


2

Controlla il nostro approccio.

http://dsp.agh.edu.pl/en:research:rayav

La libreria sviluppata utilizza il beamtracing per fornire all'utente un'auralizzazione audio realistica. Tutti gli effetti audio sono calcolati in base alla geometria effettiva di un determinato livello di gioco e alle sue proprietà acustiche (materiali acustici, attenuazione dell'aria). Il suono cambia dinamicamente insieme al movimento del personaggio del gioco e alle fonti sonore. L'algoritmo di creazione del percorso sonoro supporta fenomeni come riflessi speculari, riflessi diffusi e diffrazione dei bordi, mentre l'elaborazione audio supporta il filtraggio del segnale (modellamento dello scarico dell'aria, impatto della riflessione / diffrazione e così via), la modellazione degli effetti Doppler e gli effetti spaziali. Infine, il suono direzionale viene implementato usando l'HRTF per ciascun percorso sonoro.


0

Mi rendo conto che questa è una vecchia domanda, ma le cose sono andate avanti negli ultimi due anni e quello che stai descrivendo sta diventando sempre più fattibile, a livello computazionale.

Strumenti come Synthesis Toolkit sono usati per rispondere al seguente tipo di domanda: "Il mio motore fisico mi ha detto che il flauto vibra in questo modo. Quale nota produce?"

C'è un'altra domanda importante a cui rispondere, però: "Come suona questa nota dalla posizione dell'ascoltatore?"

È un'idea sbagliata comune che le API audio come OpenAL si occupino di questo. In realtà, tutto ciò che fanno è ciò che viene chiamato audio posizionale . Non modellano la propagazione del suono: le interazioni tra le onde sonore e l'ambiente. La propagazione del suono comporta la risposta a domande come:

  • Questa stanza è abbastanza grande da consentire un riverbero evidente?
  • O i mobili nella stanza assorbono la maggior parte del suono?
  • Quando sono in piedi all'aperto, dovrei sentire echi da una collina lontana? Un edificio vicino?
  • Il suono si dissipa su lunghe distanze?
  • La sorgente sonora è occlusa (nascosta) all'ascoltatore?
  • In tal caso, esistono percorsi alternativi che le onde sonore possono utilizzare per raggiungere l'ascoltatore? Forse da sotto una porta chiusa, dietro un angolo del corridoio o attraverso uno sfiato?

Phonon è un motore audio-fisico che risponde a queste domande. (Informativa completa: sono coinvolto nello sviluppo di Phonon.) Con Phonon, l'utente deve specificare una serie molto piccola di parametri (coefficienti di assorbimento e di dispersione). Phonon esegue quindi il calcolo sufficiente per essere in grado di ricreare in modo convincente gli effetti di propagazione del suono per l'ascoltatore.

Phonon è attualmente disponibile come plug-in per Unity. Oltre a PC e dispositivi mobili, Phonon può anche funzionare su piattaforme VR come Oculus Rift, e anche qui fa una notevole differenza.

Spero che questo ti aiuti!


0

Quando leggo la tua domanda, posso tradurla in due modi.

  1. Esiste un motore in grado di creare suoni basati su simulazioni fisiche? Come l'aria che soffia su una canna o un martello che colpisce una corda?

Nel gioco? non di cui ho sentito parlare.

  1. Esiste un motore che riproduce suoni preesistenti ma li modifica in base a informazioni fisiche come la distanza dal microfono per simulare una "esperienza di suono surround"?

Sì! sono chiamati "motori sonori 3D", un noto è OpenAL .

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.