X3DAudio 개요
X3DAudio는 XAudio2 와 함께 사용되는 API로, 3D 공간에 사운드를 배치하여 카메라 위치를 기준으로 공간의 지점에서 나오는 소리의 환상을 만듭니다. 특히 3D 장면을 특징으로 하는 타이틀은 X3DAudio를 사용하려고 합니다. 사운드트랙 또는 위치가 없는 앰비언트 소리와 같이 3D 위치 지정이 필요하지 않은 소리는 X3DAudio를 완전히 우회할 수 있습니다.
수신기 및 내보내기
X3DAudio는 3D 공간에서 소리를 관리하기 위해 수신기 및 내보내기 개념을 사용합니다. 수신기 및 송신기는 3D 소리를 듣는 모든 위치와 해당 소리가 시작되는 지점을 나타냅니다.
- 수신기는 공간 및 방향의 지점으로 정의됩니다. 소리가 들리는 위치입니다. 수신기의 위치와 방향은 일반적으로 카메라의 위치 및 방향과 동일합니다. 타이틀이 1인칭 또는 3인칭 관점 보기를 사용하는지 여부에 관계없이 마찬가지입니다. 수신기의 위치는 월드 좌표로 표현됩니다. 최종 스피커 볼륨을 계산하는 방법을 결정하는 방출기를 기준으로 하는 수신기의 위치라는 점에 유의해야 합니다.
- 방출기는 소리가 시작되는 공간에서 하나 이상의 지점으로 정의 됩니다. 방출기의 위치는 3D 공간의 어느 곳에나 있을 수 있습니다. 수신기와 마찬가지로 방사체의 위치는 월드 좌표로 표현됩니다. 최종 스피커 볼륨을 계산하는 방법을 결정하는 수신기를 기준으로 하는 방출기 위치입니다.
- X3DAudio는 왼손 좌표를 사용합니다. 오른손 좌표와 함께 사용하려면 개발자가 X3DAUDIO_LISTENER 및 X3DAUDIO_EMITTER OrientTop, OrientFront, Position 및 Velocity 멤버의 .z 요소를 부정해야 합니다.
위치 외에도 수신기 및 내보내기는 속도를 포함할 수 있습니다. 3D 렌더링 엔진과 달리 X3DAudio는 속도만 사용하여 Doppler 효과를 계산합니다(위치를 계산하는 데 사용되지 않음).
수신기 및 내보내기에 대한 자세한 내용은 X3DAUDIO_LISTENER 및 X3DAUDIO_EMITTER 구조 참조 topics 참조하세요.
XAudio2에서 X3DAudio 사용
X3DAudio와 XAudio2 간의 모든 상호 작용에 대해 다음 X3DAudio 함수를 사용합니다.
-
X3DAudioInitialize 함수를 호출하여 X3DAudio를 초기화합니다. 일반적으로 화자 구성이 변경되지 않는 한 게임 수명 동안 X3DAudioInitialize 를 한 번만 호출하면 됩니다.
-
X3DAudio를 초기화한 후 소리의 방출기와 수신기를 X3DAudioCalculate 함수에 전달하여 지정된 소리의 볼륨 및 기타 값을 확인할 수 있습니다. 그런 다음 X3DAudioCalculate에서 계산한 값을 함수에 전달된 플래그에 적절하게 XAudio2 음성 또는 효과에 적용할 수 있습니다. X3DAudio에서 계산한 볼륨 및 피치 값을 IXAudio2Voice::SetOutputMatrix 및 IXAudio2SourceVoice::SetFrequencyRatio 메서드를 사용하여 음성에 적용할 수 있습니다. X3DAudio에서 계산한 다른 값은 IXAudio2Voice::SetEffectParameters 메서드를 사용하여 반향 효과에 적용해야 합니다.
XAudio2에서 X3DAudio를 사용하는 단계별 예제는 방법: XAudio와 X3DAudio 통합을 참조하세요.
관련 항목