ผู้คนใน EA DICE สร้างสภาพแวดล้อมที่สามารถทำลายได้ใน Battlefield Bad Company 2 และ Battlefield 3 ได้อย่างไร
พวกเขารวมตัวอาคารออกจากภูมิภาคย่อยที่กำหนดไว้ล่วงหน้าซึ่งแตกสลายเมื่อมีการระเบิดหรือสิ่งที่คล้ายกัน? ฉันไม่สามารถคิดอย่างอื่นได้
ผู้คนใน EA DICE สร้างสภาพแวดล้อมที่สามารถทำลายได้ใน Battlefield Bad Company 2 และ Battlefield 3 ได้อย่างไร
พวกเขารวมตัวอาคารออกจากภูมิภาคย่อยที่กำหนดไว้ล่วงหน้าซึ่งแตกสลายเมื่อมีการระเบิดหรือสิ่งที่คล้ายกัน? ฉันไม่สามารถคิดอย่างอื่นได้
คำตอบ:
ที่จะนำมันก็ใช่ว่าสิ่งที่พวกเขาทำ แต่ไปความยาวเป็นพิเศษที่จะครอบคลุมถึงขอบตรงโดยใช้หน้ากากทำลาย หลังจากลบส่วนหนึ่งของรูปทรงเรขาคณิตแล้วพวกเขาก็เพิ่มตาข่ายรายละเอียดรอบส่วนที่ถูกทำลายเพื่อให้ดูน่าเชื่อถือ
นี่คือวิธีการทำงาน
เมื่อทำลายส่วนหนึ่งของบ้านหลังนี้พวกเขาเริ่มต้นด้วยการเอาชิ้นส่วนของรูปทรงเรขาคณิต
จากนั้นเพิ่มตาข่ายรายละเอียดรอบส่วนที่ถูกทำลาย
และขั้นตอนสุดท้ายคือการเพิ่มมาสก์ทำลาย
พวกเขายังใช้เอฟเฟกต์ของอนุภาคและเศษตาข่ายเพื่อให้ดูน่าทึ่งยิ่งขึ้น
(การอ้างอิงทั้งหมดนำมาจาก 2 สิ่งพิมพ์ที่ฉันกล่าวถึงในความคิดเห็น)
นี่คือ CSG - เรขาคณิตแข็งที่สร้างสรรค์ (แม้ว่าในกรณีนี้มันเป็นการทำลายที่พูดอย่างเคร่งครัด) หากคุณต้องการทำวิจัยเพิ่มเติมเกี่ยวกับวิธีการทำงานของอัลกอริทึมจริง ๆ
วิธีการมาตรฐานคือการใช้ตาข่ายสองอันที่มีอยู่ A & B (บ้านและปริมาตร "ระเบิด" ที่หักออก) เพื่อสร้าง "ตาข่าย" ที่สาม (กราฟ) ที่ซึ่งทั้งสองระนาบตาข่ายและขอบตัดกัน C - ซึ่งอธิบายพื้นที่ พวกเขาแบ่งปัน ใน 2D:
/ \
/ \
/ A \
| |
| /-|-\
| |C| |
--- ----- | ------- G
| B|
\---/
A คือบ้าน B คือปริมาตรการระเบิด C คือพื้นที่สหภาพ / จุดตัดระหว่าง A และ B G คือพื้นดิน
คณิตศาสตร์ / ตรรกะที่อยู่เบื้องหลังมันไม่สำคัญเนื่องจากมีกรณีขอบจำนวนมากที่จะจัดการกับและครึ่งหนึ่งหรือมากกว่าของงานนี้เป็นเพียงการรับรู้ที่เป็นไปได้ของกราฟผลชนิดที่เป็นไปได้กรณีพิเศษที่ต้องได้รับการประมวลผลในรหัส ฉันเคยเห็นปัญหาที่ทหารผ่านศึกบรรยายใน gamedev.net ว่า "เป็นปัญหาที่ยากมาก" และฉันสามารถบอกคุณได้ว่าพยายามเป็นแบบ 2 มิติและประสบความสำเร็จในระดับปานกลางซึ่งมีเพียงสองกรณีเท่านั้นที่ล้มเหลว มันไม่ใช่งานเล็ก ๆ
วิธีที่ง่ายกว่าคือใช้อัลกอริธึมการสลายรูปหลายเหลี่ยมและใช้เรขาคณิตที่สร้างเป็นพื้นฐานสำหรับการทำลายเรขาคณิตของคุณแทน