ฉันจะจำลองแก้วแตกได้อย่างไร


10

ฉันต้องทำการจำลองด้วยหินขว้างผ่านหน้าต่างกระจก ฉันจะทำให้สำเร็จได้อย่างไร

ฉันหมายถึงฉันกำลังคิดที่จะสร้างแบบจำลอง 3 มิติของหินและแก้วใน 3D Studio Max 2012 ทุบกระจกและส่งออกทั้งสองไปยัง XNA 4.0 เป็นรุ่น. x จากนั้นใน XNA สร้างแอนิเมชัน - เขียนเอนจินฟิสิกส์ของฉันเอง เป็นไปได้ไหม? เป็นไปได้หรือไม่ที่จะทำลายกระจกใน XNA หลังจากกระทบหรือควรทำใน 3DS Max หรือไม่? โดยการ 'ทำลายแก้ว' ฉันหมายถึงปลดเศษแก้วที่แตกก่อนหน้านี้ออกจากกันเนื่องจากขึ้นอยู่กับความเร็วเริ่มต้นและน้ำหนักของหินและความต้านทาน (ความแข็ง?) ของแก้ว (กำหนดโดยผู้ใช้ทั้งหมด) บิตจะปลดจาก ซึ่งกันและกันในรูปแบบที่แตกต่างกัน

คำตอบ:


5

Voronoi shatterเป็นวิธีการหนึ่งที่ใช้สร้างป่นปี้ที่เหมือนจริง แก้วแกร่งที่มีความสามารถโดดเด่นในการแตกเป็นเศษเล็กเศษน้อยมักจะนูนเนื่องจากการเปลี่ยนแปลงโครงสร้างแก้วในระหว่างการผลิต นอกจากนี้เนื่องจากคุณมีบานกระจกคุณจะต้องใช้ Voronoi 2D เท่านั้นไม่ใช่ 3D


3

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


สวัสดีนาธาน (อีกครั้ง) คุณทำงานนี้หลังจากปี 2011 หรือไม่? คุณสามารถให้คำแนะนำเพิ่มเติมได้อีกหรือไม่? ขอบคุณ
karlphillip

@karlphillip ฉันทำงานในการสาธิตโดยใช้PhysX Destructionถึงแม้ว่าโดยส่วนตัวแล้วฉันจะทำเฉพาะสิ่งต่าง ๆ เท่านั้นไม่ใช่สิ่งฟิสิกส์ในโครงการนั้น เทคโนโลยี PhysX ทำงานโดยการสร้างชิ้นส่วนที่เสียหายล่วงหน้าในเครื่องมือ DCC และทำการสับชิ้นงานเหล่านั้นเพื่อให้ตาข่ายไม่เสียหายเมื่อเกิดความเสียหาย
นาธานรีด

3

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

หากคุณขว้างก้อนหินหนึ่งก้อน (มีขนาดที่ค่อนข้างสอดคล้องกัน) ที่หน้าต่างจากนั้นคุณสามารถใช้แบบจำลอง 3 มิติของบานหน้าต่างที่แตกหักได้ (จำลองเศษที่วางในบานหน้าต่างแล้วเรียกใช้การจำลองทางฟิสิกส์แบบง่าย ๆ เศษเพื่อจำลองการตก / การบิน) นอกจากกล้องจะอยู่ใกล้มาก (หรือในแบบสโลว์โมชั่น) คุณไม่จำเป็นต้องทำการชนกันระหว่างชิ้น - เพียงแค่ใช้รูปทรงเรขาคณิตโดยรอบ (ระนาบกราวน์?) อย่าลืมสเปรย์เอฟเฟกต์อนุภาคสำหรับเมฆของอนุภาคแก้วขนาดเล็กที่มาพร้อมกับป่นปี้

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


2

หากคุณดาวน์โหลด Bullet Physics Libraryจะมีตัวอย่างที่มีกระจกแตกและคุณต้องการบางอย่างเช่นกระสุนในเกมที่มีกระจกแตก

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


1

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

ฉันใช้ bulledsharp (กระสุนฟิสิกส์ wrapper สำหรับ c #) สำหรับเครื่องยนต์ฟิสิกส์ แต่เป็นสิ่งสำคัญที่จะใช้ล่าสุดรวบรวมโดยตัวคุณเองกับแหล่ง bulletsharp จากแหล่ง svn เช่นเดียวกับแหล่งฟิสิกส์กระสุนสดใหม่เอง ไม่ใช่ไฟล์. dll ที่รวบรวมไว้ล่วงหน้าซึ่งมีให้ดาวน์โหลดจากเว็บไซต์ precompiled เวอร์ชันเก่าเกินไปสำหรับฉันและไม่ได้รวมคุณสมบัติที่มีค่าบางอย่างที่ได้รับการพัฒนาเพิ่มเติม สิ่งที่ฉันได้เรียนรู้ก็คือสำหรับการจำลองแบบง่าย ๆ ที่คุณไม่จำเป็นต้องใช้กราฟิกขั้นสูงมันจะดีกว่าถ้าใช้ 3dsmax รุ่นเก่าเช่น 2011 (ไม่ใช่ล่าสุดปี 2012) เพื่อพัฒนาแบบจำลองเป็นต้นส่วนใหญ่เป็นเพราะมีปลั๊กอินและผู้ส่งออกมากขึ้น ยิ่งไปกว่านั้นมันมีประโยชน์มากที่จะตรวจสอบบทเรียนในกรอบงานที่มีอยู่ทั้งหมด (sharpdx, xna, xna4, slimdx, c ++ และอื่น ๆ )

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

นี่ไง. ขอบคุณสำหรับความช่วยเหลือของคุณ.

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