Mesin suara 3d sempurna-fisik (atau di suatu tempat dekat) [ditutup]

11

Saya baru mengenal pemrograman game, meskipun saya memiliki beberapa tahun pengalaman dalam pengembangan konsol / web. Masalah saya bukan karena saya tidak dapat menemukan apa yang saya cari, hanya saja saya tidak memiliki terminologi untuk benar-benar melakukan pencarian yang berhasil.

Saya mencari mesin fisika yang memiliki fokus besar pada suara. Sebenarnya, saya tidak peduli sama sekali untuk hal lain. Apa yang saya maksud lebih baik dijelaskan dengan sebuah contoh:

Misalkan jenis permainan orang pertama. Anda menghadap ke Utara, dan seseorang di sekitar Anda melemparkan seruling ke arah Anda (jangan pernah menghiraukan absurditas situasinya). Seruling berputar saat sedang dalam perjalanan, membuat suara melalui lubangnya. Ada angin katakan, 5 knot Selatan.

Saya membayangkan mesin fisika akan mampu menghitung lintasan seruling, serta arah yang diperlukan setelah itu mengenai. Apa yang saya inginkan adalah mesin fisika menghitung suara yang akan dihasilkannya, dari perspektif pendengar mana pun.

Apakah ada mesin seperti itu? Jika ada beberapa, yang mana yang terbaik untuk contoh di atas?

Félix Saparelli
sumber

Jawaban:

10

Anda mengajukan pertanyaan yang salah. Anda membuat kesalahan yang dibuat oleh banyak programmer baru. Game bukan simulasi sempurna, mereka bahkan tidak dekat. Game hanya mensimulasikan agar menjadi menyenangkan / menarik. Yang lainnya dipalsukan.

Contoh kasus:
World of Goo: mensimulasikan massa, kekuatan tarik, dan elastisitas. Sisanya dipalsukan karena tidak menambah nuansa permainan. Misalnya itu tidak mensimulasikan gravitasi. Semua benda berakselerasi dengan kekuatan konstan. Boyancy itu palsu. Ballons menarik dengan kekuatan konstan dan bola goo di bawah air mengalami gaya ke atas yang konstan juga. Ini semua bagus untuk gim. Namun itu akan rusak jika Anda mencoba membuat lift ruang angkasa menggunakan mesin fisika World of Goo.

Mari kita bayangkan mesin suara berbasis fisika dekat sempurna. Bagaimana dengan efek lingkungan? Apakah seruling di gua atau di lapangan. Apakah mesin menyediakan seperangkat lingkungan yang telah ditentukan (berapa banyak?) Atau apakah ia mengetahuinya dengan menghitung topografi fisik aktual (ya benar)? Apakah pemain memiliki telinga terarah (ala manusia) atau hanya lubang telinga (ala lumba-lumba atau alien) atau multidirectional seperti binatang? Apakah udara panas? Betapa lembabnya itu. Daftar ini dapat dengan cepat keluar dari kendali.

Sekarang asumsikan sejenak suara mesin fisika sejati seperti itu ada. Apakah Anda benar-benar ingin menggunakannya untuk membuat game? Berapa lama waktu yang Anda butuhkan untuk menentukan suara seruling terbang di udara. Berapa banyak parameter yang harus Anda selesaikan (100?).

Apa yang seharusnya Anda tanyakan adalah:
Bagaimana saya bisa mensimulasikan suara seruling ketika terbang melewati pemain?

OpenAL dapat melakukan apa yang Anda inginkan.

  • Pendengar terarah
  • Sumber suara terarah
  • sumber kecepatan dan efek doppler.

Saya akan menyarankan memiliki efek suara berulang dari seruling berputar. Masukkan posisi pemain dan posisi / kecepatan seruling. Lewati hal-hal arah untuk saat ini.
Anda dapat merekam suara yang datang dari setiap ujung seruling saat udara mengalir dan membuat seruling menggunakan dua sumber suara. Tapi saya ragu itu akan sepadan dengan usaha kecuali seluruh mekanik permainan berputar dilemparkan dan berputar seruling.

deft_code
sumber
Ya, seluruh ide game berkisar pada benda bergerak yang mengeluarkan suara. Contoh yang diberikan terlalu kompleks dengan sengaja, namun ide permainan memang melibatkan benda-benda yang terdengar realistis dalam gerakan.
Félix Saparelli
Sebagian besar parameter akan dikontrol: pertimbangkan ruangan tertutup (tertutup), kubik dengan dinding bahan tertentu (yang sifatnya saya definisikan), suhu udara, tekanan, kelembaban, dll. Semuanya dikontrol. Telinga adalah manusia. Aku bahkan tidak perlu mempertimbangkan bagian tubuh yang lain. Bahkan, alih-alih daftar hitam, saya dapat menentukan dengan tepat params mana yang saya gunakan, dan mendefinisikan (konstan) sisanya. Ini adalah dunia (virtual) saya: Saya mendefinisikannya seperti yang saya inginkan.
Félix Saparelli
Maksud saya adalah bahwa jumlah upaya yang diperlukan oleh mesin audio seperti itu dalam kasus umum tidak sepadan. Terutama ketika teknisi suara yang berbakat dapat dengan sangat palsu memalsukan efek yang Anda butuhkan. Doppler sudah terpasang. Gema, redaman, dll semua bisa dilakukan dengan penyaringan.
deft_code
8

Anda ingin pemodelan fisik? Coba Perangkat Sintesis:

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

Anda harus menulis kode lem yang mengatur sendiri kecepatan angin / amplitudo.

Apa yang Anda minta belum benar-benar ditemukan. Kami semakin dekat - lihat ini, saya melihatnya kemarin:

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

homebrew
sumber
Hal yang menarik. Inilah yang saya maksudkan, dan itu belum selesai tidak menghalangi saya. Saya tidak berencana untuk memulai pekerjaan aktual (non-konseptual) sebelum 1-2 tahun.
Félix Saparelli
4

Saya ragu Anda akan menemukan mesin fisika-audio. Apa yang lebih mungkin adalah menggunakan mesin fisika yang Anda suka (seperti Bullet ) dan menggunakan OpenAL untuk suara. Hitung posisi seruling, dan gunakan itu sebagai posisi Sumber.

Bebek Komunis
sumber
Saya ingin sedikit lebih dari itu.
Félix Saparelli
1
Apa lagi yang kamu inginkan? Dengan saran saya, Anda dapat mengubah posisi suara setiap frame. Saya pikir saya kehilangan sesuatu.
Bebek Komunis
6
Saya pikir dia bermaksud mensimulasikan gelombang udara dan getaran lain untuk menghasilkan suara. Dan tentu saja itu mungkin, tetapi tidak ada komputer (kecuali mungkin beberapa kluster komputer super) yang dapat menghitung bahwa untuk setiap ruang ukuran yang berguna secara real time, jadi tidak, jika Anda bermaksud demikian maka tidak ada hal seperti itu (juga tidak ada kebutuhan nyata, gunakan mesin fisika dan membaca data tabrakan untuk memainkan sampel yang sesuai adalah "cukup dekat").
Elva
3
Jika Anda ingin mendapatkan yang canggih, tidak hanya ada a) Seperti kata Yourdoom, tidak mungkin komputer normal bisa melakukannya, dan b) tidak ada yang bisa membedakannya.
Bebek Komunis
3
Masih banyak yang dilakukan permainan modern (dan API tingkat tinggi seperti yang disediakan FMOD) yang tidak bisa dilakukan oleh OpenAL, atau setidaknya tidak dilakukan di luar kotak - seperti efektor berbasis volume (geometris), yang juga dapat dihubungkan. ke portal untuk mensimulasikan audio yang melewati beberapa kamar. Ini tidak umum, tetapi dilakukan, dan Anda dapat membedakannya.
4

Phya adalah pustaka sintesis audio tabrakan berbasis fisik "sampling" yang dapat didorong oleh mesin fisika game. (Peluru digunakan dalam contoh)

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

Tidak yakin apa yang terbaru, pembaruan situs terakhir adalah lebih dari setahun yang lalu sekarang.

Ini tidak banyak diarahkan untuk memodelkan resonansi udara dalam volume, tetapi mungkin bisa menjadi contoh yang baik tentang bagaimana mendorong sintesis audio real-time dari fisika.

Saya pikir ini tidak perlu menjadi usaha cpu-mahal yang mustahil, Masalahnya sepenuhnya deterministik dan harus dapat dicapai pada perangkat keras modern. (setidaknya ke tingkat yang cocok untuk produk hiburan / pembelajaran.)

Pertanyaan untuk dijawab adalah seberapa penuh Anda perlu mensimulasikan, dan berapa banyak yang dapat Anda tiru? Untuk audio yang hanya memiliki semacam modulasi suara realtime dengan cara yang cukup meyakinkan membuat Anda banyak tanpa harus memodelkan getaran akustik ke molekul.

Mungkin ini bisa membantu. Pertanyaan bagus, btw.

-j

Jason Cobb
sumber
Saya bisa banyak berpura-pura. Hanya ... jauh lebih sedikit daripada video game kontemporer. Itulah intinya: Saya tidak membuat video game, tetapi sebuah audio game. Agak.
Félix Saparelli
3

Sebenarnya melakukan simulasi yang akurat dari fisika yang terlibat di sini akan jauh lebih kompleks (dan mahal secara komputasi) daripada sistem fisika run-of-the-mill seperti Havok atau Bullet. Sistem fisika tradisional dioptimalkan untuk benda tegar dan benda lunak, yang keduanya terbatas dalam kompleksitas jala mereka karena alasan kecepatan.

Suara, di sisi lain, adalah perambatan gelombang melalui udara, dan frekuensi yang dihasilkan oleh sesuatu seperti contoh Anda bergantung pada berton-ton properti. Terbuat dari bahan apa? Model matematika apa yang harus kita gunakan untuk partikel udara yang berinteraksi dengan materi itu? Jika berbentuk tabung, apa dimensi tabung itu? (Ini menentukan frekuensi resonansi.) Dll, dll.

Di atas semua ini, Anda harus menjalankan simulasi partikel yang cukup canggih untuk memodelkan udara, serta mengekstraksi gelombang gerakan partikel yang pada dasarnya adalah gelombang suara yang mengenai gendang telinga Anda. Dan mari kita bahkan tidak menyebutkan gendang telinga, karena resonansi gelombang di saluran telinga Anda mempengaruhi apa yang Anda dengar juga.

Secara keseluruhan, ini adalah simulasi yang terlalu banyak untuk dilakukan oleh gim saat ini, terutama jika Anda memiliki harapan akan laju bingkai interaktif. Seperti dicatat deft_code, gim jarang simulasi yang akurat, tetapi gim palsu. Cara terbaik untuk mendekati ini mungkin akan mulai dengan set sampel suara yang besar dan mulai menjalankan hal-hal melalui DSP sampai Anda memahami bagaimana Anda dapat mempengaruhi efek dari suara-suara itu. DSP pasti cukup cepat untuk gim real-time, dan jika suara akan menjadi komponen besar maka masuk akal untuk mengabdikan sebagian besar waktu bingkai Anda untuk pemrosesan suara.

tl; dr: Simulasi yang akurat mungkin merupakan pertanyaan untuk beberapa tahun mendatang. Game hebat memalsukannya. Dengan set sampel yang cukup besar dan tweaker DSP yang cukup, Anda mungkin dapat memalsukannya juga.

Bob Somers
sumber
2

Periksa pendekatan kami.

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

Pustaka yang dikembangkan menggunakan beamtracing untuk menyediakan pengguna dengan aurisasi audio yang realistis. Semua efek audio dihitung berdasarkan geometri aktual dari level permainan tertentu serta sifat akustiknya (bahan akustik, atenuasi udara). Suara berubah secara dinamis seiring dengan pergerakan karakter permainan dan sumber suara. Algoritma pembuatan jalur suara mendukung fenomena seperti refleksi specular, refleksi difus dan difraksi tepi, sementara pemrosesan audio mendukung penyaringan sinyal (pemodelan pembuangan udara, dampak refleksi / difraksi dan sebagainya), pemodelan efek Doppler dan efek spasial. Akhirnya suara terarah diimplementasikan menggunakan HRTF per masing-masing jalur suara.

NoMoreMrNiceGaius
sumber
0

Saya menyadari ini adalah pertanyaan lama, tetapi beberapa hal telah mengalami kemajuan dalam beberapa tahun terakhir, dan apa yang Anda gambarkan menjadi semakin layak, secara komputasi.

Alat-alat seperti Synthesis Toolkit digunakan untuk menjawab pertanyaan berikut: "Mesin fisika saya memberi tahu saya bahwa seruling bergetar dengan cara begini dan begitu. Catatan apa yang dihasilkannya?"

Namun, ada pertanyaan besar lain yang harus dijawab: "Seperti apa nada suara ini dari posisi pendengar?"

Ini adalah kesalahpahaman umum bahwa API audio seperti OpenAL menangani ini. Bahkan, yang mereka lakukan hanyalah apa yang disebut audio posisi . Mereka tidak memodelkan perambatan suara: interaksi antara gelombang suara dan lingkungan. Propagasi suara melibatkan menjawab pertanyaan seperti:

  • Apakah ruangan ini cukup besar untuk bisa menjadi reverb yang nyata?
  • Atau apakah furnitur di ruangan menyerap sebagian besar suara?
  • Ketika berdiri di luar, haruskah saya mendengar gema dari bukit yang jauh? Bangunan terdekat?
  • Apakah suara menghilang dalam jarak jauh?
  • Apakah sumber suara tersumbat (tersembunyi) dari pendengar?
  • Jika demikian, apakah ada rute alternatif yang dapat digunakan gelombang suara untuk mencapai pendengar? Mungkin dari bawah pintu tertutup, di sudut lorong, atau melalui lubang angin?

Phonon adalah mesin audio-fisika yang menjawab pertanyaan-pertanyaan ini. (Pengungkapan penuh: Saya terlibat dalam pengembangan Phonon.) Dengan Phonon, pengguna perlu menentukan seperangkat parameter yang sangat kecil (koefisien penyerapan dan hamburan). Phonon kemudian melakukan perhitungan yang cukup untuk dapat secara meyakinkan menciptakan kembali efek perambatan suara untuk pendengar.

Phonon saat ini tersedia sebagai plugin untuk Unity. Terlepas dari PC dan seluler, Phonon juga dapat berjalan pada platform VR seperti Oculus Rift, dan itu membuat perbedaan yang nyata di sana juga.

Semoga ini membantu!

Lakulish Antani
sumber
0

Saat membaca pertanyaan Anda, saya bisa menerjemahkannya dengan dua cara.

  1. Apakah ada mesin yang dapat membuat suara berdasarkan simulasi fisik? Seperti udara yang bertiup melintasi buluh, atau palu yang menabrak tali?

Dalam game? Bukannya aku sudah pernah dengar.

  1. Apakah ada mesin yang memutar suara yang sudah ada tetapi memodifikasinya berdasarkan informasi fisik seperti jarak dari mikrofon untuk mensimulasikan "pengalaman suara surround"?

Iya! mereka disebut "mesin suara 3D" yang terkenal adalah OpenAL .

Nathan Goings
sumber