จัดการกับแสงจำนวนมากในฉาก (พร้อมเฉดสี)


9

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

tl; dr: ฉันจะทราบได้อย่างไรว่าไฟใดที่ส่งผลกระทบต่อฉากเพื่อแสดงผลเท่านั้น


OpenGL หรือ DirectX?
kravemir

6
อันที่จริงแล้วไฟ 500 ดวงนั้นค่อนข้างเป็นไปได้ด้วยแสงที่เลื่อนออกไปตราบใดที่คุณไม่ต้องการเงาสำหรับพวกเขาทั้งหมด)

ตัวอย่างเช่นสำหรับจุดและรูปกรวย ligts คุณสามารถใช้ culling คัด - จุดแสงเป็นเพียงทรงกลม แสงทิศทางมองเห็นได้จากทุกที่
Kikaimaru

4
@Darkwings โดยทั่วไปคุณจะอธิบายที่นี่ว่าขออะไร ฉันจะเดินได้อย่างไร ฉันคิดว่าวิธีแก้ปัญหาที่นี่เป็นเพียงการเดิน! (ใช้งานได้สำหรับฉัน) ;-) "คุณจำเป็นต้องรู้ว่าแหล่งข้อมูลนั้นให้แสงบางอย่างในมุมมองของคุณหรือไม่" <- นั่นคือว่าสิ่งที่เขาขอให้เขาต้องการที่จะรู้ว่าวิธีการที่เขาสามารถทำเช่นนั้น ^^ แม้ว่ารูปกรวย / ทรงกลมจาก Kikaimaru อาจเป็นประโยชน์
cooky451

1
เพื่อ OP มันไม่ชัดเจนที่จะตรวจสอบมุมมอง frustum ตั้งแต่เขาพูดถึงเพียงระยะทาง แสงแต่ละอันจะมีพารามิเตอร์บางอย่างเพื่อตรวจสอบว่า หากใช้ไฟส่องทางพวกเขาจะไปถึงที่ใดก็ได้ไฟสปอร์ตไลท์จะมีพื้นที่เป้าหมาย (ดังนั้นจึงสามารถแก้ไขได้ด้วยการแยกเวกเตอร์ - เครื่องบิน) และอื่น ๆ คุณควรคิดให้มากขึ้นในบรรทัดที่แสงที่คุณต้องการส่งผลต่อฉากเนื่องจากหากคุณมีแสงจำนวนมากที่อยู่ใกล้กันมาก ๆ คุณจะดีกว่าการประมาณค่า IE: 100 เทียนบนโคมระย้าโบราณสามารถจัดการเป็นแสงเดียว
Darkwings

คำตอบ:


5

เรียบง่ายกว่าโวลุ่มที่มีขอบเขต

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

เพียงเศษเสี้ยวที่ซับซ้อนมากขึ้นขึ้นอยู่กับประสิทธิภาพที่สำคัญคือ:

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


5
+1 - ฟังดูน่าสงสัยเหมือนขอบเขตที่มีขอบเขต;)
Gyan aka Gary Buyn

สายเล็กน้อย ... อย่างไรก็ตามนั่นเป็นขอบเขตที่แน่นอน เมื่อใช้วิธีการดังกล่าวคุณจะยังคงแสดงแสงที่ถูกบดบังด้วยผนัง ฯลฯ อย่างสมบูรณ์และไม่เกี่ยวข้องกับฉาก และไม่ใช่ทุกแสงที่ไปในทุกทิศทาง
Darkwings

5

วิธีที่ง่ายที่สุดที่ฉันสามารถคิด (ให้ความซื่อสัตย์วิธีเดียวที่ฉันเคยคิดว่า) คือการให้แต่ละแสงปริมาณการวิ่ง หากปริมาตรการล้อมรอบตัดกับมุมมอง frustum (หรือปริมาตรขอบเขตของมุมมอง frustum) ให้ใช้แสง

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

บางสิ่งเช่นดวงอาทิตย์ไม่สามารถมีปริมาตรที่มีขอบเขต (เพื่อแสดงว่ามันควรถูกนำไปใช้เสมอ)

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