Menggunakan harmonik bola untuk membangun scape suara yang kompleks


16

Saya sedang berdiskusi di tempat kerja hari ini tentang cara meningkatkan pemodelan akustik ruang. Disarankan bahwa sangat sedikit pekerjaan yang tampaknya telah dilakukan pada subjek namun ton telah dilakukan dalam grafik. Lebih lanjut dikatakan bahwa suara dan cahaya hanyalah bentuk gelombang, maka dimungkinkan untuk menggunakan hal-hal seperti ray tracing dan radio untuk mendapatkan perkiraan yang baik.

Pada titik ini saya mulai berpikir tentang harmonik bola untuk mensimulasikan perilaku ini. Anda dapat secara bersamaan melakukan refleksi specular-esque serta hamburan audio yang dimodelkan sebagai refleksi difus. Sebagai bonus, Anda juga akan mendapatkan penghalang yang memblokir transfer suara. Satu-satunya masalah adalah bagaimana menangani atenuasi beberapa frekuensi. Tentunya ini bisa dimodelkan dengan menerapkan beberapa bentuk transformasi ke spektrum audio (FFT).

Ngomong-ngomong, apakah ada yang tahu ada makalah tentang hal ini, terutama tentang bagaimana hal itu akan dilakukan secara real-time. Gagal bahwa ada yang mendapat saran atau informasi umum yang bermanfaat?


1
Ini mengingatkan saya pada game indie Devil's Tuning Fork: indiegames.com/blog/2009/11/freeware_game_pick_devils_tuni.html (tonton videonya untuk merasakan yang baik untuknya!)
Ricket

Jawaban:


5

Ya, itu ide yang bagus. Malham sudah menulis makalah tentang ini, yang didasarkan pada beberapa komentar oleh Menzies (kembali pada tahun 1999!).

Perhatikan juga tesis MASc Nosal yang membahas penggunaan radiositas untuk akustik.

Sedangkan untuk pencahayaan, (yang terdiri dari 3 set fungsi, satu untuk R, satu untuk G, satu untuk B) Anda perlu melakukan "set" fungsi SH yang berbeda untuk setiap pita frekuensi kasar yang ingin Anda wakili (katakan satu untuk frekuensi rendah, 60Hz-1kHz, satu untuk pertengahan 1kHz-2kHz, satu untuk 10kHz-20kHz tinggi, dll). Biarkan semuanya di bawah 60 Hz melewati segala sesuatu (yang cukup banyak suara di kehidupan nyata)

Anda perlu memodelkan kemampuan refleksi akustik dari masing-masing material, seperti halnya material yang menyala masing-masing merespons RGB secara berbeda.


3

Kedengarannya seperti masalah yang menarik, meskipun saya bertanya-tanya berapa banyak akurasi yang Anda butuhkan sebelum orang tidak bisa mengatakannya. Bagaimanapun, jawaban ini berfokus pada bagian "waktu nyata", tetapi saya tidak tahu makalah apa pun karena itu bukan sesuatu yang saya selidiki.

Tentunya jika Anda ingin menghitung ini secara akurat dalam waktu nyata, dengan sumber suara seluler, menghitung refleksi akan lebih cepat menggunakan kartu grafis. Misalnya jika Anda memiliki versi dunia yang disederhanakan berjalan secara bersamaan, Anda dapat menggunakannya untuk membuat "pola refleksi" menjadi tekstur atau cubemap dan menyimpulkan dari tekstur itu bagaimana Anda harus mengeluarkan suara. Suara (atau band frekuensi suara terpisah) dalam model itu akan menjadi sumber cahaya titik. Dengan hanya pantulan dasar (1 bouncing) Anda mungkin menemukan bahwa Anda tidak memerlukan akurasi lagi, sementara ini harus sangat cepat terutama dengan geometri yang disederhanakan dan resolusi yang lebih rendah. Saya tidak sepenuhnya yakin apakah ada masalah kinerja dengan beberapa adegan pada satu kartu grafis.

Semakin jauh ke daerah saya tahu sedikit tentang, pohon BSP sepertinya bisa berguna untuk gelombang yang melengkung di sudut karena (saya pikir) itu mendefinisikan volume dan koneksi mereka ke volume lain.

Bergantung pada situasinya, optimisasi lebih lanjut adalah untuk menyimpan hasil dari tes di atas. Misalnya, menyimpan cubemap suara yang dapat diputar berdasarkan orientasi pemain tetapi tidak dihitung ulang seluruhnya, atau beberapa cubemaps yang dapat Anda interpolasi di antaranya berdasarkan pada posisi pemain.


Namun menurut saya, Anda bisa mendapatkan pantulan specular & difus serta "tikungan sudut tikungan" dan penghambat semua untuk, cukup banyak, gratis menggunakan harmonik bola dalam beberapa cara ...
Goz

Oke, setelah benar-benar mulai memahami apa itu harmonik bola dan bagaimana mereka berlaku, bagian kartu grafis (ayat 2) cukup tidak relevan. Bit tentang pohon BSP mungkin masih berguna, dengan asumsi Anda memiliki permainan orang ke-3 / ke-1 yang cukup, karena umumnya geometri yang disederhanakan untuk level. (Mirip dengan "sel adjacency grafik" di kertas AShelly tertaut). Tidak menghitung ulang setiap frame juga bisa menghemat pemrosesan.
Toeofdoom


2

Saya belum benar-benar mencoba ini, tetapi saya selalu bertanya-tanya apakah pendekatan seperti volume perambatan cahaya dapat digunakan untuk audio. Dalam volume propagasi cahaya tekstur 3d kecil digunakan (32x32x32 saya percaya) di mana bouncing cahaya dan oklusi disimulasikan oleh banjir mengisi tekstur 3d. Karena menggunakan harmonik bola, mungkin dapat melakukan ini dengan audio juga. Saya bukan ahli audio


2

Program grafis komputer Doug James dari Cornell telah melakukan banyak pekerjaan dalam pemodelan suara yang akurat dalam suatu lingkungan. Namun, sebagian besar dari kertas menangani kasus-kasus tertentu generator suara (benda shell tipis, api, dll) Mereka juga mungkin tidak cukup efisien untuk melakukan secara real-time bersama dengan tugas-tugas lain permainan Anda harus lakukan.

Namun, mungkin berguna bagi Anda untuk membaca beberapa di antaranya. Ini dapat memberi Anda ide tentang bagaimana melanjutkan dan / atau memodifikasi pendekatannya menjadi lebih kasar tetapi cukup efisien untuk kinerja waktu nyata.

Situsnya ada di sini:

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

Yang menarik adalah kertas "Harmonic Cairan" dan "Kerang Harmonik" nya.


1

Saya juga telah memikirkan hal ini. Aku merasakan perhatian utama (dalam hal realisme / kinerja perdagangan-off) adalah bahwa spasial telinga Anda lebih rendah ke mata Anda - dan cukup mudah menerima sesuatu yang mungkin tidak serealistis mata Anda akan membutuhkan. Ada peluang yang sangat bagus untuk mencoba memodelkan suara dengan sempurna di lingkungan lokal secara berlebihan - EAX mungkin 'cukup baik'.

Dalam lingkungan tertutup (misalnya Gempa), saya pertama-tama akan menghitung dua properti tentang setiap kamar: 'transferrance' dan perendaman:

Transferrance akan menunjukkan bagaimana suara akan dipengaruhi oleh perjalanan melalui ruangan ini dan kemungkinan besar akan dihitung menuju EQ parametrik (idealnya Anda akan menambahkan gema / reverb dari setiap kamar, tetapi chip EAX Anda mungkin tidak memiliki bandwidth sebanyak ini). EQ parametrik juga pada akhirnya akan mensimulasikan redaman suara.

Perendaman akan dihitung dengan membagi ruangan menjadi sembilan kubus (mungkin, bahkan hanya satu mungkin cukup bagus) dan menghitung properti suara lokal dari perspektif itu. Parameter ini akan digunakan di lingkungan EAX.

Akhirnya setiap kamar Anda akan dihubungkan oleh grafik, di mana setiap titik dalam grafik adalah portal yang menghubungkan setiap kamar.

Ketika suara dipicu Anda akan mengisi banjir (tidak ada pencarian A *) dan melacak perpindahan dan jarak yang ditempuh. Ketika suara mencapai pemain Anda akan mengantri untuk bermain di beberapa titik di masa depan; berdasarkan jarak yang ditempuh. Anda mungkin melacak jumlah titik grafik yang dilewati dan akhirnya 'menyisihkan' suara (dengan kata lain, pengisian banjir terus menerus). Anda mungkin harus menggunakan CUDA untuk melakukan ini karena bisa membuat CPU terikat.

Ketika sebuah suara diputar, Anda akan menggunakan API suara 3D (OpenAL) untuk dan meletakkannya di portal tempat ia masuk, Anda kemudian akan mencari tahu dari sembilan kubus mana pemain saat ini berada dan menerapkan lingkungan EAX itu.

Yang rapi di sini adalah bahwa jika lingkungan Anda cukup kompleks Anda akan mendapatkan gema 'global' gratis dan pemain akan merasakan suara datang dari arah yang benar; dan jika Anda memperbaiki lingkungan EAX semoga efeknya cukup meyakinkan sehingga otak akan menerimanya.

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.