วาดอนุภาคเป็นหยดเรียบ


12

ฉันยังใหม่กับการพัฒนาเกม / กราฟิกและฉันเล่นกับอนุภาค (ใน 2D) ฉันต้องการวาดอนุภาคใกล้ ๆ กันเป็นหยดของเหลวหรือน้ำ ฉันไม่ต้องการวาดวงกลมใหญ่ทับซ้อนกันเพราะหยดนั้นจะไม่ราบรื่น (และใหญ่เกินไป) ฉันไม่รู้ฟิสิกส์จริง ๆ แต่ฉันคิดว่าสิ่งที่ฉันต้องการคือสิ่งที่ดูเหมือนกับแรงตึงผิว

ฉันไม่พบสิ่งใดใน stackexchange หรือบน Google (บางทีฉันอาจไม่รู้คำหลักที่ถูกต้องใช่ไหม) จนถึงตอนนี้ฉันได้พบวิธีแก้ปัญหาที่เป็นไปได้สองข้อ แต่ฉันไม่สามารถหาข้อมูลที่เป็นรูปธรรมเกี่ยวกับอัลกอริทึมได้

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

ในขณะที่วิจัยลำเรือเว้าฉันพบสิ่งที่เรียกว่ารูปร่างอัลฟ่า ซึ่งดูเหมือนจะเป็นสิ่งที่ฉันต้องการจะทำ แต่เช่นเดียวกับลำเรือเว้าฉันไม่พบแหล่งที่มาเพื่ออธิบายวิธีการใช้งานจริง ฉันพบเอกสารการนำเสนอบางอย่าง แต่ไม่เพียงพอที่จะดำเนินการต่อไป มันเป็นความลับที่ทุกคนรู้ดียกเว้นฉัน: - /

หลังจากคำนวณฮัลล์เว้าหรือรูปร่างอัลฟาฉันต้องการที่จะทำให้มันเป็นเส้นโค้งเบซิเยร์ที่จะทำให้มันราบรื่นและดี

แม้ว่าฉันจะพบว่าวิธีการของฉันซับซ้อนไปหน่อยฉันอาจจะพยายามแก้ไขสิ่งนี้ในทางที่ผิด? หากคุณสามารถแนะนำวิธีแก้ไขปัญหาอื่น ๆ ของฉันหรืออธิบายสิ่งที่ฉันขาดหายไปฉันจะมีความสุขและขอบคุณมาก :-)

ขอบคุณ



@BlueRaja ขอบคุณสำหรับความคิดเห็นของคุณ แม้ว่าฉันได้พบแล้วว่าโพสต์ แต่ยกเลิกเพราะคำตอบทั้งลิงก์ไปยังเอกสารที่ไม่ได้แก้ปัญหาของฉันโดยตรง แต่การอ้างอิงของพวกเขาอาจหรือสิทธิบัตรที่ฉันไม่สามารถใช้อย่างเปิดเผย (ฉันคิดว่าฉันไม่ดีกับระบบราชการ) (ฉันไม่พบลิงค์ดาวน์โหลดเลย)
Nömmik

1
สิทธิบัตร "marching cubes" หมดอายุในปี 2005 ตัวอย่าง 2D ส่วนใหญ่มีอายุมากกว่าและนั่นเป็นสาเหตุที่คุณอาจเห็นพวกเขาเตือนคุณเกี่ยวกับการใช้งานบนหน้าเว็บเก่า
Patrick Hughes

1
นี่คือบทความ gamedev ที่จะเข้าสู่ทั้ง metaballs และ isosurfaces โดยมีตัวอย่างบางส่วนที่จะทำให้ความคิดที่ชัดเจน: ลิงค์
Patrick Hughes

ขอบคุณที่ให้ความกระจ่างแก่ฉันเกี่ยวกับ metaballs พวกเขาดูเหมือนจะทำในสิ่งที่ฉันต้องการ :-)
Nömmik

คำตอบ:


8

คำหลักที่คุณอาจต้องการคือ "Metaballs" และช่วงจากตัวอย่าง nVidia GPU Gems ที่ซับซ้อนไปจนถึงรุ่นสาธิตการทำงานที่ออกแบบมาเพื่อให้ดูดีและทำงานได้อย่างรวดเร็ว


แน่นอนฉันไม่รู้คำหลัก :-) ฉันจะตรวจสอบอย่างละเอียดและถ้ามันเป็นสิ่งที่ฉันต้องการฉันจะยอมรับคำตอบของคุณ ขอบคุณ!
Nömmik

1
+1 สำหรับฉันคิดว่าเป็น "ลูกชิ้น" ก่อนที่ฉันจะอ่านมันเป็นครั้งที่สอง
James

2
คุณช่วยเพิ่มรายละเอียดให้กับคำตอบนี้ได้ไหม? +1 ถ้าคุณทำ
AttackHobo

@ James ฉันคิดว่าทุกคนทำผิดพลาดครั้งแรกที่เห็นคำว่า!
Jeff

1

ในการแปลงกลุ่มของอนุภาคเป็นตาข่ายเพื่อให้สามารถแสดงสไตล์เมทัลลิกคุณสามารถดูอัลกอริทึมMarching Cubesซึ่งสร้างตาข่ายรูปหลายเหลี่ยมจากข้อมูล voxel : มีการสาธิต demoscene ที่มีตัวอย่างที่ดีของนี้มีทุกอย่างที่สร้างขึ้นบน GPU เป็นความละเอียดชา


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