เอ็นจิ้นเสียง 3 มิติแบบฟิสิกส์ (หรือที่ใกล้เคียง)


11

ฉันยังใหม่กับการเขียนโปรแกรมเกมแม้ว่าฉันจะมีประสบการณ์หลายปีในการพัฒนาคอนโซล / เว็บ ปัญหาของฉันไม่มากจนฉันไม่สามารถหาสิ่งที่ฉันกำลังมองหาได้ แต่ฉันไม่มีคำศัพท์ที่จะทำการค้นหาให้สำเร็จได้จริง

ฉันกำลังมองหาเอ็นจิ้นฟิสิกส์ที่ให้ความสำคัญกับเสียง อันที่จริงฉันไม่สนใจอะไรเลย สิ่งที่ฉันหมายถึงคือตัวอย่างที่อธิบายได้ดีกว่า:

สมมติว่าเกมประเภทบุคคลที่ 1 คุณกำลังหันหน้าไปทางทิศเหนือและมีใครบางคนรอบ ๆ ตัวคุณขว้างขลุ่ยใส่คุณ (ไม่เป็นไรกับสถานการณ์ที่ไร้สาระ) ขลุ่ยจะสปินขณะที่มันกำลังเดินทางทำให้เสียงผ่านรูของมัน มีลมพัดทางทิศใต้ 5 นอต

ฉันนึกภาพเครื่องยนต์ฟิสิกส์จะสามารถคำนวณเส้นทางการเคลื่อนที่ของฟลูตเช่นเดียวกับทิศทางที่ใช้หลังจากที่มันกระทบ สิ่งที่ฉันต้องการสำหรับเครื่องมือฟิสิกส์ในการคำนวณเสียงที่แม่นยำที่จะทำจากมุมมองของผู้ฟัง

มีเอ็นจินดังกล่าวอยู่หรือไม่? ถ้ามีหลายอันอันไหนจะดีที่สุดสำหรับตัวอย่างด้านบน?

คำตอบ:


10

คุณกำลังถามคำถามผิด คุณกำลังทำผิดพลาดโปรแกรมเมอร์เกมใหม่ ๆ เกมไม่ใช่เกมจำลองสถานการณ์ที่สมบูรณ์แบบพวกเขายังไม่ปิด เกมจำลองเพียงพอที่จะสนุก / น่าสนใจ ทุกอย่างอื่นแกล้ง

ตัวอย่างในประเด็น:
World of Goo: จำลองมวลความต้านทานแรงดึงและความยืดหยุ่น ส่วนที่เหลือเป็นแกล้งเพราะมันไม่ได้เพิ่มความรู้สึกของเกม ตัวอย่างเช่นมันไม่ได้จำลองแรงโน้มถ่วง วัตถุทั้งหมดเร่งความเร็วด้วยแรงคงที่ วัยเด็กแกล้งทำ Ballons ดึงขึ้นด้วยแรงคงที่และลูกบอลสารที่หนาใต้น้ำจะมีแรงขึ้นอย่างต่อเนื่องเช่นกัน ทั้งหมดนี้ใช้งานได้ดีสำหรับเกม อย่างไรก็ตามมันจะพังหากคุณพยายามสร้างลิฟต์อวกาศด้วยเครื่องยนต์ฟิสิกส์ของ World of Goo

ให้จินตนาการว่าเป็นเครื่องเสียงที่ใช้เทคโนโลยีฟิสิกส์ที่ใกล้เคียง ผลกระทบสิ่งแวดล้อมมีอะไรบ้าง เป็นขลุ่ยในถ้ำหรือในเขตข้อมูล เครื่องยนต์มีชุดของสภาพแวดล้อมที่กำหนดไว้ล่วงหน้า (เท่าไร?) หรือคิดออกโดยการคำนวณสภาพภูมิประเทศจริง (ใช่เลย) ผู้เล่นมีหูแบบบอกทิศทาง (ala human) หรือแค่รูหู (ala dolphin หรือ alien) หรือหลายทิศทางเหมือนสัตว์หรือไม่? อากาศร้อนหรือไม่? มันชื้นแค่ไหน รายการนี้สามารถควบคุมได้อย่างรวดเร็ว

ทีนี้สมมติว่าขณะนี้มีเอนจิ้นเสียงฟิสิกส์จริงดังกล่าวอยู่ คุณต้องการใช้มันเพื่อสร้างเกมหรือไม่? ใช้เวลานานแค่ไหนในการกำหนดเสียงขลุ่ยที่ลอยผ่านอากาศ คุณต้องใช้พารามิเตอร์กี่ตัวเพื่อให้ถูกต้อง (100 ข้อ)

สิ่งที่คุณควรถามคือ:
ฉันจะจำลองเสียงขลุ่ยได้อย่างไรเมื่อมันบินผ่านเครื่องเล่น

OpenAL สามารถทำสิ่งที่คุณต้องการ

  • ผู้ฟังทิศทาง
  • แหล่งกำเนิดเสียงทิศทาง
  • ความเร็วของแหล่งกำเนิดและผลกระทบของ doppler

ฉันอยากจะแนะนำให้มีเสียงเอฟเฟกต์ซ้ำ ๆ ของขลุ่ยที่กำลังหมุน ใส่ตำแหน่งของผู้เล่นและตำแหน่ง / ความเร็วของฟลุต ข้ามสิ่งที่ทิศทางสำหรับตอนนี้
คุณสามารถบันทึกเสียงที่มาจากปลายแต่ละด้านของฟลุตขณะที่อากาศไหลผ่านและให้ฟลุตใช้แหล่งกำเนิดเสียงสองแหล่ง แต่ฉันสงสัยว่ามันจะคุ้มค่ากับความพยายามเว้นแต่ว่าช่างเกมทั้งหมดหมุนรอบ ๆ โยนและหมุนขลุ่ย


ความคิดของเกมทั้งหมดหมุนรอบวัตถุที่เคลื่อนไหวทำให้เกิดเสียง ตัวอย่างที่ให้มามีความซับซ้อนเกินความมุ่งหมายอย่างไรก็ตามแนวคิดของเกมเกี่ยวข้องกับวัตถุที่ทำให้เกิดเสียงในขณะเคลื่อนไหว
Félix Saparelli

พารามิเตอร์ส่วนใหญ่จะถูกควบคุมจริง: พิจารณาปิด (ปิดผนึก) ห้องลูกบาศก์ที่มีผนังของวัสดุเฉพาะ (ซึ่งคุณสมบัติที่ฉันกำหนด) อุณหภูมิอากาศความดันความชื้น ฯลฯ ทั้งหมดจะถูกควบคุม หูเป็นมนุษย์ ฉันไม่จำเป็นต้องพิจารณาส่วนที่เหลือของร่างกายด้วยซ้ำ ในความเป็นจริงแทนที่จะเป็นบัญชีดำฉันสามารถระบุได้อย่างชัดเจนว่าฉันใช้พารามิเตอร์ใดและกำหนด (คงที่) ที่เหลือทั้งหมด มันเป็นโลกของฉัน (เสมือน): ฉันกำหนดตามที่ฉันต้องการ
Félix Saparelli

ประเด็นของฉันคือปริมาณของความพยายามที่เครื่องเสียงต้องการในกรณีทั่วไปนั้นไม่คุ้มค่า โดยเฉพาะอย่างยิ่งเมื่อวิศวกรเสียงที่มีพรสวรรค์สามารถปลอมผลกระทบใด ๆ ที่คุณต้องการ Doppler ถูกสร้างขึ้นมาเสียงสะท้อนการทำให้หมาด ๆ ฯลฯ สามารถทำได้ด้วยการกรอง
deft_code

8

คุณต้องการสร้างแบบจำลองทางกายภาพหรือไม่ ลองใช้เครื่องมือการสังเคราะห์:

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

คุณจะต้องเขียนรหัสกาวซึ่งกำหนดความเร็วลม / แอมพลิจูดด้วยตัวคุณเอง

สิ่งที่คุณขอยังไม่ได้ถูกคิดค้นขึ้นมาจริงๆ เราใกล้เข้ามา - ลองดูสิฉันเห็นมันเมื่อวันก่อน:

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


สิ่งที่น่าสนใจ นี่คือสิ่งที่ฉันหมายถึงและมันยังไม่เสร็จไม่ขัดขวางฉัน ฉันไม่ได้วางแผนที่จะเริ่มต้นทำงานจริง (ไม่ใช่แนวคิด) กับมันก่อน 1-2 ปี
Félix Saparelli

4

ฉันสงสัยว่าคุณจะพบเครื่องมือฟิสิกส์ - เสียง มีโอกาสมากขึ้นที่จะใช้เครื่องมือฟิสิกส์ที่คุณชอบ (เช่นกระสุน ) และใช้OpenALเป็นเสียง คำนวณตำแหน่งของฟลูตและใช้เป็นตำแหน่งของซอร์ส


ฉันต้องการมากกว่านั้น
Félix Saparelli

1
คุณต้องการอะไรอีก ด้วยคำแนะนำของฉันคุณสามารถเปลี่ยนตำแหน่งของเสียงได้ทุกเฟรม ฉันคิดว่าฉันขาดอะไรไป
The Duck Communist

6
ฉันคิดว่าเขาหมายถึงการจำลองคลื่นอากาศและการสั่นสะเทือนอื่น ๆ เพื่อสร้างเสียง และแน่นอนว่าเป็นไปได้ แต่ไม่มีคอมพิวเตอร์ (ยกเว้นบางกลุ่มคอมพิวเตอร์ super) สามารถคำนวณได้ว่าสำหรับพื้นที่ขนาดที่มีประโยชน์ใด ๆ ในเวลาจริงดังนั้นไม่ถ้าคุณหมายความว่าไม่มีสิ่งนั้น (และไม่มีความต้องการที่แท้จริงให้ใช้ เอ็นจิ้นฟิสิกส์และอ่านข้อมูลการชนเพื่อเล่นตัวอย่างที่เหมาะสมคือ "ใกล้พอ")
Elva

3
หากคุณต้องการที่จะได้รับขั้นสูงนั้นไม่เพียง แต่จะมีก) Like Yourdoom พูดว่าไม่มีทางที่คอมพิวเตอร์ธรรมดาสามารถทำได้และข) ไม่มีใครสามารถบอกความแตกต่างได้
The Communist Duck

3
ยังมีอีกมากที่เกมสมัยใหม่ทำ (และ API ระดับสูงกว่าเช่น FMOD ให้) ที่ OpenAL ไม่สามารถทำได้หรืออย่างน้อยก็ไม่ได้ออกนอกกรอบ - เช่นเอฟเฟกต์ที่ใช้ไดรฟ์ข้อมูลเชิงเรขาคณิต (เรขาคณิต) ซึ่งสามารถเพิ่มเติมได้ ไปที่พอร์ทัลเพื่อจำลองเสียงที่ผ่านหลายห้อง มันไม่ธรรมดา แต่ทำเสร็จแล้วและคุณสามารถบอกความแตกต่างได้

4

Phya เป็นห้องสมุดการสังเคราะห์เสียงที่ใช้การสุ่มตัวอย่างทางกายภาพซึ่งสามารถขับเคลื่อนด้วยกลไกของเกมฟิสิกส์ (กระสุนถูกใช้ในตัวอย่าง)

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

ไม่แน่ใจว่าสิ่งล่าสุดคือการอัปเดตไซต์ครั้งล่าสุดเมื่อปีที่แล้ว

มันไม่ได้เหมาะกับการจำลองเสียงสะท้อนของอากาศในระดับเสียง แต่อาจเป็นตัวอย่างที่ดีของวิธีการสังเคราะห์เสียงแบบเรียลไทม์จากฟิสิกส์

ฉันคิดว่าสิ่งนี้ไม่จำเป็นต้องเป็นภาระของซีพียูที่แพงมากปัญหาที่ระบุนั้นเป็นสิ่งที่กำหนดได้อย่างสมบูรณ์และควรจะทำได้บนฮาร์ดแวร์ที่ทันสมัย (อย่างน้อยถึงระดับที่เหมาะสมสำหรับผลิตภัณฑ์เพื่อความบันเทิง / การเรียนรู้)

คำถามที่ต้องตอบคือคุณจำเป็นต้องจำลองสถานการณ์อย่างเต็มที่และคุณสามารถปลอมได้มากแค่ไหน? สำหรับเสียงที่มีการปรับเสียงแบบเรียลไทม์บางอย่างในลักษณะที่สมเหตุสมผลทำให้คุณได้รับมากโดยไม่ต้องจำลองการสั่นของอะคูสติกลงไปที่โมเลกุล

บางทีนี่อาจช่วยได้ เป็นคำถามที่ดีนะ

-j


ฉันแกล้งทำมาก เพียง ... น้อยกว่าวิดีโอเกมร่วมสมัย ประเด็นคือ: ฉันไม่ได้สร้างวิดีโอเกม แต่เป็นเกมเสียง Kinda
Félix Saparelli

3

จริง ๆ แล้วการจำลองสถานการณ์ทางฟิสิกส์ที่เกี่ยวข้องกับที่นี่จะมีความซับซ้อนมากขึ้น (และมีราคาแพงในการคำนวณ) มากกว่าระบบฟิสิกส์แบบวิ่งหนีของโรงสีอย่าง Havok หรือ Bullet ระบบฟิสิกส์แบบดั้งเดิมได้รับการปรับให้เหมาะสมสำหรับวัตถุแข็งเกร็งและวัตถุอ่อนนุ่มซึ่งทั้งสองอย่างนั้นมีข้อ จำกัด ในความซับซ้อนของตาข่ายด้วยเหตุผลด้านความเร็ว

ในทางกลับกันเสียงคือการแพร่กระจายของคลื่นผ่านอากาศและความถี่ที่เกิดจากบางอย่างเช่นตัวอย่างของคุณขึ้นอยู่กับคุณสมบัติของตันและตัน มันทำจากวัสดุอะไร เราควรใช้แบบจำลองคณิตศาสตร์แบบใดสำหรับอนุภาคอากาศที่มีปฏิสัมพันธ์กับวัสดุนั้น ถ้าเป็นรูปหลอดขนาดของท่อคืออะไร? (สิ่งนี้กำหนดความถี่เรโซแนนท์) เป็นต้น ฯลฯ

เหนือสิ่งอื่นใดคุณต้องทำการจำลองอนุภาคที่ซับซ้อนเพื่อสร้างแบบจำลองอากาศรวมถึงการแยกคลื่นการเคลื่อนที่ของอนุภาคซึ่งเป็นคลื่นเสียงที่กระทบกับแก้วหูของคุณ และอย่าแม้แต่จะพูดถึงแก้วหูเพราะเสียงสะท้อนของคลื่นในช่องหูของคุณส่งผลกระทบต่อสิ่งที่คุณได้ยินเช่นกัน

ทั้งหมดนี้เป็นวิธีการจำลองที่มากเกินไปสำหรับเกมปัจจุบันที่จะแสดงโดยเฉพาะอย่างยิ่งหากคุณมีความหวังว่าจะมีอัตราเฟรมแบบโต้ตอบ ดังที่ deft_code ระบุว่าเกมเป็นเกมจำลองที่ไม่ค่อยแม่นยำ แต่เป็นเกมที่เลียนแบบอย่างน่าอัศจรรย์ วิธีที่ดีที่สุดในการเข้าใกล้สิ่งนี้อาจจะเริ่มจากชุดตัวอย่างเสียงขนาดใหญ่และเริ่มทำสิ่งต่าง ๆ ผ่าน DSP จนกว่าคุณจะเข้าใจว่าคุณสามารถส่งผลกระทบต่อเสียงเหล่านั้นได้อย่างไร DSP นั้นเร็วพอสำหรับเกมเรียลไทม์อย่างแน่นอนและถ้าเสียงนั้นเป็นองค์ประกอบที่ยิ่งใหญ่มันก็สมเหตุสมผลที่จะอุทิศเวลาในการประมวลผลเสียงให้กับคุณ

tl; dr: การจำลองที่แม่นยำอาจเป็นคำถามที่เกิดขึ้นเป็นเวลาหลายปี เกมที่ยอดเยี่ยมปลอมได้ ด้วยชุดตัวอย่างที่มีขนาดใหญ่พอและ DSP ที่ปรับแต่งได้คุณอาจปลอมแปลงได้เช่นกัน


2

ตรวจสอบแนวทางของเรา

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

ห้องสมุดที่พัฒนาแล้วใช้ประโยชน์จากบีทแทรซเพื่อให้ผู้ใช้ได้รับฟังเสียงที่สมจริง เอฟเฟกต์เสียงทั้งหมดคำนวณจากรูปทรงเรขาคณิตที่เกิดขึ้นจริงของระดับเกมที่กำหนดรวมถึงคุณสมบัติทางเสียง (วัสดุอะคูสติกการลดทอนอากาศ) เสียงจะเปลี่ยนไปตามการเคลื่อนไหวของตัวละครและแหล่งกำเนิดเสียง อัลกอริธึมการสร้างเส้นทางเสียงรองรับปรากฏการณ์เช่นการสะท้อนแสงแบบสะท้อนแสงแบบกระจายและการกระจายเสียงแบบขอบในขณะที่การประมวลผลเสียงรองรับการกรองสัญญาณ (การสร้างแบบจำลองการถ่ายโอนอากาศ ในที่สุดเสียงทิศทางจะดำเนินการโดยใช้ HRTF ต่อแต่ละเส้นทางเสียง


0

ฉันรู้ว่านี่เป็นคำถามเก่า แต่สิ่งต่าง ๆ มีความคืบหน้าในช่วงสองสามปีที่ผ่านมาและสิ่งที่คุณกำลังอธิบายกำลังกลายเป็นไปได้มากขึ้นและเป็นไปได้มากขึ้นในการคำนวณ

เครื่องมือเช่นการสังเคราะห์ใช้เพื่อตอบคำถามต่อไปนี้: "เครื่องมือฟิสิกส์ของฉันบอกฉันว่าฟลุตสั่นสะเทือนในลักษณะดังกล่าว - และ - อะไรที่ผลิตบันทึกอะไร?"

มีคำถามสำคัญอีกข้อหนึ่งที่ต้องตอบว่า: "โน้ตตัวนี้เสียงเหมือนอะไรจากตำแหน่งของผู้ฟัง"

เป็นความเข้าใจผิดที่ API เสียงเช่น OpenAL ดูแลเรื่องนี้ ในความเป็นจริงสิ่งที่พวกเขาทำคือสิ่งที่เรียกว่าเสียงตำแหน่ง พวกเขาไม่ได้จำลองแบบการถ่ายทอดเสียง:ปฏิสัมพันธ์ระหว่างคลื่นเสียงและสภาพแวดล้อม การถ่ายทอดเสียงเกี่ยวข้องกับการตอบคำถามเช่น:

  • ห้องนี้มีขนาดใหญ่พอที่จะมีเสียงสะท้อนหรือไม่?
  • หรือเฟอร์นิเจอร์ในห้องดูดซับเสียงส่วนใหญ่หรือไม่?
  • เมื่อยืนกลางแจ้งฉันควรได้ยินเสียงสะท้อนจากภูเขาที่ห่างไกลหรือไม่? อาคารใกล้เคียง
  • เสียงกระจายไปในระยะทางไกลหรือไม่?
  • แหล่งกำเนิดเสียงถูกปิดกั้น (ซ่อนอยู่) จากผู้ฟังหรือไม่
  • ถ้าเป็นเช่นนั้นมีเส้นทางอื่นที่คลื่นเสียงสามารถใช้เพื่อเข้าถึงผู้ฟังได้หรือไม่? อาจมาจากใต้ประตูที่ปิดรอบมุมห้องโถงหรือทางระบาย

Phononเป็นเครื่องมือทางฟิสิกส์ - เสียงที่ตอบคำถามเหล่านี้ (การเปิดเผยอย่างเต็มรูปแบบ: ฉันมีส่วนร่วมในการพัฒนา Phonon) ด้วย Phonon ผู้ใช้จำเป็นต้องระบุชุดพารามิเตอร์ที่เล็กมาก(การดูดซับและค่าสัมประสิทธิ์การกระเจิง) จากนั้น Phonon ทำการคำนวณที่เพียงพอเพื่อให้สามารถสร้างเอฟเฟกต์การกระจายเสียงสำหรับผู้ฟังได้อย่างน่าเชื่อถือ

ขณะนี้ Phonon ให้บริการเป็นปลั๊กอินสำหรับ Unity นอกเหนือจากพีซีและมือถือแล้ว Phonon ยังสามารถใช้งานบนแพลตฟอร์ม VR เช่น Oculus Rift และสร้างความแตกต่างที่เห็นได้ชัดเจนเช่นกัน

หวังว่านี่จะช่วยได้!


0

เมื่ออ่านคำถามของคุณฉันสามารถแปลได้สองวิธี

  1. มีเครื่องยนต์ที่สามารถสร้างเสียงตามแบบจำลองทางกายภาพหรือไม่? เช่นอากาศที่พัดผ่านกกหรือค้อนทุบเชือก?

ในการเล่นเกม? ไม่ใช่ที่ฉันเคยได้ยิน

  1. มีเอ็นจิ้นที่เล่นเสียงที่มีอยู่ก่อน แต่ปรับเปลี่ยนตามข้อมูลทางกายภาพเช่นระยะห่างจากไมโครโฟนเพื่อจำลอง "ประสบการณ์เสียงรอบทิศทาง" หรือไม่?

ใช่ พวกเขาจะถูกเรียกว่า "เครื่องยนต์เสียง 3 มิติ" ที่รู้จักกันดีคือหนึ่งOpenAL

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.