คำแนะนำที่จำเป็นสำหรับเครื่องยนต์ฟิสิกส์


12

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

ก่อนอื่นฉันได้เห็นแล้วว่าการพัฒนาเกม - ฟิสิกส์ - เครื่องยนต์ - การพัฒนานั้นเหมาะสำหรับงานที่ทำอยู่และฉันก็สงสัยว่าคุณจะให้ความเห็นที่สองกับฉันได้ไหม นอกจากนี้ในขณะที่กำลังดู Amazon ฉันได้สะดุดกับ Game Engine Architectureและเนื่องจากฉันต้องการสร้างเอ็นจิ้นฟิสิกส์สำหรับเกมฉันคิดว่านี่อาจเป็นสิ่งที่ดีสำหรับการอ่าน

ข้อสองฉันรู้ว่าการจำลองฟิสิกส์นั้นใช้การคำนวณอย่างเข้มข้นดังนั้นฉันจึงอยากใช้ CUDA หรือ OpenCL ตอนนี้ฉันกำลังใช้ OpenCL อยู่เพราะมันจะใช้ได้กับทั้ง NVIDIA และ ATI chipsets คุณแนะนำอะไร?

PS: ฉันจะใช้สิ่งนี้ใน C ++ บน Linux

คำตอบ:


10

นี่คือวิธีที่ฉันเรียนรู้ที่จะเขียนเอนจิ้นฟิสิกส์มันฟรีและแนะนำอย่างสูง:

  1. เอกสารเฉพาะของ David Baraff คำแนะนำเกี่ยวกับแบบจำลองที่ยึดตามร่างกาย

  2. วิทยานิพนธ์ของ Brian Vincent Mirtich การจำลองแบบไดนามิกที่ใช้แรงกระตุ้นของระบบร่างกายแข็ง

  3. Kacic / วัว"ในทางปฏิบัติระบบพลวัต" SIGRAPH 2003 แก้ไข: ลิงก์เพิ่ม

บทความเหล่านั้นถูกกล่าวถึงในบทความที่ยอดเยี่ยมอีกเล่มหนึ่งจาก Nick Porcino (LucasArts) ในหนังสืออัญมณีเล่มที่4 ของ Gems "การเขียนเครื่องยนต์ฟิสิกส์พื้นฐานของ Verlet" มันไม่ฟรี แต่คุ้มค่าทุกเพนนี

นอกจากนี้ยังมีลักษณะที่เครื่องมืออื่น ๆ ที่นี่เป็นแหล่งสำหรับที่กระสุนฟิสิกส์เครื่องยนต์

เกี่ยวกับการใช้งาน CUDA / OpenCL: ทำให้มันรันบนซีพียูก่อนมันซับซ้อนพอ :)

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

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

สุดท้าย แต่ไม่ท้ายสุด: ไม่ต้องสนใจการชนเมื่อคุณเริ่มต้นมุ่งเน้นไปที่การจำลองที่เสถียรก่อน


ดูเหมือนคำตอบที่ดี แต่คุณอาจต้องการจัดรูปแบบเล็กน้อย
The Duck คอมมิวนิสต์เมื่อ

ขอบคุณสำหรับคำติชมฉันยอมรับว่าฉันจะไม่สามารถสร้างกลไกการแข่งขันได้ แต่เป้าหมายหลักของฉันคือส่วนการเรียนรู้
adivasile

1
@ The Communist Duck ขอบคุณสำหรับคำใบ้ฉันยังใหม่กับด้านข้างและฉันยอมรับว่าฉันขี้เกียจเกินไปที่จะตรวจสอบตัวเลือกการจัดรูปแบบซ่อมมัน :)
Maik Semder

1
เพิ่มการเชื่อมโยงไปยังกระดาษ Kacic ที่หวังว่าจะเป็นหนึ่งที่เหมาะสม :)
เรย์ Dey

5

Maik ถูกต้องเอกสารของ Baraff เป็นการเริ่มต้นที่ยอดเยี่ยม แต่อย่าลืม Chris Heckers เขียนบทความเกี่ยวกับการเปลี่ยนแปลงของร่างกายที่เข้มงวด: http://chrishecker.com/Rigid_Body_Dynamics !

คำแนะนำของเขาเกี่ยวกับ "[.. ] คุณจะทิ้งเครื่องยนต์ของคุณไป" เป็นความจริงอย่างแท้จริง แต่คุณจะได้เรียนรู้มากมาย!

เกี่ยวกับ CUDA / OpenCL ส่วนหนึ่งของคำถามของคุณ: ถ้าคุณรู้ว่า CUDA การเปลี่ยนเป็น OpenCL นั้นง่ายมาก ฉันขอแนะนำให้เรียนรู้ CUDA ก่อนเพราะมีบทช่วยสอนที่ดีมากมายเช่นโค้ดตัวอย่างและไลบรารีการคำนวณที่นั่น ตัวอย่างเช่น:

แต่ระวังให้ดี: การเริ่มต้นใช้งาน CUDA นั้นง่ายมากการเริ่มต้นใช้งานการจำลองทางฟิสิกส์นั้นค่อนข้างยาก แต่การรวมทั้งสองอย่างเข้าด้วยกันเป็นเรื่องที่ท้าทายมาก!


คุณพูดถูกจริงๆนั่นเป็นแหล่งข้อมูลที่ยอดเยี่ยมอีกเรื่องที่ต้องกล่าวถึง +1 สำหรับเอกสารของ Chris Hecker
Maik Semder

4

ฉันเริ่มจาก Baraff ด้วย แต่ตอนนี้มันเก่าไปหน่อย สิ่งที่คุณต้องการแก้ซ้ำและกระดาษที่ดีที่สุดใน IMO ที่เป็น Erin Catto ของ ซ้ำ Dyanmics คุณมีทุกอย่างที่คุณต้องการในการสร้างเอ็นจิ้นฟิสิกส์ของคุณ คุณสามารถขุดลงไปในวิทยานิพนธ์ระดับปริญญาเอกของ Erleben หากคุณต้องการรายละเอียดเพิ่มเติม (เช่นข้อต่อและเนื้อหาคณิตศาสตร์เพิ่มเติม) แต่นั่นก็เป็นเรื่องที่ค่อนข้างมาก ฉันหวังว่าฉันจะพบมันตั้งแต่เริ่มต้น - ไปที่ฟอรัม Bullet สักหน่อยมีข้อมูลมากมายในนั้น (อาจจะมากเกินไป)

สำหรับหนังสือหลายเล่มที่ออกมาน่าผิดหวัง แต่ฉันขอแนะนำแอนิเมชั่นพื้นฐานฟิสิกส์โดย Kenny Erleben หรือ Game Physics Pearls

ไม่ค่อยรู้ CUDA / OpenCL มากนัก (ถึงแม้ว่าฉันอยากจะทำเสมอ) แต่คุณควรตรวจสอบงานของ Takahiro Harada อย่างแน่นอน

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