네이티브 사운드필드 앰비소닉 렌더링

언리얼 오디오 엔진의 사운드필드 앰비소닉 사용법 개요

Choose your operating system:

Windows

macOS

Linux

Version 4.25

사운드필드(Soundfield) 는 현실 또는 가상의 공간 영역을 오디오로 표현한 것입니다. 현실 및 가상의 오디오에서 가장 해결이 어려운 문제들 중 하나는 어떻게 하면 사운드필드을 잘 캡처하고 표현할 수 있는지에 대한 것입니다.

사운드필드 캡처 및 표현의 문제

마이크를 사운드스케이프를 캡처하고 싶은 해변이나, 숲, 기타 장소로 가져가 보면 문제가 무엇인지를 바로 경험할 수 있습니다. 예를 들어 숲속으로 단일 지향성 마이크 하나만 가지고 가서 새가 오른쪽에서 왼쪽으로 날아가며 지저귀는 소리를 훌륭하게 녹음했다고 해보겠습니다. 이때 마이크가 모든 방향으로 동일하게 민감하고 새가 지속적으로 동일한 음량으로 지저귀었다고 가정하겠습니다. 녹음한 것을 홈 스피커에서 재생하면 왼쪽과 오른쪽 채널에서 동일한 볼륨으로 재생됩니다.

Soundfields.png

날아서 마이크를 지나간 새의 지저귐은 두 스피커에서 동일한 볼륨을 갖습니다.

이러한 녹음 구성의 한계 때문에 새가 청자를 중심으로 어디에 있는지, 어느 방향으로 날아가고 있는지를 청자에게 알릴 수 있는 방식으로 녹음하지 못한 것입니다. 녹음한 사운드는 새가 마이크 가까이 오면 두 스피커 모두에서 더 커지고 멀어지면 작아질 것입니다.

만약 이 새의 소리를 재생할 각 스피커에 대응하는 두 개의 마이크로 일정 거리를 두고 녹음했다면 훨씬 많은 정보를 담을 수 있었을 것입니다.

Soundfields_Stereo.png

마이크 두 개를 사용하면 새의 지저귐은 첫째 마이크에서 커지고 둘째 마이크에서 작아졌다가 둘째 마이크에서 커지면서 첫째 마이크에서는 작아질 것입니다.

새가 오른쪽에서 왼쪽으로 움직임에 따라 왼쪽 마이크의 소리가 커지고 오른쪽 마이크의 소리는 작아집니다.

마이크 두 개를 사용하여 스테레오 오디오 애셋을 녹음하면 사운드필드의 중요한 공간 정보를 오디오 스트림에 캡처할 수 있습니다. 새가 마이크의 왼쪽 또는 오른쪽에서 얼마나 멀리 떨어져 있는지 알 수 있는 것입니다. 마이크를 더 추가하면 새가 마이크 배열 앞이 아니라 뒤에서 움직였는지, 새가 마이크 배열에서 얼마나 높이 있는지 등 새의 공간 내 위치와 움직임에 대해 더 많은 공간 정보를 캡처할 수 있습니다.

다운믹싱 은 오디오 소스를 여러 스피커 출력으로 렌더링하는 프로세스입니다. 게임에서 다운믹싱이 발생하는 방식에 친숙하다면 다운믹싱이 이전 다이어그램에서 설명했던 마이크 배열과 유사하다는 사실을 아실 수 있을 것입니다.

일반적으로 오디오 소스는 각 스피커에서 재생되며, 음량은 소스가 게임 월드 내에서 다른 스피커에 비해 해당 스피커에 얼마나 가까이 있는지에 비례해서 커집니다.

일반적인 패닝 시스템은 게임 월드에서 스피커가 있을 장소에 무지향성 마이크를 배치하는 방식과 유사합니다. 게임을 스테레오로 다운믹싱하면 플레이어가 오디오 소스로부터 왼쪽 또는 오른쪽으로 얼마나 가까운지에 대한 정보를 보존할 수 있습니다.

오디오를 5.1 또는 7.1로 다운믹싱하면 소스가 전방 왼쪽 또는 전방 오른쪽 채널에 비해 서라운드 왼쪽 또는 서라운드 오른쪽 채널에서 얼마나 큰지를 바탕으로 소스가 플레이어 앞에 있는지 아니면 뒤에 있는지에 대한 추가 정보를 줄 수 있습니다.

여러 응용 사례에서는 이 정도로도 플레이어가 오디오 소스의 위치 정보를 변환하기에 충분한 정보를 제공합니다. 그러나 많은 사용 사례에서는 고도 정보까지 포함하는 것이 이상적입니다. 스피커 구성에 관계없이 쉽게 디코딩 (재생) 가능한 사운드필드 표현을 인코딩 (캡처) 할 때 오디오 소스의 3D 위치를 유지하는 방법에는 여러 가지가 있습니다. 이러한 방법을 사용하면 공간성이 풍부한 오디오 경험을 제공할 수 있습니다.

소스를 다운믹싱할 때 오디오의 고도 및 방위각 정보를 모두 유지하기 위해 널리 사용되는 사운드필드 표현 방식은 앰비소닉 입니다.

언리얼 엔진의 앰비소닉

앰비소닉 구면 조화 함수 를 사용하여 구체에 위치 오디오를 투사하는 특수 사운드필드 표현 방식입니다. 비디오 게임의 라이팅에서 구면 조화 함수를 보셨을 수도 있습니다. 사운드에서 이와 동일한 효과가 앰비소닉이라고 할 수 있습니다. 사용하는 앰비소닉의 차수 가 높을수록 앰비소닉 오디오 스트림의 공간 해상도 도 높아지기 때문에 앰비소닉 오디오 스트림을 스피커 위치로 디코딩할 때 오디오의 위치 정보를 쉽게 전달할 수 있습니다.

앰비소닉 오디오 파일에 직접 녹음할 수 있는 마이크 배열에는 여러 가지가 있습니다. 앰비소닉 인코딩된 오디오는 필요에 따라 회전할 수 있으므로 앰비소닉은 엠비언트 오디오 베드 (배경 사운드)에 매우 적합합니다. 언리얼 엔진이 앰비소닉 오디오 소스를 재생하면 플레이어가 시선을 돌릴 때 동적으로 앰비소닉 오디오 베드를 회전하여 앰비언트 오디오가 실제 게임 월드 속의 정해진 방향에서 들려오는 것 같은 인상을 줄 수 있습니다.

앰비소닉 오디오 애셋 임포트 및 재생하기

4.25 버전 출시 시점에서 언리얼 엔진은 1차 앰비소닉 애셋 만 지원합니다.

1차 앰비소닉 애셋은 4개의 채널이 있습니다. 바로 옴니 컴포넌트 또는 W 채널 그리고 벡터 컴포넌트 또는 X , Y , Z 채널 입니다.

UE가 지원하는 채널 차수는 두 가지가 있습니다. 퍼스-맬햄(FuMa) 앰비소닉 채널 개수(ACN) 입니다.

FuMa 채널 차수 는 앰비소닉 오디오 채널 컴포넌트를 W, Y, Z, X로 배열합니다.

ACN 채널 차수 는 W, X, Y, Z를 사용합니다.

1차 앰비소닉 오디오는 4개의 채널을 사용하기 때문에 4개의 채널을 모두 갖추지 않은 임포트 파일은 앰비소닉이 아닌(non-ambisonic) 일반 오디오 애셋으로 간주합니다.

앰비소닉 .wav 파일을 콘텐츠 브라우저로 임포트하려면 애셋의 이름 끝에 다음 중 하나가 와야 합니다.

  • _fuma.wav : FuMa 채널 차수를 사용하는 앰비소닉 파일

  • _ambix.wav : ACN 채널 차수를 사용하는 앰비소닉 파일

이는 원본 앰비소닉 애셋의 채널 차수가 어떤 것인지 엔진에 전달합니다. 파일을 콘텐츠 브라우저로 드래그한 다음에 사운드 웨이브 애셋을 열면 사운드 웨이브 디테일패널에서 Is Ambisonics 체크박스가 이미 체크된 것을 볼 수 있습니다.

Is_Ambisonics_Checkbox.png

.wav 파일을 임포트하기 전에 파일 이름 끝에 _ambix 또는 `_fuma`를 추가하지 못한 경우에는 이 박스를 직접 체크하면 됩니다. 이렇게 하면 엔진이 임포트한 원본 파일이 **ACN** 채널 차수를 사용한 것으로 간주합니다.

임포트한 앰비소닉 파일은 엔진 내 다른 사운드 웨이브와 동일하게 취급할 수 있습니다. 단, **회전 관련 사항**만은 예외입니다. 월드 내에서 오디오 컴포넌트로 앰비소닉 사운드 웨이브를 재생할 때 엔진은 재생 중인 오디오 컴포넌트의 현재 방향과 게임 월드 속 플레이어의 현재 방향 사이의 각도를 바탕으로 앰비소닉 베드를 회전합니다.

사운드필드 서브믹스

앰비소닉 사운드 웨이브를 다른 사운드 웨이브처럼 재생할 수 있을 뿐만 아니라 서브믹스 그래프에 바로 사용할 수도 있습니다. 이렇게 하려면 **사운드필드 서브믹스**를 생성해야 합니다.

Create_Soundfield_Submix.png

사운드필드 서브믹스는 서브믹스 그래프에서 사용되거나 다른 서브믹스에 연결할 수 있지만, 현재 엔진에 구현되었거나 활성화된 플러그인으로 구현된 어떠한 사운드필드 표현 방식에도 사용할 수 있습니다.

새로 생성한 사운드필드 서브믹스를 열고 디테일 패널을 살펴보면 사운드필드 인코딩 포맷(Soundfield Encoding Format) 드롭다운 메뉴와 그 아래에 있는 언리얼 앰비소닉(Unreal Ambisonics) 옵션을 찾을 수 있습니다.

Soundfield_EncodingFormat_Ambisonics.png

언리얼 앰비소닉(Unreal Ambisonics) 을 선택하면 앰비소닉 소스 여부에 상관없이 원하는 오디오 소스를 이 서브믹스로 보낼 수 있습니다. 이 경우 해당 소스는 단일 앰비소닉 스트림으로 다운믹싱되거나 인코딩됩니다. 회전이 있는 앰비소닉 소스를 앰비소닉 스트림에 보냈더라도 걱정할 필요 없습니다. 엔진이 소스를 다운믹싱하기에 앞서 소스 회전을 바탕으로 앰비소닉 소스 오디오를 회전하기 때문입니다.

Google Resonance 또는 Oculus Audio 플러그인을 활성화한 경우 사운드필드 인코딩 포맷(Soundfield Encoding Format) 메뉴에 추가 항목이 표시될 수 있습니다. 이를 사용하면 앰비소닉이 아닌소스와 앰비소닉 소스, 기타 서브믹스를 바로 서브믹스 그래프의 Resonance 또는 Oculus로 보낼 수 있습니다.

예를 들어 앰비소닉 서브믹스의 출력을 Google Resonance를 통해 바이노럴 오디오로 렌더링하려 한다고 가정해보겠습니다. 이를 위해서는 다른 사운드필드 서브믹스를 생성하여 서브믹스 그래프에 드롭한 다음 사운드필드 인코딩 포맷(Soundfield Encoding Format) 으로 Resonance 바이노럴 공간화(Resonance Binaural Spatialization) 를 선택합니다.

Resonance_Binaural_Spatialization.png

이제 앰비소닉 서브믹스 의 출력을 Resonance 서브믹스 에 연결하기만 하면 됩니다.

Connect_Ambisonics_Submix_To_ResonanceSubmix.png

또한 앰비소닉과 앰비소닉이 아닌 오디오 소스 모두를 Resonance 서브믹스로 보낼 수 있으며, 이렇게 보낸 소스는 바이노럴 스테레오 출력으로 렌더링됩니다. 사운드필드가 아닌 서브믹스의 출력도 사운드필드 서브믹스로 보낼 수 있으며, 이 경우 해당 서브믹스의 포맷으로 자동 인코딩됩니다. 다음 그래프에서는 다운믹싱된 일반 서브믹스의 출력을 다른 사운드필드가 아닌 서브믹스에 보내기 전에 Oculus Audio 바이노럴 오디오 스트림과 믹스했습니다.

Send_to_nonsoundfield_submix.png

소스를 서브믹스에 보내고 나면 해당 서브믹스의 포맷으로 다운믹싱된다는 점에 유의해야 합니다.

예를 들어 MyOculusSubmix로 오디오 소스가 전달되면서 받은 공간 정보가 있더라도 단지 StandardSoundSubmix로만 보내면, 이 경우에 모든 공간 정보를 잃게 됩니다.

사운드필드 인코딩 호환성

모든 사운드필드 인코딩 포맷이 호환되는 것은 아닙니다. 예를 들어 Oculus Audio 사운드필드 포맷을 사용한 서브믹스는 Google Resonance 사운드필드를 사용한 서브믹스에 연결할 수 없습니다. 그 반대도 마찬가지입니다.

Incompatible_submixes.png

그러나 필요에 따라 프로젝트 내에서 소스가 직접 이러한 사운드필드 서브믹스 가운데 하나로 보내는 것은 가능합니다.

결론

4.25 버전의 두 가지 네이티브 앰비소닉 렌더링과 사운드필드 서브믹스는 언리얼 엔진에서 공간 오디오 파이프라인의 모든 부분을 제어하고 확장하고자 하는 개발자들에게 큰 진전을 제공합니다. 향후 더 많은 사운드필드 포맷이 시스템에 추가될 예정입니다. 자체 사운드필드 포맷을 작성하면서 궁금한 점이 있다면 Audio Extensions 모듈에서 ISoundfieldFormat.h 를 확인하세요.

언리얼 엔진 문서의 미래를 함께 만들어주세요! 더 나은 서비스를 제공할 수 있도록 문서 사용에 대한 피드백을 주세요.
설문조사에 참여해 주세요
취소