Panoramica di X3DAudio
X3DAudio è un'API usata con XAudio2 per posizionare il suono nello spazio 3D per creare l'illusione del suono proveniente da un punto nello spazio rispetto alla posizione della fotocamera. In particolare, i titoli che presentano scene 3D vogliono usare X3DAudio. I suoni che non richiedono la posizione 3D, ad esempio colonne sonore o suoni di ambiente non posizionati, possono ignorare completamente X3DAudio.
Listener ed emettitori
Per gestire i suoni nello spazio 3D, X3DAudio usa i concetti dei listener e degli emettitori. I listener e gli emettitori rappresentano la posizione di qualsiasi suono 3D e il punto da cui tali suoni provengono.
- Un listener è definito come punto nello spazio e un orientamento. È la posizione in cui viene sentito il suono. La posizione e l'orientamento del listener in genere è uguale alla posizione e all'orientamento della fotocamera. Questo è vero se un titolo usa una vista di prima persona o di terza persona. La posizione del listener è espressa nelle coordinate mondiali. È importante notare che è la posizione del listener rispetto a un emittente che determina come calcolare i volumi finali dell'altoparlante.
- Un emettitore è definito come uno o più punti nello spazio da cui proviene un suono. La posizione dell'emittente può essere ovunque nello spazio 3D. Come un listener, la posizione di un emittente è espressa nelle coordinate del mondo. Si tratta della posizione dell'emittente rispetto al listener che determina il modo in cui vengono calcolati i volumi finali dell'altoparlante.
- X3DAudio usa le coordinate a sinistra. Per usare con coordinate di destra, gli sviluppatori devono negare l'elemento .z dell'elemento OrientTop, OrientFront, Position e Velocità dei membri di X3DAUDIO_LISTENER e X3DAUDIO_EMITTER.
Oltre alla posizione, i listener e gli emettitori possono includere velocità. A differenza di un motore di rendering 3D, X3DAudio usa solo la velocità per calcolare gli effetti Doppler (non viene usato per calcolare la posizione).
Per altre informazioni sui listener e sugli emettitori, vedere gli argomenti di riferimento sulla struttura X3DAUDIO_LISTENER e X3DAUDIO_EMITTER .
Uso di X3DAudio con XAudio2
Per tutte le interazioni tra X3DAudio e XAudio2, usare le funzioni X3DAudio seguenti.
-
Chiamare la funzione X3DAudioInitialize per inizializzare X3DAudio . In genere, è necessario chiamare X3DAudioInitialize una volta nella durata di un gioco, a meno che non venga modificata la configurazione dell'altoparlante.
-
Dopo aver inizializzato X3DAudio, è possibile determinare il volume e altri valori per un determinato suono passando l'emittente del suono e il listener alla funzione X3DAudioCalculate . I valori calcolati da X3DAudioCalculate possono quindi essere applicati a voci o effetti XAudio2, come appropriato per i flag passati alla funzione. È possibile applicare valori di volume e pitch calcolati da X3DAudio a una voce con i metodi IXAudio2Voice::SetOutputMatrix e IXAudio2SourceVoice::SetFrequencyRatio. Altri valori calcolati da X3DAudio devono essere applicati a un effetto reverb usando il metodo IXAudio2Voice::SetEffectParameters .
Per un esempio dettagliato dell'uso di X3DAudio con XAudio2, vedere Procedura: Integrare X3DAudio con XAudio
Argomenti correlati