X3DAudio – áttekintés
Az X3DAudio egy API, amely XAudio2 használatával 3D térben helyezi el a hangot, hogy a kamera helyzetéhez képest egy térbeli pontból érkező hang illúzióját keltse. A 3D-s jeleneteket tartalmazó címek különösen az X3DAudio-t szeretnék használni. A térhatású elhelyezést nem igénylő hangok, például a hangsávok vagy a nem elhelyezett környezeti hangok teljesen megkerülhetik az X3DAudio-t.
Figyelők és kibocsátók
A hangok 3D térben való kezeléséhez az X3DAudio a figyelők és emitterekfogalmait használja. A figyelők és a hangsugárzók a 3D-s hangok meghallgatásának helyzetét képviselik, és azt a pontot, ahonnan ezek a hangok származnak.
- A figyelő egy térbeli pont és egy tájolás kombinációjaként van meghatározva. Ez az a helyzet, ahol a hang hallható. A figyelő helyzete és tájolása általában megegyezik a kamera helyzetével és tájolásával. Ez igaz arra, hogy egy cím első vagy harmadik személy perspektíváját használja-e. A figyelő pozíciója világkoordinátákban van kifejezve. Fontos megjegyezni, hogy a hallgató pozíciója relatívan a emitterhez határozza meg, hogyan kell kiszámítani a végső hangszóró hangerőt.
- Az emitter egy (vagy több) pontként van definiálva a térben, ahonnan egy hang származik. Az emitter pozíciója 3D térben bárhol lehet. A figyelőkhez hasonlóan az emitter pozíciója is világkoordinátákban van kifejezve. Az emitter pozíciója relatív a hallgatóhoz, amely meghatározza, hogyan számítják ki a végső hangszórók hangerejét.
- Az X3DAudio balkezes koordinátákat használ. Ahhoz, hogy jobbkezes koordinátákkal használják, a fejlesztőknek az OrientTop, az OrientFront, a Position és a Velocity .z elemét kell negálniuk az X3DAUDIO_LISTENER és az X3DAUDIO_EMITTER esetében.
A pozíció mellett a figyelők és a kibocsátók is tartalmazhatnak sebességet. A 3D renderelő motortól eltérően az X3DAudio csak a sebességet használja a Doppler-effektusok kiszámításához (a pozíció kiszámítására nem használatos).
A figyelőkkel és a kibocsátókkal kapcsolatos további részletekért tekintse meg a X3DAUDIO_LISTENER és X3DAUDIO_EMITTER struktúrahivatkozási témaköröket.
Az X3DAudio és az XAudio2 használata
Az X3DAudio és az XAudio2 közötti összes interakcióhoz használja az alábbi X3DAudio függvényeket.
-
Hívja meg a X3DAudioInitialize függvényt az X3DAudio inicializálásához. Általában csak egyszer kell meghívnia X3DAudioInitialize egy játék élettartama során, kivéve, ha a hangszóró konfigurációja módosul.
-
Az X3DAudio inicializálása után az adott hang hangerejét és egyéb értékeit úgy határozhatja meg, hogy átadja a hang kibocsátóját és a figyelőt a X3DAudioCalculate függvénynek. A X3DAudioCalculate által kiszámított értékek alkalmazhatók az XAudio2-hangokra vagy -effektusokra a függvénynek átadott jelzőknek megfelelően. Az X3DAudio által kiszámított hangerő- és hangmagasságértékeket az IXAudio2Voice::SetOutputMatrix és IXAudio2SourceVoice::SetFrequencyRatio metódusokkal alkalmazhatja. Az X3DAudio által kiszámított egyéb értékeket reverb effektusra kell alkalmazni, a IXAudio2Voice::SetEffectParameters metódus használatával.
Az X3DAudio-nak az XAudio2-vel való használatának lépésről-lépésre történő példájáért lásd a Útmutató: Az X3DAudio integrálása az XAudio2-vel.
Kapcsolódó témakörök