구형 고조파를 사용하여 복잡한 사운드 환경 구축


16

저는 오늘 실내 음향 모델링을 개선하는 방법에 대해 토론했습니다. 주제에 대한 작업은 거의 없었지만 그래픽으로 톤을 처리 한 것으로 나타났습니다. 또한 소리와 빛은 단순한 파형 일뿐 아니라 레이 트레이싱 및 라디오와 같은 것을 사용하여 근사치를 얻을 수 있다고 제안했습니다.

이 시점에서 저는이 동작을 시뮬레이션하기 위해 구형 고조파에 대해 생각하기 시작했습니다. 확산 반사로 모델링 된 오디오 산란뿐만 아니라 정반사 반사도 동시에 수행 할 수 있습니다. 보너스로 사운드 전송을 차단하는 장애물도 있습니다. 유일한 문제는 여러 주파수의 감쇠를 처리하는 방법이었습니다. 확실히 이것은 어떤 형태의 변환을 오디오 스펙트럼 (FFT)에 적용함으로써 모델링 될 수 있습니다.

어쨌든이 주제에 관한 논문, 특히 실시간으로 수행되는 방법에 대해 아는 사람이 있습니다. 조언이나 유용한 일반 정보를 얻지 못한 사람이 있습니까?


1
이것은 인디 게임 악마의 튜닝 포크를 생각 나게합니다 : indiegames.com/blog/2009/11/freeware_game_pick_devils_tuni.html (좋은 느낌을 얻으려면 비디오 시청!)
Ricket

답변:


5

그래, 좋은 생각이야 Malham은 이미 Menzies의 의견에 근거한 논문을 썼습니다 (1999 년).

또한 음향에 라디오 시티 사용에 관한 Nosal의 MASc 논문에 주목하십시오 .

조명에 관해서는 (R, G, B를위한 3 가지 기능을 수행), 나타내려는 각 거친 주파수 대역에 대해 SH 기능을 다르게 설정해야합니다 (예 : 저주파, 60Hz-1kHz, 1kHz-2kHz 중반, 10kHz-20kHz 중반 등). 60Hz 이하의 모든 것이 모든 것을 통과하게하십시오 (실제 사운드는 거의 작동합니다)

그러나 조명이있는 재료가 각각 RGB에 다르게 반응하는 것처럼 각 재료의 음향 반사 기능을 모델링해야합니다.


3

흥미로운 문제처럼 들리지만 사람들이 알기 전에 얼마나 많은 정확도가 필요한지 궁금합니다. 어쨌든,이 답변은 "실시간"부분에 중점을 두지 만, 제가 조사한 것이 아니기 때문에 어떤 논문도 모릅니다.

모바일 사운드 소스를 사용하여 실시간으로 정확하게 계산하려면 그래픽 카드를 사용하여 반사를 계산하는 것이 가장 빠릅니다. 예를 들어 단순화 된 월드 버전이 동시에 실행되는 경우이를 사용하여 "반사 패턴"을 텍스처 또는 큐브 맵에 렌더링하고 해당 텍스처에서 사운드 출력 방법을 유추 할 수 있습니다. 해당 모델의 사운드 (또는 별도의 사운드 주파수 대역)는 점 광원입니다. 기본 (1 바운스) 리플렉션 만 사용하면 더 이상 정확도가 필요하지 않을 수 있습니다. 특히 단순화 된 형상과 해상도가 낮아 매우 빠릅니다. 그래도 하나의 그래픽 카드에 여러 장면에서 성능 문제가 있는지 확실하지 않습니다.

내가 거의 알지 못하는 영역으로 더 나아가면 BSP 트리는 볼륨과 다른 볼륨에 대한 연결을 정의하는 것처럼 구석 주위로 구부러지는 파도에 유용 할 것 같습니다.

상황에 따라 위의 테스트 결과를 캐시하는 것이 추가 최적화입니다. 예를 들어 플레이어 방향을 기준으로 회전 할 수 있지만 완전히 다시 계산할 수없는 사운드 큐브 맵 또는 플레이어의 위치에 따라 보간 할 수있는 몇 개의 큐브 맵을 저장합니다.


스페 큘러 & 디퓨즈 리플렉션뿐만 아니라 "구부러진 둥근 모서리"와 오클 루더를 구할 수 있지만, 어떤 방식으로 구면 고조파를 거의 사용하지
않아도됩니다

실제로 구형 고조파의 정의와 적용 방법을 이해하기 시작한 후 그래픽 카드 섹션 (2 항)은 관련이 없습니다. BSP 트리에 대한 비트는 일반적으로 레벨에 대한 단순화 된 기하학이기 때문에 상당히 3 인칭 / 1 인칭 게임이 있다고 가정하면 여전히 유용 할 수 있습니다. (AShelly 링크 된 논문의 "셀 인접 그래프"와 유사). 모든 프레임을 다시 계산하지 않으면 일부 처리가 절약 될 수 있습니다.
Toeofdoom


2

나는 실제로 이것을 시도하지는 않았지만 항상 가벼운 전파 량과 같은 접근 방식이 오디오에 사용될 수 있는지 궁금했습니다. 광 전파 량에서는 작은 3D 텍스처 (32x32x32)가 사용되는데, 3d 텍스처를 플러딩하여 빛 바운스와 오 클루 전을 시뮬레이션합니다. 구형 고조파를 사용하기 때문에 오디오에서도이 작업을 수행 할 수 있습니다. 나는 오디오 전문가가 아닙니다


2

Cornell의 컴퓨터 그래픽 프로그램 인 Doug James는 환경에서 사운드를 정확하게 모델링하는 데 많은 노력을 기울였습니다. 그러나 그의 논문의 대부분은 소리 발생기 (얇은 껍질 물체, 불꽃 등)의 특정 사례를 처리합니다. 또한 게임에서 수행해야하는 다른 작업과 함께 실시간으로 수행 할만큼 효율적이지 않을 수도 있습니다.

그러나 일부를 읽는 것이 유용 할 수 있습니다. 그의 접근 방식을 진행하고 수정하는 방법에 대한 아이디어를 제공하여 실시간 성능을 위해 충분하지만 효율적입니다.

그의 사이트는 다음과 같습니다.

http://www.cs.cornell.edu/~djames/

그의 "Harmonic Fluids"와 "Harmonic Shells"논문이 특히 흥미로울 것입니다.


1

나는 또한 이것을 약간 생각했다. (현실주의 / 성능 절충 측면에서) 주요 관심사는 공간적으로 귀가 눈보다 열등하다는 것입니다. 눈에 필요한 것만 큼 현실적이지 않은 것을 쉽게 받아 들일 수 있습니다. 로컬 환경에서 사운드를 완벽하게 모델링하려고 시도하는 것은 과도 할 가능성이 매우 높습니다. EAX는 아마도 '충분히'좋습니다.

닫힌 환경 (예 : Quake)에서 나는 먼저 각 방에 대해 'transferance'와 immersion의 두 가지 속성을 계산합니다.

트랜스퍼 런스 는이 룸을 통해 여행 할 때 사운드가 어떻게 영향을 받는지를 나타내며 파라 메트릭 EQ로 계산 될 것입니다. 파라 메트릭 EQ는 궁극적으로 사운드 감쇠를 시뮬레이션합니다.

침수 는 방을 9 개의 큐브로 나누고 (아마도 하나만으로도 충분할 수 있음) 해당 관점에서 로컬 사운드 속성을 계산하여 계산됩니다. 이 매개 변수는 EAX 환경에서 사용됩니다.

마지막으로 각 방은 그래프로 연결되며 그래프의 각 지점은 각 방을 연결하는 포털입니다.

소리가 울리면 플러드 필 (A * 검색 없음)을 수행하고 이동 거리와 이동 거리를 추적합니다. 사운드가 플레이어에 도달하면 나중에 어느 시점에서 재생하기 위해 대기합니다. 이동 한 거리를 기준으로합니다. 전달 된 그래프 포인트 수를 추적하고 결국 사운드를 '컬러'(즉, 연속적인 홍수 채우기) 할 수 있습니다. CPU 바인딩을 얻을 수 있으므로 CUDA를 사용해야 할 수도 있습니다.

사운드가 재생되면 3D 사운드 API (OpenAL)를 사용하여 입력 한 포털에 배치하면 플레이어가 현재있는 9 개의 큐브 중 어떤 큐브를 찾아 해당 EAX 환경을 적용 할 수 있습니다.

여기서 깔끔한 점은 환경이 충분히 복잡한 경우 무료 '전역'에코가 발생하고 플레이어가 올바른 방향에서 나오는 소리를 감지한다는 것입니다. EAX 환경을 올바르게 이해한다면 그 효과가 뇌가 그것을 받아 들일 정도로 설득력이있을 것입니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.