มีเครื่องยนต์ฟิสิกส์ 2 มิติที่สามารถจำลองของเหลวและก๊าซได้หรือไม่? [ปิด]


20

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


ฉันใช้เครื่องมือ fluid 2d ที่กำหนดเอง ฉันสามารถยกตัวอย่างการทำงานโดยใช้กระดาษนี้กับของเหลว viscoelasticและรหัสจาก Flui ° D ° emoเป็นแม่แบบ อย่างไรก็ตามของเหลวไม่เสถียรเท่าที่ฉันต้องการและรหัสสามารถใช้ความรักการเพิ่มประสิทธิภาพจำนวนมาก (การประมวลผลแบบมัลติคอร์แคชมิตร ฯลฯ ) สิ่งที่ฉันต้องการคือห้องสมุดที่ทำทุกอย่างเรียบร้อยแล้วดังนั้นฉันจึงต้องรวมเข้ากับ Box2d และเกมของฉันเท่านั้น
deft_code

คำตอบ:


8

ดูว่า Q-Games ใช้สำหรับ Pixeljunk Shooter อย่างไร มันเป็นเกม 2d ที่มีฟิสิกส์ของไหลที่เกี่ยวข้อง ฉันไม่แน่ใจว่าพวกเขาใช้เครื่องยนต์ฟิสิกส์พื้นบ้านหรือมิดเดิลแวร์ แต่ข้อมูลอาจจะอยู่ที่ใดที่หนึ่ง


8
พวกเขาใช้เอ็นจิ้นพื้นบ้าน แต่ได้รวมเทคนิคที่สามารถนำมาใช้โดยใช้เอ็นจิ้นฟิสิกส์ใด ๆ และรหัสที่กำหนดเอง ที่จริงให้การพูดคุยที่ให้ข้อมูลอย่างมากเกี่ยวกับพลศาสตร์ของเหลวของพวกเขาที่ GDC (สไลด์ที่นี่: gdcvault.com/play/1012447/Go-With-the-Flow-Fluid )
ผี

6

ฉันไม่ได้มองเรื่องนี้ แต่ฉันรู้ว่าเครื่องยนต์ฟิสิกส์เกือบทุกตัวสามารถเลียนแบบความคิดได้ Box2D ฯลฯ

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

หากคุณเชื่อมโยงอนุภาคภายนอกเข้าด้วยกันคุณจะได้รับรูปหลายเหลี่ยมที่แสดงถึงมวล

หรือ

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


4
คำตอบนี้ไม่เหมาะสำหรับเกมเรียลไทม์ในขนาดที่เหมาะสม
AttackHobo

3
ฉันไม่แน่ใจว่าทำไมคุณถึงพูดแบบนั้นเพราะพลศาสตร์ของไหลนั้นมักถูกจำลองเป็นอนุภาค สำหรับตัวอย่างดูวิดีโอเทคโนโลยีของ nvidia เกี่ยวกับอนุภาคของเหลวบน youtube โปรแกรม Algodoo (เดิมชื่อ Phun) หรือพูดคุย Q-Games ที่ให้เกี่ยวกับเกม PixelJunk Shooter ของพวกเขา (สไลด์ที่gdcvault.com/play/1012447/Go-With-the- การไหลของของไหล ) ในกรณีหลัง Q-Games แสดงวิธีสร้างรูปหลายเหลี่ยมจากการสะสมของอนุภาค ฉันคิดว่านี่เป็นการยืนยันว่าคำตอบนี้ใช้ได้สำหรับการใช้งาน IMHO แบบเรียลไทม์
ผี

ว้าวทำไมต้อง downvotes ฉันไม่ได้โกรธแค้นแค่อยากรู้ว่าทำไม มันเป็นเทคนิคที่สมจริงและถูกนำมาใช้
Joel

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

อนุภาคทำงานดีพอen.wikipedia.org/wiki/Smoothed-particle_hydrodynamics ถูกใช้ในการสาธิตล่าสุดของ FLT: ตามที่อธิบายไว้ในdirecttovideo.wordpress.com/2011/05/03/numb-resการใช้งานนี้อาจมีน้ำหนักมากเล็กน้อย แต่การประมาณที่ง่ายกว่าเช่นเดียวกับใน Pixel Junk Shooter GDC talk ควรทำงานได้ดี
เป็นโมฆะ

6

ห้องสมุดเดียวที่ฉันจะเกิดขึ้นกับการที่เกี่ยวข้องโดยเฉพาะกับของเหลวเป็นfluidic มันค่อนข้างอัลฟาและมีรุ่นเดียวเท่านั้น Bulletห้องสมุดฟิสิกส์สนับสนุน 'hydrodynamics แบบเรียบ' ซึ่งเป็นเทคนิคที่ใช้สร้างแบบจำลองของเหลว แม้ว่าไลบรารี่จะมุ่งเน้นไปที่ 3D คุณสามารถใช้ข้อ จำกัด กับแกนเดียวเพื่อให้มันทำงานใน 2D

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

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


วิดีโอที่คุณเชื่อมโยงมีการใช้มากกว่าแวดวงมากมาย เขาใช้เทคนิคที่เรียกว่า SPH พอร์ตลุกโชนของFlui ° D ° emoใช้ Box2d เพื่อหาชนและใช้กองกำลัง แต่ใช้วิธีการคำนวณแรง SPH ไม่ Box2d ของวัตถุแข็งเกร็ง
deft_code

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

3

ไม่กี่ปีที่ผ่านมาตั้งแต่คำถามนี้ถูกโพสต์ แต่ฉันเจอเมื่อค้นหาดังนั้นฉันคิดว่าฉันจะอัปเดต

Google เปิดตัว LiquidFun (โอเพ่นซอร์ส) สำหรับระบบ Box2D มันมีข้อ จำกัด บางอย่าง แต่มันเป็นวิธีที่รวดเร็วในการเริ่มต้นกับของเหลวทรายและอนุภาคอื่น ๆ ที่มีประสิทธิภาพที่เหมาะสม

https://github.com/google/liquidfun

PixelJunk มีวิธีการที่ยอดเยี่ยม แต่เป็นห้องสมุดส่วนตัว พวกเขาแบ่งปันรายละเอียดในระดับที่น่าทึ่งในการพูดคุยที่ GCD 2010

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