ตำราฟิสิกส์เกม
- เว็บไซต์
- เฟสบุ๊ค
- ทวิตเตอร์
หนังสือเล่มนี้เป็นคู่มือที่ครอบคลุมเกี่ยวกับพีชคณิตเชิงเส้นและเกมตรวจจับการชนกันที่ใช้กันทั่วไป แต่จะกล่าวถึงหัวข้อการแก้ปัญหาการชนกันเพียงสั้นๆ (ฟิสิกส์) หนังสือมีโครงสร้างดังนี้
- บทที่ 1, 2 และ 3 ครอบคลุมพื้นฐานพีชคณิตเชิงเส้น
- บทที่ 4, 5 และ 6 ครอบคลุมถึงพื้นฐานสองมิติและวิธีการตรวจจับจุดตัดระหว่างพวกมัน
- บทที่ 7, 8, 9 และ 10 ครอบคลุมถึงวิธีดั้งเดิมสามมิติและวิธีการที่มีประสิทธิภาพที่สุดในการกำหนดจุดตัดระหว่างสิ่งเหล่านั้น
- บทที่ 11, 12 และ 13 ครอบคลุมถึงตาข่าย ฉาก และการจัดระเบียบฉาก
- บทที่ 14, 15 และ 16 ครอบคลุมฟิสิกส์ ตลอดสามบทนี้ เราได้สร้างกลไกฟิสิกส์ร่างกายที่แข็งแกร่งขั้นพื้นฐานขึ้นมา
หัวข้อทั้งหมดที่กล่าวถึงในหนังสือเล่มนี้ใช้เพื่อความก้าวหน้าในการสร้างกลไกทางฟิสิกส์ของร่างกายที่เข้มงวด สามบทสุดท้าย (14, 15 และ 16) ใช้ฟิสิกส์ของอนุภาค ฟิสิกส์ของวัตถุแข็งเกร็ง และฟิสิกส์ของวัตถุอ่อน (ผ้า) ภาคผนวกมีให้ซึ่งครอบคลุมหัวข้อขั้นสูงโดยย่อ แหล่งข้อมูลสำหรับการสำรวจหัวข้อเหล่านี้ รวมถึงแหล่งข้อมูลเพิ่มเติมสำหรับการสำรวจฟิสิกส์ของเกม
ตัวเลข
ตัวเลขบางส่วนที่สร้างขึ้นสำหรับหนังสือเล่มนี้แปลได้ไม่ดีนักในการพิมพ์ เพื่อแก้ไขปัญหานี้ ฉันได้รวมตัวเลขในหนังสือทั้งหมดไว้ในที่เก็บนี้ และเผยแพร่ตัวเลขออนไลน์ที่: https://github.com/gamephysicscookbook/Figures
คณิตศาสตร์
สามบทแรกของหนังสือเล่มนี้มีไว้เพื่อสอนพีชคณิตเชิงเส้นพื้นฐานที่จำเป็นสำหรับการพัฒนาเกม ทุกแนวคิดได้รับการอธิบายในบริบททางคณิตศาสตร์ มีการจัดหาซอร์สโค้ดให้กับทุกแนวคิด และยังมีการจัดเตรียมรูปภาพเมื่อสามารถสำรวจบางสิ่งด้วยสายตาได้ ในสามบทแรกจะมีการสร้างโครงสร้างข้อมูลต่อไปนี้:
- เวกเตอร์ 2 มิติ (
vec2
) - เวกเตอร์ 3 มิติ (
vec3
) - เมทริกซ์ 2x2 (
mat2
) - เมทริกซ์ 3x3 (
mat3
) - เมทริกซ์ 4x4 (
mat4
)
เมื่อเป็นไปได้ การดำเนินการเมทริกซ์จะถูกนำไปใช้ในลักษณะทั่วไป ตัวอย่างเช่น มีการจัดเตรียมโค้ดเพื่อคูณเมทริกซ์สองขนาดที่มีขนาดใดก็ได้เข้าด้วยกัน
การตรวจจับการชนกัน
ทางแยกต่อไปนี้ครอบคลุมอยู่ในหนังสือ:
| จุด | เส้น | เรย์ | ทรงกลม | เอเอบีบี | โอบีบี | เครื่องบิน | สามเหลี่ยม | ฟรัสทัม |
---|
จุด | | | | | | | | | |
เส้น | | | | | | | | | |
เรย์ | | | | | | | | | |
ทรงกลม | | | | | | | | | |
เอเอบีบี | | | | | | | | | |
โอบีบี | | | | | | | | | |
เครื่องบิน | | | | | | | | | |
สามเหลี่ยม | | | | | | | | | |
ฟรัสตัม | | | | | | | | | |
ฟิสิกส์
บทที่ 14 ครอบคลุมถึงฟิสิกส์ของอนุภาคไร้เดียงสา บทนี้มีจุดมุ่งหมายเพื่อเป็นการแนะนำการตั้งค่าวงฟิสิกส์และการพิจารณารูปแบบทั่วไปของวงฟิสิกส์ บทที่ 15 เป็นบทที่น่าสนใจที่สุด โดยจะใช้กลไกฟิสิกส์พื้นฐานที่เข้มงวด เอ็นจิ้นพื้นฐานรองรับกล่องและทรงกลม การซ้อนสามารถทำงานได้ แต่ไม่รองรับโดยตรง บทที่ 16 ครอบคลุมถึงสปริงและวิธีที่สปริงสามารถนำมาใช้เพื่อสร้างฟิสิกส์ของวัตถุอ่อนได้ การสาธิตครั้งสุดท้ายของหนังสือเล่มนี้เป็นการสาธิตฟิสิกส์แบบผ้าที่อ่อนนุ่ม
การเรียนรู้
นี่เป็นหนังสือเล่มแรกของฉัน ฉันได้เรียนรู้มากมายเกี่ยวกับขั้นตอนการเขียน บางทีอาจเกี่ยวกับการวางแผนมากกว่านั้นด้วยซ้ำ ต่อไปนี้เป็นรายการสิ่งที่ฉันค้นพบขณะเขียนหนังสือเล่มนี้ซึ่งฉันไม่ได้วางแผนอย่างเหมาะสม:
ควอเทอร์เนียน : การมีควอเทอร์เนียนเป็นสิ่งจำเป็น! ฉันวางแผนที่จะเขียนหนังสือโดยใช้เมทริกซ์การหมุนออยเลอร์และการหมุน แม้ว่าวิธีนี้จะได้ผล แต่การเข้าถึงควอเทอร์เนียนจะทำให้ชีวิตง่ายขึ้นมาก
ระนาบ : ทางแยกของเครื่องบินไม่ควรส่งกลับค่าบูลีน แต่ควรจำแนกทางแยกเป็น: หลัง, ตัดกัน, ด้านหน้า หากทางแยกอยู่ด้านหน้าหรือด้านหลัง คุณควรแสดงระยะทางกลับคืนมา สิ่งนี้มีประโยชน์มากเมื่อทำการคัดแยก Frustum ฉันไม่รู้ว่าจะเขียนเกี่ยวกับฟรัสตัมให้เจาะลึกแค่ไหน ฉันเลยตัดสินใจทำจุดตัดบูลีนอย่างง่าย
Raycasting : ฉันควรจะเขียน raycasts เพื่อส่งคืนผลลัพธ์ raycast ตั้งแต่ต้น การต้องย้อนกลับไปเขียน raycasting API ใหม่ในภายหลังกลายเป็นเรื่องที่ซับซ้อนในการแสดงข้อความมากกว่าที่ฉันคาดไว้ อุปสรรคเบื้องหลังนี้คือการทำให้ทุกอย่างเรียบง่ายในตอนแรก และซับซ้อนเท่าที่จำเป็นเท่านั้น
ปัญหา
มีปัญหาหลายประการในการใช้งานทางฟิสิกส์ของซอร์สโค้ด ปัญหาเหล่านี้เกิดจากการที่ส่วนฟิสิกส์ของหนังสือเล่มนี้ต้องย่อเป็นสามบท มีเวลาไม่เพียงพอที่จะครอบคลุมทุกสิ่งที่จำเป็นในการสร้างระบบฟิสิกส์ที่แข็งแกร่ง ปัญหาใหญ่ที่สุดของเครื่องยนต์คือ ไม่มี Arbiter
หากไม่มีผู้ตัดสิน เราไม่สามารถสร้างตัวแก้ปัญหาแรงกระตุ้นตามลำดับได้ สิ่งนี้ทำให้เรามีตัวแก้แรงกระตุ้นที่ไร้เดียงสาค่อนข้างเปลือยเปล่า ปัญหาคือ แรงกระตุ้นได้รับการแก้ไขต่อการสัมผัสต่อเฟรม ทำให้เกิดการเลื่อนมากเกินไป ฉันได้ชดเชยการขาดแรงกระตุ้นตามลำดับด้วยการฉายภาพเชิงเส้นและการให้น้ำหนักแบบ Friciton แบบก้าวร้าว เอ็นจิ้นฟิสิกส์รุ่นเก่าทำสิ่งที่คล้ายกันโดยอาศัยการนอนหลับอย่างแข็งแรงเพื่อปกปิดปัญหา ไม่จำเป็นต้องพูดว่าการนอนหลับไม่ได้ถูกนำมาใช้
อนาคต
หากฉันมีโอกาสเขียนหนังสือเล่มนี้เป็นฉบับที่สอง ฉันจะลบบทเกี่ยวกับการชนกันของสองมิติ (บทที่ 4, 5 และ 6) และลดจำนวนหน้าของบทการจัดการฉากลง ฉันวางแผนที่จะใช้หน้าพิเศษเพื่อครอบคลุมหัวข้อต่อไปนี้:
- การอภิปรายเชิงลึกและการนำไปปฏิบัติของ GJK
- ระบบอนุญาโตตุลาการที่เหมาะสมและแบบจำลองการแก้ปัญหาการชนที่เสถียรยิ่งขึ้น
- แคปซูลดั้งเดิม
- การทดสอบการสร้างตัวเรือและการชนกันของตัวเรือนูน
ข้อมูลหนังสือ
- ISBN-13: 9781787123663
- ดูได้ที่ Packt
- ดูในอเมซอน
- สิ่งพิมพ์ทั้งหมดของฉัน
สารบัญ
- เวกเตอร์
- การแนะนำ
- คำจำกัดความของเวกเตอร์
- การดำเนินงานที่ชาญฉลาดของส่วนประกอบ
- สินค้าดอท
- ขนาด
- การทำให้เป็นมาตรฐาน
- ข้ามผลิตภัณฑ์
- มุม
- การฉายภาพ
- การสะท้อนกลับ
- เมทริกซ์
- การแนะนำ
- คำจำกัดความของเมทริกซ์
- ย้าย
- การคูณ
- เมทริกซ์เอกลักษณ์
- ดีเทอร์มิแนนต์ของเมทริกซ์ 2x2
- เมทริกซ์ของผู้เยาว์
- ปัจจัยร่วม
- ดีเทอร์มิแนนต์ของเมทริกซ์ 3x3
- การดำเนินการบนเมทริกซ์ 4x4
- ปรับเมทริกซ์
- เมทริกซ์ผกผัน
- การแปลงเมทริกซ์
- การแนะนำ
- สาขาวิชาเอกเมทริกซ์
- การแปล
- การปรับขนาด
- การหมุนทำงานอย่างไร
- เมทริกซ์การหมุน
- การหมุนมุมแกน
- การคูณเมทริกซ์เวกเตอร์
- แปลงเมทริกซ์
- เมทริกซ์การฉายภาพ
- รูปร่างดั้งเดิม 2D
- การแนะนำ
- จุด 2 มิติ
- เส้น 2 มิติ
- วงกลม
- สี่เหลี่ยมผืนผ้า
- สี่เหลี่ยมเชิง
- การควบคุมจุด
- สี่แยกเส้น
- การชนกันแบบ 2 มิติ
- การแนะนำ
- วงกลมต่อวงกลม
- วงกลมเป็นสี่เหลี่ยม
- วงกลมถึงสี่เหลี่ยมเชิงมุม
- สี่เหลี่ยมผืนผ้าเป็นสี่เหลี่ยมผืนผ้า
- ทฤษฎีบทการแยกแกน
- สี่เหลี่ยมผืนผ้าถึงสี่เหลี่ยมผืนผ้าเชิง
- สี่เหลี่ยมเชิงมุมถึงสี่เหลี่ยมเชิงมุม
- การเพิ่มประสิทธิภาพ 2D
- การแนะนำ
- ประกอบด้วยวงกลม
- ประกอบด้วยรูปสี่เหลี่ยมผืนผ้า
- รูปร่างที่เรียบง่ายและซับซ้อน
- ต้นไม้สี่ต้น
- การชนกันในระยะกว้าง
- รูปร่างดั้งเดิม 3 มิติ
- การแนะนำ
- จุด
- ส่วนของเส้น
- เรย์
- ทรงกลม
- กล่องขอบเขตการจัดแนวแกน
- กล่องทุ่นเชิง
- เครื่องบิน
- สามเหลี่ยม
- การทดสอบจุด 3 มิติ
- การแนะนำ
- จุดและทรงกลม
- กล่องขอบเขตที่จัดแนวจุดและแกน
- กล่องขอบเขตแบบชี้และมุ่งเน้น
- จุดและระนาบ
- จุดและเส้น
- ชี้และเรย์
- ทางแยกรูปร่าง 3 มิติ
- การแนะนำ
- ทรงกลมถึงทรงกลม
- กล่องขอบเขตที่จัดแนวจากทรงกลมถึงแกน
- ทรงกลมถึงกล่องขอบเขตเชิง
- ทรงกลมสู่ระนาบ
- กล่องขอบเขตที่จัดแนวแกนไปยังกล่องขอบเขตที่จัดแนวแกน
- กล่องขอบเขตที่จัดแนวแกนไปยังกล่องขอบเขตที่กำหนด
- กล่องขอบเขตจัดแนวแกนกับระนาบ
- กล่องขอบเขตที่มุ่งเน้นไปยังกล่องขอบเขตที่มุ่งเน้น
- กล่องขอบเขตที่มุ่งเน้นไปยังเครื่องบิน
- เครื่องบินต่อเครื่องบิน
- ทางแยกเส้น 3 มิติ
- การแนะนำ
- ทรงกลมเรย์แคสต์
- กล่องขอบเขตจัดแนวแกน Raycast
- กล่องขอบเขตที่มุ่งเน้น Raycast
- เครื่องบินเรย์แคสต์
- ทรงกลม Linetest
- กล่องขอบเขตจัดแนวแกน Linetest
- กล่องขอบเขตที่มุ่งเน้น Linetest
- เครื่องบิน Linetest
- สามเหลี่ยมและตาข่าย
- การแนะนำ
- ชี้เป็นรูปสามเหลี่ยม
- สามเหลี่ยมจุดที่ใกล้ที่สุด
- สามเหลี่ยมเป็นทรงกลม
- กล่องขอบเขตที่จัดแนวจากสามเหลี่ยมถึงแกน
- สามเหลี่ยมเป็นกล่องเชิง
- สามเหลี่ยมสู่ระนาบ
- สามเหลี่ยมเป็นสามเหลี่ยม
- ความทนทานของทฤษฎีบทแกนแยก
- สามเหลี่ยมเรย์แคสต์
- สามเหลี่ยมทดสอบเส้นตรง
- วัตถุตาข่าย
- การเพิ่มประสิทธิภาพตาข่าย
- การดำเนินงานแบบตาข่าย
- โมเดลและฉาก
- การแนะนำ
- วัตถุโมเดล
- การดำเนินการกับโมเดล
- วัตถุที่เกิดเหตุ
- ปฏิบัติการในที่เกิดเหตุ
- วัตถุออคทรี
- ปฏิบัติการออคทรี
- การรวม Octree และฉาก
- กล้องและ Frustum
- การแนะนำ
- วัตถุกล้อง
- การควบคุมกล้อง
- วัตถุฟรัสตัม
- Frusum จากเมทริกซ์
- ทรงกลมใน frustum
- ขอบเขตกล่องใน frustum
- การคัดแยกออคทรี
- การหยิบสินค้า
- การแก้ไขข้อจำกัด
- การแนะนำ
- การแนะนำกรอบการทำงาน
- ทรงกลมเรย์แคสต์
- กล่องขอบเขต Raycast
- เครื่องบินเรย์แคสต์และสามเหลี่ยม
- ระบบฟิสิกส์
- การบูรณาการอนุภาค
- การแก้ไขข้อจำกัด
- บูรณาการ Verlet
- แมนิโฟลด์และแรงกระตุ้น
- การแนะนำ
- ท่อร่วมสำหรับทรงกลม
- มากมายสำหรับกล่อง
- การปรับเปลี่ยนร่างกายให้แข็งแกร่ง
- ความเร็วลิเนรา
- แรงกระตุ้นเชิงเส้น
- อัพเดตระบบฟิสิกส์
- ความเร็วเชิงมุม
- แรงกระตุ้นเชิงมุม
- วิ่งและข้อต่อ
- บทนำ
- การปรับเปลี่ยนอนุภาค
- สปริง
- ผ้า
- การปรับเปลี่ยนระบบฟิสิกส์
- ข้อต่อ
- ภาคผนวก: หัวข้อขั้นสูง
- การแนะนำ
- การชนกันทั่วไป
- การปรับปรุงเสถียรภาพ
- วิ่ง
- เอ็นจิ้นฟิสิกส์โอเพ่นซอร์ส
- หนังสือ
- แหล่งข้อมูลออนไลน์
- สรุป
ปิดบัง