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.
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
sumber
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.
sumber
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
sumber
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.
sumber
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.
sumber
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:
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!
sumber
Saat membaca pertanyaan Anda, saya bisa menerjemahkannya dengan dua cara.
Dalam game? Bukannya aku sudah pernah dengar.
Iya! mereka disebut "mesin suara 3D" yang terkenal adalah OpenAL .
sumber