Overzicht van X3DAudio
X3DAudio is een API die wordt gebruikt met XAudio2 om geluid in 3D-ruimte te plaatsen om de illusie te creëren van geluid dat afkomstig is van een punt in de ruimte ten opzichte van de positie van de camera. Titels met 3D-scènes willen met name X3DAudio gebruiken. Geluiden die geen 3D-plaatsing vereisen, zoals soundtracks of niet-positionele omgevingsgeluiden, kunnen X3DAudio volledig omzeilen.
Luisteraars en zenders
Voor het beheren van geluiden in 3D-ruimte maakt X3DAudio gebruik van de concepten van listeners en emitters. Listeners en emitters vertegenwoordigen de positie van wat 3D-geluiden horen en het punt van waaruit deze geluiden afkomstig zijn.
- Een listener wordt gedefinieerd als een punt in de ruimte en een oriëntatie. Het is de positie waarop het geluid wordt gehoord. De positie en stand van de listener zijn over het algemeen hetzelfde als de positie en stand van de camera. Dit is waar of een titel een perspectiefweergave van een eerste persoon of een derde persoon gebruikt. De positie van de listener wordt uitgedrukt in wereldcoördinaten. Het is belangrijk te weten dat het de positie van de luisteraar is relatief ten opzichte van een emitter die bepaalt hoe de uiteindelijke luidsprekervolumes berekend moeten worden.
- Een emitter wordt gedefinieerd als een (of meer) punten in de ruimte waaruit een geluid afkomstig is. De positie van de emitter kan zich overal in de 3D-ruimte bevinden. Net als een listener wordt de positie van een emitter uitgedrukt in wereldcoördinaten. Het is de positie van de emitter relatieve aan de listener die bepaalt hoe de uiteindelijke luidsprekervolumes worden berekend.
- X3DAudio maakt gebruik van linkshandige coördinaten. Voor gebruik met rechtshandige coördinaten moeten ontwikkelaars het .z-element van de leden OrientTop, OrientFront, Position en Velocity van X3DAUDIO_LISTENER en X3DAUDIO_EMITTER negatief maken.
Naast positie kunnen listeners en emitters snelheid bevatten. In tegenstelling tot een 3D-renderingengine gebruikt X3DAudio alleen snelheid om Doppler-effecten te berekenen (deze wordt niet gebruikt om de positie te berekenen).
Zie de referentieonderwerpen X3DAUDIO_LISTENER en X3DAUDIO_EMITTER structuur voor meer informatie over listeners en emitters.
X3DAudio gebruiken met XAudio2
Gebruik voor alle interactie tussen X3DAudio en XAudio2 de volgende X3DAudio-functies.
-
Roep de functie X3DAudioInitialize aan om X3DAudio te initialiseren. Normaal gesproken hoeft u alleen X3DAudioInitialize één keer in de levensduur van een game aan te roepen, tenzij de configuratie van de luidspreker wordt gewijzigd.
-
Nadat u X3DAudio hebt geïnitialiseerd, kunt u volume en andere waarden voor een bepaald geluid bepalen door de emitter van het geluid en de listener door te geven aan de X3DAudioCalculate functie. De waarden die worden berekend door X3DAudioCalculate kunnen vervolgens worden toegepast op XAudio2-stemmen of -effecten, indien van toepassing op de vlaggen die aan de functie zijn doorgegeven. U kunt volume- en pitchwaarden die door X3DAudio worden berekend, toepassen op een stem met de methoden IXAudio2Voice::SetOutputMatrix en IXAudio2SourceVoice::SetFrequencyRatio methoden. Andere waarden die door X3DAudio worden berekend, moeten worden toegepast op een reverb-effect met behulp van de methode IXAudio2Voice::SetEffectParameters.
Zie voor een stapsgewijze voorbeeld van het gebruik van X3DAudio met XAudio2 : X3DAudio integreren met XAudio
Verwante onderwerpen