Công cụ âm thanh 3d hoàn hảo về vật lý (hoặc ở đâu đó gần) [đóng]


11

Tôi chưa quen với lập trình trò chơi, mặc dù tôi có một số năm kinh nghiệm trong việc phát triển giao diện điều khiển / web. Vấn đề của tôi không nhiều đến mức tôi không thể tìm thấy những gì tôi đang tìm kiếm, chỉ là tôi không có thuật ngữ để thực sự tìm kiếm thành công.

Tôi đang tìm kiếm một động cơ vật lý tập trung lớn vào âm thanh. Trong thực tế, tôi không quan tâm đến bất cứ điều gì khác. Ý tôi là được giải thích tốt hơn bằng một ví dụ:

Giả sử một trò chơi loại 1 người. Bạn đang đối mặt với Bắc, và ai đó ở đâu đó xung quanh bạn ném sáo vào bạn (không bao giờ bỏ qua sự vô lý của tình huống). Sáo quay trong khi nó đang trên đường, tạo ra âm thanh qua các lỗ của nó. Có một cơn gió nói, 5 nút thắt Nam.

Tôi tưởng tượng một động cơ vật lý sẽ có khả năng tính toán quỹ đạo của sáo, cũng như hướng đi sau khi nó chạm vào. Những gì tôi muốn là cho động cơ vật lý để tính toán âm thanh chính xác mà nó sẽ tạo ra, từ quan điểm của bất kỳ người nghe nào.

Có bất kỳ động cơ như vậy tồn tại? Nếu có một vài cái, cái nào sẽ là tốt nhất cho ví dụ trên?

Câu trả lời:


11

Bạn đang hỏi sai câu hỏi. Bạn đang mắc sai lầm mà nhiều lập trình viên trò chơi mới mắc phải. Trò chơi là không phảimô phỏng hoàn hảo, thậm chí chúng không đóng. Trò chơi mô phỏng vừa đủ để vui / thú vị. Mọi thứ khác đều bị làm giả.

Trường hợp tại điểm:
World of Goo: mô phỏng khối lượng, độ bền kéo và độ đàn hồi. Phần còn lại bị làm giả bởi vì nó không thêm cảm giác của trò chơi. Ví dụ, nó không mô phỏng trọng lực. Tất cả các vật tăng tốc xuống với lực không đổi. Boyancy bị làm giả. Ballon kéo lên với một lực không đổi và bóng goo dưới nước cũng trải qua một lực hướng lên không đổi. Tất cả điều này làm việc tuyệt vời cho trò chơi. Tuy nhiên, nó sẽ bị hỏng nếu bạn cố tạo một thang máy không gian bằng động cơ vật lý của World of Goo.

Hãy tưởng tượng một công cụ âm thanh dựa trên vật lý gần như hoàn hảo. Còn ảnh hưởng đến môi trường thì sao? Là sáo trong một hang động hoặc trong một lĩnh vực. Công cụ có cung cấp một tập hợp các môi trường được xác định trước (bao nhiêu không?) Hay nó tìm ra nó bằng cách tính toán địa hình vật lý thực tế (đúng rồi)? Người chơi có tai định hướng (ala người) hay chỉ lỗ tai (cá heo ala hoặc người ngoài hành tinh) hoặc đa chiều như một con vật? Không khí có nóng không? Làm thế nào là ẩm ướt. Danh sách này có thể nhanh chóng vượt ra khỏi tầm kiểm soát.

Bây giờ giả sử trong một khoảnh khắc động cơ âm thanh vật lý thực sự như vậy tồn tại. Bạn có thực sự muốn sử dụng nó để làm một trò chơi? Bạn sẽ mất bao lâu để xác định âm thanh của sáo bay trong không khí. Có bao nhiêu tham số bạn phải nhận đúng (100?).

Điều bạn nên hỏi là:
Làm thế nào tôi có thể mô phỏng âm thanh của một cây sáo khi nó bay qua người chơi?

OpenAL có thể làm những gì bạn muốn.

  • Người nghe định hướng
  • Nguồn âm thanh định hướng
  • vận tốc nguồn và hiệu ứng doppler.

Tôi sẽ đề nghị có một hiệu ứng âm thanh lặp đi lặp lại của một cây sáo quay. Nhập vị trí người chơi và vị trí / vận tốc của sáo. Bỏ qua các công cụ định hướng cho bây giờ.
Bạn có thể ghi lại âm thanh phát ra từ mỗi đầu của một cây sáo khi không khí đi qua và có sáo sử dụng hai nguồn âm thanh. Nhưng tôi nghi ngờ rằng nó sẽ có giá trị nỗ lực trừ khi toàn bộ cơ chế trò chơi xoay quanh sáo ném và quay.


Vâng, toàn bộ ý tưởng trò chơi xoay quanh các vật thể chuyển động tạo ra âm thanh. Ví dụ đưa ra là quá phức tạp về mục đích, tuy nhiên ý tưởng trò chơi không liên quan đến các vật thể nghe có vẻ thực tế trong chuyển động.
Félix Saparelli

Hầu hết các thông số sẽ thực sự được kiểm soát: xem xét một phòng kín (kín), có hình khối với các bức tường của một vật liệu cụ thể (trong đó tính chất tôi xác định), nhiệt độ không khí, áp suất, độ ẩm, v.v ... đều được kiểm soát. Tai là con người. Tôi thậm chí không cần phải xem xét phần còn lại của cơ thể. Trong thực tế, thay vì liệt kê đen, tôi có thể chỉ định chính xác thông số nào tôi sử dụng và xác định (không đổi) tất cả phần còn lại. Đó là thế giới (ảo) của tôi: Tôi xác định nó như tôi muốn.
Félix Saparelli

Quan điểm của tôi là số lượng nỗ lực mà một công cụ âm thanh như vậy sẽ yêu cầu trong trường hợp chung là không xứng đáng. Đặc biệt là khi các kỹ sư âm thanh tài năng có thể giả mạo rất thuyết phục bất kỳ hiệu ứng nào bạn cần. Doppler được tích hợp sẵn trong tiếng vang, giảm xóc, vv đều có thể được thực hiện với bộ lọc.
deft_code

8

Bạn muốn mô hình vật lý? Hãy thử Bộ công cụ tổng hợp:

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

Bạn sẽ phải tự viết mã keo để tự đặt tốc độ / biên độ gió.

Những gì bạn đang yêu cầu chưa thực sự được phát minh. Chúng tôi đang tiến lại gần - kiểm tra xem, tôi đã thấy nó vào một ngày khác:

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


Công cụ thú vị. Ý tôi là vậy, và nó chưa được thực hiện cũng không cản trở tôi. Tôi không có kế hoạch bắt đầu công việc thực tế (phi khái niệm) trên đó trước 1-2 năm.
Félix Saparelli

4

Tôi nghi ngờ bạn sẽ tìm thấy một công cụ âm thanh vật lý. Những gì có nhiều khả năng là sử dụng bất kỳ công cụ vật lý nào bạn thích (chẳng hạn như Bullet ) và sử dụng OpenAL cho âm thanh. Tính toán vị trí của sáo và sử dụng vị trí của Nguồn.


Tôi muốn khá nhiều hơn thế mặc dù.
Félix Saparelli

1
Nhiều hơn những gì bạn muốn? Với đề xuất của tôi, bạn có thể có vị trí của âm thanh thay đổi mọi khung hình. Tôi nghĩ rằng tôi đang thiếu một cái gì đó.
Vịt Cộng sản

6
Tôi nghĩ rằng anh ta có nghĩa là mô phỏng sóng không khí và các rung động khác để tạo ra âm thanh. Và chắc chắn điều đó là có thể, nhưng không có máy tính nào (ngoại trừ một số cụm siêu máy tính) có thể tính toán rằng đối với bất kỳ không gian kích thước hữu ích nào trong thời gian thực, vì vậy, nếu bạn muốn nói thì không có điều đó (cũng không có nhu cầu thực sự, hãy sử dụng công cụ vật lý và đọc dữ liệu va chạm để chơi một mẫu thích hợp là "đủ gần").
Elva

3
Nếu bạn muốn nâng cao điều đó, không chỉ có a) Giống như Yourdoom đã nói, không có cách nào mà một máy tính bình thường có thể làm được, và b) không ai có thể nói sự khác biệt.
Vịt Cộng sản

3
Vẫn còn rất nhiều trò chơi hiện đại làm (và các API cấp cao hơn như FMOD cung cấp) mà OpenAL không thể làm được, hoặc ít nhất là không làm được điều đó - chẳng hạn như các hiệu ứng dựa trên khối lượng (hình học), có thể được nối thêm đến cổng để mô phỏng âm thanh đi qua nhiều phòng. Nó không phổ biến, nhưng nó đã được thực hiện, và bạn có thể nói sự khác biệt.

4

Phya là một thư viện tổng hợp âm thanh va chạm dựa trên "lấy mẫu vật lý" có thể được điều khiển bởi một công cụ vật lý trò chơi. (Bullet đã được sử dụng trong các ví dụ)

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

Không chắc chắn những gì mới nhất là, bản cập nhật trang web cuối cùng là hơn một năm trước.

Nó không phải là quá nhiều để mô hình hóa sự cộng hưởng của không khí trong một âm lượng, nhưng có lẽ có thể là một ví dụ tốt về cách điều khiển tổng hợp âm thanh thời gian thực từ vật lý.

Tôi nghĩ rằng điều này không cần phải là một cam kết đắt đỏ vô cùng, Vấn đề được nêu là hoàn toàn có tính quyết định và có thể đạt được trên phần cứng hiện đại. (ít nhất đến một mức độ phù hợp cho một sản phẩm giải trí / học tập.)

Câu hỏi cần trả lời là bạn cần mô phỏng đầy đủ như thế nào, và bạn có thể giả mạo bao nhiêu? Đối với âm thanh chỉ cần có một số loại điều chế âm thanh theo thời gian thực một cách hợp lý có sức thuyết phục sẽ giúp bạn rất nhiều mà không phải mô hình các rung động âm thanh xuống phân tử.

Có lẽ điều này giúp. Câu hỏi hay, btw.

-j


Tôi có thể giả rất nhiều. Chỉ ... ít hơn nhiều so với các trò chơi video hiện đại. Đó là điểm: Tôi không tạo ra một trò chơi video, mà là một trò chơi âm thanh. Kinda.
Félix Saparelli

3

Trên thực tế, việc thực hiện một mô phỏng chính xác về vật lý liên quan ở đây sẽ phức tạp hơn (và đắt tiền về mặt tính toán) so với một hệ thống vật lý chạy như nhà máy như Havok hay Bullet. Một hệ thống vật lý truyền thống được tối ưu hóa cho các cơ thể cứng và cơ thể mềm, cả hai đều bị giới hạn về độ phức tạp của lưới vì lý do tốc độ.

Mặt khác, âm thanh là sự lan truyền sóng trong không khí và tần số được tạo ra bởi một cái gì đó giống như ví dụ của bạn phụ thuộc vào hàng tấn tài sản. Nó làm bằng vật liệu gì? Mô hình toán học nào chúng ta nên sử dụng cho các hạt không khí tương tác với vật liệu đó? Nếu đó là hình dạng ống, kích thước của ống là gì? (Điều này xác định tần số cộng hưởng.) V.v.

Trên hết, bạn phải chạy một mô phỏng hạt khá tinh vi để mô hình hóa không khí, cũng như trích xuất các sóng chuyển động của hạt mà về cơ bản là sóng âm đập vào màng nhĩ của bạn. Và thậm chí đừng đề cập đến màng nhĩ, bởi vì sự cộng hưởng của sóng trong ống tai của bạn cũng ảnh hưởng đến những gì bạn nghe thấy.

Nói chung, đây là cách mô phỏng quá nhiều cho một trò chơi hiện tại để thực hiện, đặc biệt là nếu bạn có bất kỳ hy vọng nào về tốc độ khung hình tương tác. Như deft_code đã lưu ý, các trò chơi hiếm khi được mô phỏng chính xác, nhưng lại được làm giả một cách vẻ vang. Cách tốt nhất để tiếp cận điều này có lẽ là bắt đầu với một bộ mẫu âm thanh lớn và bắt đầu chạy mọi thứ thông qua DSP cho đến khi bạn nắm được cách bạn có thể tác động đến hiệu ứng của những âm thanh đó. DSP chắc chắn đủ nhanh cho các trò chơi thời gian thực và nếu âm thanh là một thành phần lớn thì sẽ rất hợp lý khi dành một phần kha khá thời gian khung hình của bạn để xử lý âm thanh.

tl; dr: Mô phỏng chính xác có lẽ là câu hỏi trong nhiều năm tới. Trò chơi tuyệt vời giả nó. Với một bộ mẫu đủ lớn và đủ điều chỉnh DSP, bạn cũng có thể giả mạo nó.


2

Kiểm tra phương pháp của chúng tôi.

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

Thư viện phát triển sử dụng Beamtracing để cung cấp cho người dùng khả năng cách âm hóa thực tế. Tất cả các hiệu ứng âm thanh được tính toán dựa trên hình học thực tế của một cấp độ trò chơi nhất định cũng như các thuộc tính âm thanh của nó (vật liệu âm thanh, suy giảm không khí). Âm thanh thay đổi linh hoạt cùng với chuyển động của nhân vật trò chơi và nguồn âm thanh. Thuật toán tạo đường dẫn âm thanh hỗ trợ các hiện tượng như phản xạ gương, phản xạ khuếch tán và nhiễu xạ cạnh, trong khi xử lý âm thanh hỗ trợ lọc tín hiệu (mô hình hóa không khí, tác động phản xạ / nhiễu xạ, v.v.), mô hình hiệu ứng Doppler và hiệu ứng không gian. Cuối cùng, âm thanh định hướng được thực hiện bằng HRTF trên mỗi đường dẫn âm thanh.


0

Tôi nhận ra đây là một câu hỏi cũ, nhưng mọi thứ đã tiến triển trong vài năm qua, và những gì bạn đang mô tả đang ngày càng trở nên khả thi hơn, tính toán.

Các công cụ như Bộ công cụ tổng hợp được sử dụng để trả lời loại câu hỏi sau: "Công cụ vật lý của tôi nói với tôi rằng sáo đang rung theo cách tương tự. Điều đó tạo ra lưu ý gì?"

Có một câu hỏi lớn khác phải được trả lời, mặc dù: "Ghi chú này nghe như thế nào từ vị trí của người nghe?"

Đó là một quan niệm sai lầm phổ biến rằng các API âm thanh như OpenAL quan tâm đến vấn đề này. Trong thực tế, tất cả những gì họ làm là những gì được gọi là âm thanh vị trí . Chúng không mô hình lan truyền âm thanh: sự tương tác giữa sóng âm thanh và môi trường. Truyền âm thanh bao gồm trả lời các câu hỏi như:

  • Là căn phòng này đủ lớn để có tiếng vang đáng chú ý?
  • Hay là đồ nội thất trong phòng hấp thụ hầu hết âm thanh?
  • Khi đứng ngoài trời, tôi có nên nghe tiếng vang từ một ngọn đồi xa không? Một tòa nhà gần đó?
  • Liệu âm thanh tiêu tan trên một khoảng cách dài?
  • Là nguồn âm thanh bị chặn (ẩn) từ người nghe?
  • Nếu vậy, có những tuyến đường thay thế mà sóng âm thanh có thể sử dụng để tiếp cận người nghe? Có lẽ từ dưới một cánh cửa đóng kín, xung quanh một góc hành lang, hoặc thông qua một lỗ thông hơi?

Phonon là một công cụ vật lý âm thanh trả lời những câu hỏi này. (Công bố đầy đủ: Tôi tham gia phát triển Phonon.) Với Phonon, người dùng cần chỉ định một bộ thông số rất nhỏ (hệ số hấp thụ và tán xạ). Phonon sau đó thực hiện vừa đủ tính toán để có thể tái tạo một cách thuyết phục hiệu ứng lan truyền âm thanh cho người nghe.

Phonon hiện có sẵn như là một plugin cho Unity. Ngoài PC và di động, Phonon cũng có thể chạy trên các nền tảng VR như Oculus Rift, và nó cũng tạo ra sự khác biệt đáng chú ý ở đó.

Hi vọng điêu nay co ich!


0

Khi đọc câu hỏi của bạn, tôi có thể dịch nó theo hai cách.

  1. Có một động cơ có thể tạo ra âm thanh dựa trên mô phỏng vật lý? Chẳng hạn như không khí thổi qua một cây sậy, hoặc một cây búa đập vào một chuỗi?

Trong chơi game? không phải là tôi đã nghe nói.

  1. Có một động cơ phát các âm thanh có sẵn nhưng sửa đổi chúng dựa trên thông tin vật lý như khoảng cách từ micrô để mô phỏng "trải nghiệm âm thanh vòm"?

Đúng! chúng được gọi là "công cụ âm thanh 3D", một công cụ nổi tiếng là OpenAL .

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.