ใช้เสียงประสานทรงกลมเพื่อสร้างภาพเสียงที่ซับซ้อน


16

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

เมื่อมาถึงจุดนี้ฉันเริ่มคิดเกี่ยวกับเสียงประสานทรงกลมเพื่อจำลองพฤติกรรมนี้ คุณสามารถทำการสะท้อนแสงแบบ specular-esque พร้อมกันกับการกระเจิงของเสียงที่จำลองเป็นแบบการสะท้อนแบบกระจาย เป็นโบนัสที่คุณจะได้รับจากสิ่งกีดขวางการบล็อกการถ่ายโอนเสียง ปัญหาเดียวคือวิธีจัดการการลดทอนความถี่หลาย ๆ อย่าง แน่นอนว่านี่อาจเป็นแบบจำลองโดยใช้การแปลงรูปแบบบางส่วนกับสเปกตรัมเสียง (FFT)

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


1
นี่ทำให้ฉันนึกถึงเกม indie ของ Devil Fork Tuning: indiegames.com/blog/2009/11/freeware_game_pick_devils_tuni.html (ดูวิดีโอเพื่อให้รู้สึกดี!)
Ricket

คำตอบ:


5

ใช่มันเป็นความคิดที่ดี Malhamได้เขียนบทความเกี่ยวกับเรื่องนี้ซึ่งมีพื้นฐานจากความคิดเห็นของMenzies (ย้อนกลับไปเมื่อปี 2542)

โปรดสังเกตว่าการทำวิทยานิพนธ์ MASc ของ Nosal กำลังพูดถึงการใช้ radiosity สำหรับอะคูสติก

สำหรับแสง (ซึ่งมี 3 ชุดฟังก์ชั่นหนึ่งสำหรับ R, หนึ่งสำหรับ G, หนึ่งสำหรับ B) คุณจะต้องทำฟังก์ชั่น SH "ชุด" ที่แตกต่างกันสำหรับแต่ละความถี่ที่คุณต้องการเป็นตัวแทน (พูดหนึ่งสำหรับ ความถี่ต่ำ, 60Hz-1kHz, หนึ่งอันสำหรับกลาง 1kHz-2kHz, หนึ่งอันสำหรับ 10kHz-20kHz สูง, ฯลฯ ) ปล่อยให้ทุกสิ่งที่ต่ำกว่า 60Hz ผ่านทุกสิ่ง (ซึ่งค่อนข้างมากที่เสียงในชีวิตจริง)

คุณจำเป็นต้องสร้างแบบจำลองความสามารถในการสะท้อนเสียงของแต่ละวัสดุอย่างไรก็ตามเช่นเดียวกับวัสดุที่มีการส่องแสงแต่ละแบบตอบสนองต่อ RGB แตกต่างกัน


3

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

เห็นได้ชัดว่าหากคุณต้องการคำนวณสิ่งนี้อย่างแม่นยำในแบบเรียลไทม์ด้วยแหล่งกำเนิดเสียงมือถือการคำนวณการสะท้อนจะเร็วที่สุดโดยใช้กราฟิกการ์ด ตัวอย่างเช่นหากคุณมีเวอร์ชันที่เรียบง่ายของโลกที่ทำงานพร้อมกันคุณสามารถใช้มันเพื่อแสดง "รูปแบบการสะท้อนกลับ" ไปยังพื้นผิวหรือ cubemap และอนุมานจากพื้นผิวนั้นว่าคุณควรส่งเสียงออกมาอย่างไร เสียง (หรือคลื่นความถี่เสียงแยก) ในรูปแบบนั้นจะเป็นแหล่งกำเนิดแสงแบบจุด ด้วยการสะท้อนแบบพื้นฐาน (1 bounce) เท่านั้นคุณอาจพบว่าคุณไม่ต้องการความแม่นยำอีกต่อไปในขณะที่สิ่งนี้ควรจะรวดเร็วมากโดยเฉพาะกับรูปทรงเรขาคณิตที่เรียบง่ายและความละเอียดที่ลดลง แต่ฉันก็ไม่แน่ใจว่ามีปัญหาเรื่องประสิทธิภาพการทำงานกับหลาย ๆ ฉากในการ์ดกราฟิกเดียวหรือไม่

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

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


มันนัดฉันคิดว่าคุณจะได้รับการสะท้อนกระจกเงาและกระจายเช่นเดียวกับ "ดัดมุมรอบ" และ occluders ทั้งหมดสวยมาก, ฟรีโดยใช้ดนตรีทรงกลมในแฟชั่นบางอย่าง ...
Goz

โอเคหลังจากที่เริ่มเข้าใจถึงความกลมกลืนของทรงกลมและวิธีการใช้งานส่วนกราฟิกการ์ด (ย่อหน้า 2) นั้นไม่เกี่ยวข้องเลย บิตเกี่ยวกับต้นไม้ BSP อาจยังมีประโยชน์โดยสมมติว่าคุณมีเกมที่ค่อนข้างเป็นคนที่ 3 / คนที่ 1 เนื่องจากมันเป็นรูปทรงเรขาคณิตที่เรียบง่ายสำหรับระดับหนึ่ง (คล้ายกับ "กราฟการเติมเซลล์" ในเอกสาร AShelly linked) การคำนวณใหม่ทุกเฟรมไม่สามารถบันทึกการประมวลผลบางอย่างได้
Toeofdoom

3

2

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


2

โปรแกรมคอมพิวเตอร์กราฟิกของ Doug James of Cornell ได้ทำงานหลายอย่างในการสร้างแบบจำลองเสียงที่แม่นยำในสภาพแวดล้อม อย่างไรก็ตามเอกสารส่วนใหญ่ของเขาจัดการเฉพาะกรณีของเครื่องกำเนิดเสียง (วัตถุเปลือกบาง, เปลวไฟ, ฯลฯ ) พวกเขายังอาจไม่ได้มีประสิทธิภาพเพียงพอที่จะทำในเวลาจริงพร้อมกับงานอื่น ๆ ที่เกมของคุณต้องทำ

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

เว็บไซต์ของเขาอยู่ที่นี่:

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

สิ่งที่น่าสนใจเป็นพิเศษอาจเป็นกระดาษ "Harmonic Fluids" และ "Harmonic Shells" ของเขา


1

ฉันได้คิดเช่นนี้ด้วย ฉันรู้สึกว่าข้อกังวลหลัก (ในแง่ของความสมจริง / การแลกเปลี่ยนการแสดง) คือว่าหูของคุณอยู่ในตำแหน่งที่ด้อยกว่าดวงตาของคุณ - และค่อนข้างยอมรับในสิ่งที่อาจไม่สมจริงเหมือนที่คุณต้องการ มีโอกาสที่ดีมากที่พยายามจำลองเสียงอย่างสมบูรณ์แบบในสภาพแวดล้อมท้องถิ่นนั้นคือ overkill - EAX น่าจะ 'ดีพอ'

ในสภาพแวดล้อมที่ปิด (เช่น Quake) ก่อนอื่นฉันจะคำนวณคุณสมบัติสองประการเกี่ยวกับแต่ละห้อง: 'การถ่ายโอน' และการแช่:

Transferranceจะระบุว่าเสียงจะได้รับผลกระทบอย่างไรจากการเดินทางผ่านห้องนี้และน่าจะนับเป็นพารามิเตอร์ EQ (โดยหลักแล้วคุณควรเพิ่ม echo / reverb จากแต่ละห้อง แต่ชิป EAX ของคุณอาจไม่มีแบนด์วิดท์มาก) พารามิเตอร์ EQ ก็จะจำลองการลดทอนเสียงในที่สุด

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

ในที่สุดห้องพักแต่ละห้องของคุณจะเชื่อมต่อกันด้วยกราฟโดยที่แต่ละจุดในกราฟคือพอร์ทัลที่เชื่อมต่อแต่ละห้อง

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

เมื่อเล่นเสียงคุณจะใช้ 3D sound API (OpenAL) เพื่อวางไว้ที่พอร์ทัลที่ป้อนผ่านจากนั้นคุณจะพบว่าลูกบาศก์เก้าลูกที่ผู้เล่นกำลังใช้อยู่และใช้สภาพแวดล้อม EAX นั้น

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

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