물리-완벽한 (또는 근처) 3D 사운드 엔진 [닫기]


11

콘솔 / 웹 개발에 몇 년의 경험이 있지만 게임 프로그래밍에 익숙하지 않습니다. 내 문제는 내가 찾고있는 것을 찾을 수 없을 정도로 실제로는 성공적인 검색을 수행 할 용어가 없다는 것입니다.

소리에 중점을 둔 물리 엔진을 찾고 있습니다. 사실, 나는 다른 것을 전혀 신경 쓰지 않습니다. 내가 의미하는 것은 예제로 더 잘 설명됩니다.

1 인칭 게임이라고 가정하자. 당신은 북쪽을 향하고 있고, 당신의 주위 어딘가 누군가가 당신에게 플루트를 던집니다. 도중에 플루트가 돌면서 구멍을 통해 소리가납니다. 남쪽으로 5 노트의 바람이 불고 있습니다.

물리 엔진이 플루트의 궤도와 타격 후의 방향을 계산할 수 있다고 생각합니다. 내가 원하는 것은 물리 엔진이 모든 청취자의 관점에서 정확한 소리를 계산하는 것입니다.

그러한 엔진이 있습니까? 여러 개가 있다면 위의 예에 가장 적합한 것은 무엇입니까?

답변:


10

당신은 잘못된 질문을하고 있습니다. 많은 새로운 게임 프로그래머들이 저지르는 실수를 저지르고 있습니다. 게임은 하지 그들은 심지어 가깝지 않은, 완벽한 시뮬레이션. 게임은 재미 있고 흥미로울 정도로 시뮬레이션합니다. 다른 모든 것은 가짜입니다.

적절한 예 :
World of Goo : 질량, 인장 강도 및 탄성을 시뮬레이션합니다. 나머지는 게임의 느낌을 더하지 않기 때문에 가짜입니다. 예를 들어 중력을 시뮬레이션하지 않습니다. 모든 물체는 일정한 힘으로 가속됩니다. 보이시가 가짜입니다. 풍선은 일정한 힘으로 당겨지고 물속에서 끈적 끈적한 공은 일정한 상승력을 경험합니다. 이 모든 것이 게임에 적합합니다. 그러나 World of Goo의 물리 엔진을 사용하여 우주 엘리베이터를 만들려고하면 고장납니다.

거의 완벽한 물리 기반 사운드 엔진을 상상해 봅시다. 환경 영향은 어떻습니까? 동굴이나 밭에 플루트가 있습니까? 엔진이 사전 정의 된 환경 세트를 제공합니까 (얼마나 많은가?) 또는 실제 물리적 지형을 계산하여 엔진을 파악합니까 (그렇습니다)? 플레이어에게 방향성 귀 (인간 인간) 또는 귀 구멍 (알라 돌고래 또는 외계인) 또는 동물과 같은 다 방향이 있습니까? 공기가 더워요? 얼마나 습한가요? 이 목록은 신속하게 통제를 벗어날 수 있습니다.

이제 실제 물리 사운드 엔진이 존재한다고 가정 해 봅시다. 정말로 게임을 만들고 싶습니까? 공기를 통과하는 플루트 소리를 정의하는 데 얼마나 걸립니까? 얼마나 많은 매개 변수를 올바르게 가져야합니까 (100입니까?).

당신이 물어야 할 것은 :
플루트가 플레이어를 지나갈 때 플루트를 어떻게 시뮬레이트 할 수 있습니까?

OpenAL은 원하는 것을 할 수 있습니다.

  • 방향성 리스너
  • 지향성 음원
  • 소스 속도 및 도플러 효과.

나는 회전하는 플루트의 반복적 인 음향 효과를 갖는 것이 좋습니다. 플레이어 위치와 플루트 위치 / 속도를 입력하십시오. 지금은 방향성을 건너 뛰십시오.
공기가 흐름에 따라 플루트의 양쪽 끝에서 나오는 소리를 녹음하고 플루트가 두 개의 음원을 사용하게 할 수 있습니다. 그러나 나는 전체 게임 메카니즘이 던지고 회전하는 플루트를 중심으로 회전하지 않는 한 노력의 가치가 있다고 의심합니다.


음, 전체 게임 아이디어는 소리를내는 움직이는 물체를 중심으로 이루어집니다. 주어진 예제는 의도적으로 지나치게 복잡하지만, 게임 아이디어는 사실적으로 소리가 나는 물체를 움직입니다.
Félix Saparelli

대부분의 매개 변수는 실제로 제어됩니다. 특정 물질의 벽 (내가 정의한 속성), 공기 온도, 압력, 습도 등이 모두 통제 된 밀폐 된 밀폐 된 입방 공간을 고려하십시오. 귀는 인간입니다. 나는 몸의 나머지 부분을 고려할 필요조차 없습니다. 실제로, 블랙리스트 대신에 내가 사용하는 매개 변수를 정확하게 지정하고 나머지를 모두 정의 (일정) 할 수 있습니다. 그것은 나의 (가상) 세계입니다 : 나는 그것을 원하는대로 정의합니다.
Félix Saparelli

필자의 요점은 그러한 오디오 엔진이 일반적인 경우에 필요한 노력은 그만한 가치가 없다는 것입니다. 특히 유능한 사운드 엔지니어가 필요한 모든 효과를 설득력있게 위장 할 수있는 경우. 도플러가 내장되어 있습니다. 에코, 댐핑 등을 모두 필터링으로 수행 할 수 있습니다.
deft_code

8

실제 모델링을 원하십니까? Synthesis Toolkit을 사용해보십시오.

https://ccrma.stanford.edu/software/stk/classstk_1_1Flute.html .

풍속 / 진폭을 직접 설정하는 풀 코드를 작성해야합니다.

당신이 요구하는 것은 실제로 발명되지 않았습니다. 우리는 점점 가까워지고 있습니다-이것을 확인하십시오, 다른 날 그것을 보았습니다.

http://www.physorg.com/news198351307.html


재미있는 것들. 이것이 내가 의미하는 바이며, 아직 끝나지 않았다고해서 나를 방해하지는 않습니다. 1-2 년 전에 실제 (개념적이지 않은) 작업을 시작할 계획은 없습니다.
Félix Saparelli

4

물리 오디오 엔진을 찾을 수 있을지 의심됩니다. 더 좋은 것은 좋아하는 물리 엔진 (예 : Bullet )을 사용 하고 소리에 OpenAL 을 사용 하는 것입니다. 플루트의 위치를 ​​계산하여 소스의 위치로 사용하십시오.


그래도 그보다 훨씬 더 많은 것을 원합니다.
Félix Saparelli

1
무엇을 더 원하십니까? 내 제안으로 매 프레임마다 소리의 위치를 ​​변경할 수 있습니다. 뭔가 빠진 것 같아요.
공산주의 오리

6
그는 소리를 생성하기 위해 공기 파 및 기타 진동을 시뮬레이션하는 것을 의미한다고 생각합니다. 그리고 그것이 가능하지만 어떤 컴퓨터 (어쩌면 일부 슈퍼 컴퓨터 클러스터 제외)는 유용한 크기 공간에 대해 실시간으로 계산할 수는 없습니다. 물리 엔진과 충돌 데이터를 읽어 적절한 샘플을 재생하는 것은 "충분히 가깝습니다").
Elva

3
a) Yourdoom과 마찬가지로 일반적인 컴퓨터로는 그렇게 할 수 없으며 b) 아무도 그 차이를 알 수 없습니다.
공산주의 오리

3
현대 게임은 OpenAL이 할 ​​수 없거나 최소한 (지오메트리) 볼륨 기반 이펙터와 같이 상자 밖에서하지 않는 것 (또는 추가로 연결할 수있는 FMOD와 같은 고급 API)이 여전히 많이 있습니다. 여러 방을 통과하는 오디오를 시뮬레이션하기 위해 포털로. 일반적이지 않지만 완료되었으므로 차이점을 알 수 있습니다.

4

Phya는 게임 물리 엔진에 의해 구동 될 수있는 "물리 샘플링"기반 충돌 오디오 합성 라이브러리입니다. (예시에서는 총알이 사용되었다)

http://www.zenprobe.com/phya/

최신 버전인지 확실하지 않은 경우 최근 사이트 업데이트가 1 년 전에 끝났습니다.

볼륨에서 공기의 공명을 모델링하는 데별로 적합하지는 않지만 물리에서 실시간 오디오 합성을 유도하는 방법에 대한 좋은 예가 될 수 있습니다.

나는 이것이 엄청나게 CPU 비용이 많이 드는 사업 일 필요는 없다고 생각한다. 언급 된 문제는 전적으로 결정 론적이며 현대 하드웨어에서 달성 할 수 있어야한다. (적어도 엔터테인먼트 / 학습 제품에 적합한 수준까지)

대답해야 할 질문은 얼마나 완벽하게 시뮬레이션해야하는지, 그리고 얼마나 많은 가짜를 할 수 있습니까? 합리적으로 확실한 방식으로 사운드를 실시간으로 변조하는 오디오의 경우 분자까지 음향 진동을 모델링하지 않고도 많은 것을 얻을 수 있습니다.

아마도 도움이 될 것입니다. 좋은 질문입니다.

-제이


나는 많은 가짜 수 있습니다. 현대 비디오 게임보다 훨씬 적습니다. 요점은 비디오 게임이 아니라 오디오 게임을 만드는 것입니다. 킨다
Félix Saparelli

3

실제로 여기에 포함 된 물리를 정확하게 시뮬레이션하는 것은 Havok 또는 Bullet과 같은 일반 물리 시스템보다 훨씬 더 복잡하고 계산 비용이 많이 듭니다. 기존의 물리 시스템은 강체와 연체에 최적화되어 있으며 속도 이유로 메쉬 복잡성이 제한되어 있습니다.

반면, 소리는 공기를 통한 파도의 전파이며, 예제와 같이 생성되는 주파수는 톤과 톤의 특성에 따라 다릅니다. 어떤 재료로 만들어 졌습니까? 해당 물질과 상호 작용하는 공기 입자에 어떤 수학적 모델을 사용해야합니까? 튜브 모양이라면 튜브의 크기는 얼마입니까? (공진 주파수를 결정합니다.) 등

무엇보다도 공기를 모델링하기 위해 매우 정교한 입자 시뮬레이션을 실행하고 본질적으로 고막에 부딪 치는 음파 인 입자 모션 파동을 추출해야합니다. 고막의 파도의 공명은 듣는 것에 영향을 미치기 때문에 고막을 언급하지 마십시오.

대체로 이것은 인터랙티브 프레임 속도에 대한 희망이있는 경우 현재 게임이 수행하기에는 너무 많은 시뮬레이션입니다. deft_code가 지적했듯이 게임은 정확한 시뮬레이션은 아니지만 다소 위조 된 게임입니다. 이 방법에 접근하는 가장 좋은 방법은 큰 사운드 샘플 세트로 시작하여 DSP의 효과를 얻을 수있을 때까지 DSP를 통해 작업을 시작하는 것입니다. DSP는 실시간 게임을 위해 충분히 빠르며, 사운드가 큰 구성 요소라면 프레임 시간의 상당한 부분을 사운드 처리에 전념하는 것이 좋습니다.

tl; dr : 정확한 시뮬레이션은 아마도 앞으로 몇 년 동안 문제가 될 것입니다. 훌륭한 게임은 가짜입니다. 충분히 큰 샘플 세트와 충분한 DSP 조정을 통해 아마도 가짜 일 수도 있습니다.


2

우리의 접근 방식을 확인하십시오.

http://dsp.agh.edu.pl/en:research:rayav

개발 된 라이브러리는 빔 트레이싱을 사용하여 사용자에게 사실적인 오디오 청각 화를 제공합니다. 모든 오디오 효과는 주어진 게임 레벨의 실제 지오메트리 및 음향 속성 (음향 재료, 공기 감쇠)을 기반으로 계산됩니다. 게임 캐릭터 및 음원의 움직임에 따라 사운드가 동적으로 변경됩니다. 사운드 경로 생성 알고리즘은 정반사, 확산 반사 및 에지 회절과 같은 현상을 지원하는 반면 오디오 처리는 신호 필터링 (공기 덤핑, 반사 / 회절 영향 모델링 등), 도플러 효과 모델링 및 공간 효과를 지원합니다. 마지막으로 방향성 사운드는 각 사운드 경로당 HRTF를 사용하여 구현됩니다.


0

나는 이것이 오래된 질문이라는 것을 알고 있지만 지난 몇 년 동안 일이 진행되어 왔으며, 당신이 묘사하는 것은 점점 더 계산 가능하게되고 있습니다.

Synthesis Toolkit과 같은 도구는 다음과 같은 종류의 질문에 답하는 데 사용됩니다.

그래도 대답해야 할 또 다른 중요한 질문이 있습니다. "이 음표는 듣는 사람의 입장에서 어떤 소리가 나는가?"

OpenAL과 같은 오디오 API가이를 처리하는 것은 일반적인 오해입니다. 실제로, 그들이하는 것은 위치 오디오 라고하는 것입니다 . 소리 전파 와 환경 간의 상호 작용은 소리 전파를 모델링하지 않습니다 . 건전한 전파에는 다음과 같은 질문에 대한 답변이 포함됩니다.

  • 이 방은 눈에 띄는 리버브가있을만큼 충분히 큰가요?
  • 아니면 방에있는 가구가 대부분의 소리를 흡수합니까?
  • 실외에 서있을 때 먼 언덕에서 울리는 소리가 들려야합니까? 근처 건물?
  • 장거리에서 소리가 사라 집니까?
  • 리스너에서 음원이 가려져 있습니까?
  • 그렇다면 음파가 청취자에게 도달하기 위해 사용할 수있는 대체 경로가 있습니까? 아마도 닫힌 문 아래, 복도 모퉁이 또는 통풍구를 통해?

Phonon 은 이러한 질문에 답하는 오디오-물리 엔진입니다. (전체 공개 : 저는 Phonon 개발에 관여하고 있습니다.) Phonon을 사용하면 사용자는 매우 작은 매개 변수 세트 (흡수 및 산란 계수) 를 지정해야합니다 . 그런 다음 Phonon 은 청취자에게 사운드 전파 효과를 확실하게 재현 할 수있을 정도로 충분한 계산을 수행합니다 .

Phonon은 현재 Unity 용 플러그인으로 제공됩니다. Phonon은 PC 및 모바일 외에도 Oculus Rift와 같은 VR 플랫폼에서 실행할 수 있으며 눈에 띄는 차이가 있습니다.

도움이 되었기를 바랍니다!


0

질문을 읽을 때 두 가지 방법으로 번역 할 수 있습니다.

  1. 물리적 시뮬레이션을 기반으로 사운드를 생성 할 수있는 엔진이 있습니까? 리드를 가로 질러 날리는 공기 또는 줄을 치는 망치와 같은?

게임에서? 내가 들어 본 게 아닙니다

  1. 기존 사운드를 재생하지만 "서라운드 사운드 경험"을 시뮬레이션하기 위해 마이크와의 거리와 같은 물리적 정보를 기반으로 수정하는 엔진이 있습니까?

예! 그것들은 "3D 사운드 엔진"이라 불리며 잘 알려진 것은 OpenAL 입니다.

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