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 il posizionamento 3D, ad esempio colonne sonore o suoni ambientali non posizionati, possono ignorare completamente X3DAudio.
Listenatori ed emettitori
Per gestire i suoni nello spazio 3D, X3DAudio utilizza i concetti di ascoltatori e emettitori. I listener e gli emettitori rappresentano la posizione di qualsiasi suono 3D e il punto da cui hanno origine tali suoni.
- Un ascoltatore viene definito come un punto nello spazio e un orientamento. È la posizione in cui il suono viene percepito. La posizione e l'orientamento del listener in genere corrispondono alla posizione e all'orientamento della fotocamera. Questo vale se un titolo usa una vista prospettica di prima persona o terza persona. La posizione del listener è espressa nelle coordinate del mondo. È importante notare che è la posizione del listener relativa a un emettitore che determina come calcolare i volumi finali dell'altoparlante.
- Un emettitore viene definito come uno o più punti nello spazio da cui un suono ha origine. La posizione dell'emettitore può essere ovunque nello spazio 3D. Come un listener, la posizione di un emettitore viene espressa nelle coordinate del mondo. È la posizione dell'emettitore relativo al listener che determina come vengono calcolati i volumi finali dell'altoparlante.
- X3DAudio usa coordinate sinistrorse. Per usare con coordinate destrorse, gli sviluppatori devono negare l'elemento z dei membri OrientTop, OrientFront, Position e Velocity 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 ulteriori dettagli sui listener e sugli emettitori, consultare gli argomenti di riferimento sulle strutture 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 funzioneX3DAudioInitializeper inizializzare X3DAudio. In genere, devi chiamare X3DAudioInitialize una volta nella durata di un gioco, a meno che non venga modificata la configurazione dell'altoparlante.
-
Dopo aver inizializzato X3DAudio, puoi determinare il volume e altri valori per un determinato suono passando l'emettitore del suono e il listener alla funzione X3DAudioCalculate. I valori calcolati da X3DAudioCalculate possono quindi essere applicati alle voci o agli effetti XAudio2 in base alle esigenze dei flag passati alla funzione. È possibile applicare i valori di volume e intonazione 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 riverbero usando il metodo IXAudio2Voice::SetEffectParameters.
Per un esempio dettagliato dell'uso di X3DAudio con XAudio2, vedere Procedura: Integrare X3DAudio con XAudio
Argomenti correlati