สถานะของศิลปะใน LOD ทางเรขาคณิตในเกมคืออะไร


15

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

  1. ท่อส่งทรัพย์สินมีลักษณะอย่างไร ศิลปินสร้างแบบจำลองแบบโพลีสูงซึ่งจะถูกทำลายในภายหลังหรือไม่? ถ้าเป็นเช่นนั้นอัลกอริธึมการทำลายล้างใดที่ได้รับความนิยมมากที่สุด บางครั้ง LOD ทำตาข่ายด้วยมือหรือไม่?
  2. เอ็นจิ้นเปลี่ยนระหว่าง LOD ของวัตถุต่าง ๆ ในเวลาทำงานอย่างไร มีการเปลี่ยนแปลงที่ราบรื่นหรือมีความก้าวหน้า?

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


1
SIGGRAPH 2014 ความก้าวหน้าในการเรนเดอร์เรียลไทม์มีการพูดคุยที่น่าสนใจอย่างมากเกี่ยวกับการแบ่งหน้าที่ของพื้นผิว คุณควรตรวจสอบออก. แทนที่จะมีตาข่ายโพลีสูงซึ่งทำจากโพลีที่ต่ำกว่าพวกเขากำหนดรูปทรงของการวิเคราะห์และเพิ่มรูปสามเหลี่ยมเพิ่มเติมตามต้องการ
Alan Wolfe

เราสามารถพูดคุยเกี่ยวกับสถานะของศิลปะในอัลกอริธึม LOD และโครงสร้างข้อมูลที่นี่ แต่ถ้าคำถามเกี่ยวกับวิธีเกมที่ทันสมัยทำโดยเฉพาะคุณอาจมีโชคมากขึ้นถามใน gamedev.se: gamedev.stackexchange.com
นามแฝง

3
ฉันสงสัย. เกม dev เป็นไฟกราฟิกมาก ส่วนใหญ่เป็นคำถามแบบเอกภาพและคำถามจาวาที่มีการค้นหาเส้นทางและคำถามอัตราเฟรมคงที่ที่โยนใน: p
Alan Wolfe

1
@Alan, Activision ใช้อัลกอริธึมศิลปะเป็นจำนวนมากในการสร้างเกมกลยุทธ์สามมิติจริง ๆ ไม่ใช่ sn isometric Sprite base หนึ่งที่ฉันโอเค แต่พวกเขาทำได้ดีมากใน COD แต่มันก็ค่อนข้างเฉื่อยและขี้เกียจ แม้ในระดับต้น ๆ ที่มีสินทรัพย์จำนวนน้อย (ฉันกำลังพูดถึงเกมมือถือของพวกเขาใน iPhone 5s) ฉันคิดว่าคุณต้องเรียนรู้คุณสมบัติผู้เชี่ยวชาญของ OpenGLES และเลเยอร์ต้นแบบเพื่อให้สามารถเขียนเกมได้สำเร็จ
Iman

ฉันกำลังพูดถึงรุ่นคอนโซลของการปฏิบัติหน้าที่ในกรณีที่ล้างมันขึ้น
Alan Wolfe

คำตอบ:


22

สำหรับรูปทรงเรขาคณิต LOD เกมส่วนใหญ่เพียงสลับไปมาระหว่าง LOD mesh ที่กำหนดไว้ล่วงหน้าจำนวนหนึ่ง ตัวอย่างเช่น "Infamous: Second Son" ใช้ 3 LOD mesh ( Adrian Bentley - "inFAMOUS: Second Son engine postmortem", GDC 2014 ) และ "Killzone: Shadow Fall" ใช้ 7 LOD mesh ต่อตัวละคร ( Michal Valient - "Killzone: Shadow fall ตัวอย่างชันสูตรศพ ", Devstation2013 ) ส่วนใหญ่สร้างขึ้น แต่สิ่งที่สำคัญกว่า (เช่นตัวละครหลัก) สามารถทำด้วยมือได้ Meshes นั้นมักถูกสร้างขึ้นโดยใช้ตัวกลางของ Simplygon ที่ได้รับความนิยม แต่บางครั้งพวกเขาก็ถูกสร้างขึ้นโดยศิลปินกราฟิกในแพ็คเกจ 3 มิติที่พวกเขาชื่นชอบ

เกมที่มีระยะทางดึงขนาดใหญ่จะใช้อุปกรณ์เสริมสำหรับใบไม้ต้นไม้และอาคารสูง ( Adrian Bentley - "inFAMOUS: postmortem engine Son Second", GDC 2014 ) พวกเขายังใช้ LOD แบบลำดับชั้นซึ่งแทนที่ชุดของวัตถุด้วยหนึ่ง ตัวอย่างเช่นในต้นไม้ "Just Cause 2" จะแสดงผลครั้งแรกเป็นตาข่าย LOD ปกติจากนั้นแยกเป็น imposters และในที่สุดก็เป็นตาข่ายป่าที่รวมเดี่ยว ( Emil Persson, Joel de Vahl - "การสร้างโลกเกมขนาดใหญ่", Siggraph2013 ) และใน ส่วน "Sunset Overdrive" ที่ห่างไกลของโลกจะถูกแทนที่ด้วยตาข่ายที่สร้างขึ้นแบบออฟไลน์โดยอัตโนมัติ ( Elan Ruskin - "Open World Overdrive's Open World", GDC2015 )

อีกองค์ประกอบหนึ่งของระบบ LOD คือการทำให้วัสดุและชิ้นส่วนเป็นสีเรียบง่าย ตัวอย่างเช่น "Killzone: Shadow Fall" ปิดใช้งานพื้นที่สัมผัสและการทำแผนที่ปกติสำหรับLOD ที่อยู่ห่างไกล ( Michal Valient - "Killzone: Shadow fall demo postmortem", Devstation2013 ) สิ่งนี้มักจะถูกนำมาใช้โดยการปิดการใช้งานชุดคุณลักษณะ shader ทั่วโลกต่อ LOD แต่สำหรับเครื่องยนต์ที่มีกราฟ shader ที่ศิลปินสามารถสร้างเฉดสีแบบกำหนดเองได้จำเป็นต้องดำเนินการด้วยตนเอง

สำหรับการเปลี่ยน LOD บางเกมเพียงสลับเม้าส์และใช้บางอย่างเพื่อการเปลี่ยน LOD ที่ราบรื่น - ที่สวิตช์ LOD สองเรนเดอร์จะแสดงผล: ก่อนค่อย ๆ เลือนหายไปและจางหายไปเป็นครั้งที่สองใน (ไซมอน schreibt บล็อก - "Assassins Creed 3 - LoD ผสม" ) เทคนิคตาข่ายแบบโปรเกรสซีฟซีพียูคลาสสิกไม่ได้ใช้เนื่องจากจำเป็นต้องมีการอัปเดตและอัปโหลดไปยัง GPU ที่มีราคาแพง Tessellation ของฮาร์ดแวร์ถูกใช้ในบางชื่อ แต่สำหรับการปรับแต่ง LOD ที่ละเอียดที่สุดเพราะช้าและโดยทั่วไปแล้วมันไม่สามารถแทนที่ LOD ทางเรขาคณิตที่กำหนดไว้ล่วงหน้าได้

LOD ของภูมิประเทศได้รับการจัดการแยกต่างหากเพื่อใช้ประโยชน์จากคุณสมบัติเฉพาะของมัน รูปทรงเรขาคณิตภูมิประเทศโดยทั่วไปจะใช้ LOD โดยใช้คลิปแมป ( Marcin Gollent - "การสร้างและการเรนเดอร์ภูมิทัศน์ใน REDengine 3" ) ภูมิประเทศ LODs วัสดุอย่างใดอย่างหนึ่งได้รับการจัดการในทำนองเดียวกันกับตาข่าย LODs หรือใช้ชนิดของเนื้อเสมือนบางกะเฉิน - "Adaptive เสมือนพื้นผิวการแสดงผลใน Far Cry 4

สุดท้ายถ้าคุณมีความสนใจที่จะดูเกมจริงท่อลอดแล้วเพียงแค่เรียกดูเอกสารใด ๆ ของเกมที่ทันสมัยเครื่องยนต์: Unreal Engine 4 - "การสร้างและการใช้งาน LODs" , CryEgnine - คงล็อดและความสามัคคี - ล็อด


1
เอ็นจิ้นเกมมักจะมีชุดของวิธีที่กำหนดไว้ล่วงหน้าและคุณไม่สามารถเข้าสู่แกนหลักเพื่อเปลี่ยนอัลกอริทึม LOD ได้จริง ฉันถูกไหม? ฉันกำลังพูดถึงกรณีที่คุณกำลังเขียนเกมด้วยกรอบ OpenGL หรือ SpriteKit ฉันไม่รู้ว่าสามารถปรับแต่งอัลกอริทึมของ LOD ใน Unity หรือ Unreal ได้หรือไม่
Iman

3

LOD (ระดับรายละเอียด) หมายถึงการจัดการวัตถุในระดับการแสดงผลที่แตกต่างกันซึ่งอาจแบ่งออกเป็นสองส่วน อย่างไรก็ตามคุณอาจใช้หนึ่งในนั้นและจะเพียงพอสำหรับกรณีส่วนใหญ่

  1. แสดง / ซ่อนเลเยอร์ (กลุ่มวัตถุประเภทเดียวกัน) ขึ้นอยู่กับขนาด (ระดับการแสดงผล)

  2. วิธีการเชิงพีชคณิตของ Geomery เรียกว่า Generalization (ซึ่งเป็นอัลกอริทึมในการลดความซับซ้อนของรูปหลายเหลี่ยม) ดูภาพต่อไปนี้

    ลักษณะทั่วไป

วิธีที่มีชื่อเสียงและมีประสิทธิภาพที่สุดในการสรุป (ลดความซับซ้อน) ตาข่ายรูปหลายเหลี่ยมเป็นที่รู้จักกันในชื่อทฤษฎีรูปทรงหลายเหลี่ยม Descartes-Euler (สมการ 4.5 ขออภัยถ้าฉันหมายถึงหนังสือที่ดีที่สุดที่ฉันสามารถทำได้) ตัวอย่างเช่นโมดูล PostGIS ใน PostgreSQL มันเพียงแค่ลบด้านที่เล็กกว่าของรูปหลายเหลี่ยมและสร้างส่วนที่โค้งมนมาก (ภาพด้านบน)

ในการติดตั้ง LOD ในเกมคุณต้องบันทึกและจัดการขนาดของแผนที่ (ฉาก) ระหว่างการซูมเข้า / ออก สเกลเปลี่ยนจากศูนย์เป็นอินฟินิตี้และคุณต้องแบ่งส่วนนี้ออกเป็นช่วงจำนวนหนึ่งเช่นบางสิ่งเช่นนี้:

  1. 1 / ศูนย์ = อนันต์ถึง 1/50
  2. 1/50 ถึง 1/100
  3. 1/100 ถึง 1/1000
  4. 1/1000 ถึง 1 / infinity = 0

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

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

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

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

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

ใช้การจัดการเลเยอร์เท่านั้นหรือใช้การวางนัยทั่วไปของออยเลอร์

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

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

PS: กำลังขยายเป็นจำนวนลอยตัว> 0 ซึ่งเท่ากับ 1 / มาตราส่วนและมาตราส่วนมักจะ <1 เนื่องจากมาตราส่วน 1: 1 หมายความว่าคุณมีความยาวตามจริงในเกมของคุณ


ลงคะแนนเสียงโปรดพิจารณาคุณลงคะแนนอีกครั้งถ้ามันยังคงเป็น -1 พิจารณาออกความคิดเห็นสำหรับฉันขอบคุณ
Iman

ฉันไม่ได้ลงคะแนน แต่ส่วนหนึ่งของฉันสงสัยสิ่งที่ป้อยอของศิลปะที่นี่? ดังนั้นฉันไม่สามารถลงคะแนนอย่างใดอย่างหนึ่ง
joojaa

1
ฉันลงระดับต่ำเพราะอ่านยากและ IMHO ไม่เกี่ยวข้องกับ LOD ในเกม หลังจากพิจารณาใหม่ฉันตัดสินใจที่จะยกเลิกการโหวตของฉันโดยการอัปโหลดและเพียงเพิ่มคำตอบของฉันเอง
Krzysztof Narkowicz

รัฐของศิลปะสมมติว่าหมายถึงงานที่โดดเด่นมาก แต่วิธีการที่แตกต่างกันส่งผลให้แตกต่างกันในกรณีต่าง ๆ เช่น Call of duty มีการจัดการเลเยอร์และการทำแผนที่อย่างไรก็ตาม Dear haunting (DH 2014) ใช้พื้นหลังกับ parallax และการทำแผนที่ พื้นผิว Subway Surfer เป็นเรื่องราวที่แตกต่างอย่างสิ้นเชิงและฉันบอกว่าศิลปะล้ำสมัยสำหรับทุกคนแม้ว่า Subway Surfer จะดึงสิ่งก่อสร้างและวัตถุในเมืองอื่น ๆ ออกมาอย่างไม่น่าเชื่อหรือ Call of Duty ค่อนข้างจะซบเซาในขณะที่ซูมหรือแพนกล้อง ฉันคิดว่าพวกเขาทั้งหมดดีที่สุดในกรณีของพวกเขา
Iman

3

Iman ได้เตรียมคำตอบที่สมบูรณ์แล้ว แต่ฉันต้องการเพิ่มบางสิ่งลงไป

LOD สามารถทำได้สองวิธีที่แตกต่างกัน

  1. ต่อเนื่องซึ่งเรียกว่า CLOD และเป็นการเพิ่มประสิทธิภาพตาข่ายรูปหลายเหลี่ยม
  2. ไม่ต่อเนื่องซึ่งเกือบทุกอัลกอริทึมอื่น ๆ กว่าการเพิ่มประสิทธิภาพตาข่ายรูปหลายเหลี่ยมถือว่าอยู่ในกลุ่มนี้

ยกตัวอย่างเช่นการวาดภาพเป็นสิ่งที่ดีรวดเร็ว แต่หนักซึ่งอยู่ในกลุ่ม Secound ที่ด้านบน

ที่นี่คุณสามารถพบคำอธิบายที่ดีเกี่ยวกับการทำแผนที่และการติดตั้งโค้ดด้วย OpenGl

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