X3DAudio — omówienie
X3DAudio to interfejs API używany z XAudio2 do pozycjonowania dźwięku w przestrzeni 3D, aby stworzyć iluzję dźwięku pochodzącego z punktu w przestrzeni względem położenia kamery. W szczególności tytuły, które zawierają sceny 3D, powinny używać X3DAudio. Dźwięki, które nie wymagają pozycjonowania 3D, takie jak ścieżki dźwiękowe ani niepozycyjne dźwięki otoczenia, mogą całkowicie pominąć X3DAudio.
Odbiorniki i emitery
Aby zarządzać dźwiękami w przestrzeni 3D, X3DAudio wykorzystuje koncepcje odbiorników i emiterów. Odbiorniki i emitenty reprezentują pozycję, z której słyszane są dźwięki 3D, oraz punkt, z którego te dźwięki pochodzą.
- Odbiornik jest definiowany jako punkt w przestrzeni i orientacji. Jest to pozycja, w której dźwięk jest słyszany. Położenie i orientacja odbiornika są zwykle takie same jak położenie i orientacja aparatu. To prawda, czy tytuł używa widoku perspektywy osoby pierwszej lub trzeciej osoby. Pozycja odbiornika jest wyrażona we współrzędnych świata. Należy pamiętać, że to pozycja odbiornika względna do emitera determinuje obliczanie końcowych głośności głośników.
- Emiter jest definiowany jako jeden (lub więcej) punkt w przestrzeni, z którego pochodzi dźwięk . Położenie emitera może znajdować się w dowolnym miejscu w przestrzeni 3D. Podobnie jak odbiornik, pozycja emitera jest wyrażana we współrzędnych świata. Jest to pozycja emitera względem odbiornika, która określa sposób obliczania końcowej głośności głośników.
- X3DAudio używa współrzędnych leworęcznych. Aby używać z układem współrzędnych praworęcznych, deweloperzy muszą negować człon .z w OrientTop, OrientFront, Position i Velocity w X3DAUDIO_LISTENER oraz X3DAUDIO_EMITTER.
Oprócz pozycji odbiorniki i emitery mogą obejmować szybkość. W przeciwieństwie do silnika renderującego 3D, X3DAudio używa tylko prędkości do obliczania efektów Dopplera (nie jest używana do obliczania położenia).
Aby uzyskać więcej informacji na temat odbiorników i emiterów, zobacz tematy referencyjne dotyczące struktury X3DAUDIO_LISTENER i X3DAUDIO_EMITTER.
Korzystanie z X3DAudio z XAudio2
Dla wszystkich interakcji między X3DAudio i XAudio2 użyj następujących funkcji X3DAudio.
-
Wywołaj funkcję X3DAudioInitialize, aby zainicjować X3DAudio. Zazwyczaj wystarczy wywołać X3DAudioInitialize raz w okresie istnienia gry, chyba że konfiguracja głośnika zostanie zmieniona.
-
Po zainicjowaniu X3DAudio można określić głośność i inne wartości dla danego dźwięku, przekazując emiter dźwięku i odbiornik do funkcji X3DAudioCalculate. Wartości obliczane przez X3DAudioCalculate można następnie zastosować do głosów XAudio2 lub efektów, zgodnie z flagami przekazanymi do funkcji. Wartości głośności i pitchu obliczane przez X3DAudio można zastosować do głosu za pomocą IXAudio2Voice::SetOutputMatrix i IXAudio2SourceVoice::SetFrequencyRatio metod. Inne wartości obliczane przez X3DAudio należy zastosować do efektu reverb przy użyciu metody IXAudio2Voice::SetEffectParameters.
Aby zapoznać się z przykładem krok po kroku użycia X3DAudio z XAudio2, zobacz Jak zintegrować X3DAudio z XAudio2.
Tematy pokrewne