การปัดเศษของการล้อมรอบพื้นที่หน้าจอมีการใช้งานอย่างไร


11

ฉันไม่เข้าใจคำอธิบายจากวิกิพีเดีย

สำหรับทุกพิกเซลบนหน้าจอพิกเซลเชดเดอร์จะสุ่มค่าความลึกรอบพิกเซลปัจจุบันและพยายามคำนวณจำนวนการบดเคี้ยวจากแต่ละจุดที่สุ่มตัวอย่าง

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

และสิ่งที่ฉันไม่เข้าใจก็คือเคอร์เนลคำศัพท์ในบทเรียนอื่น ๆ เคอร์เนลคืออะไรและทำไมคุณถึงใช้กับ ssao

ใครช่วยอธิบายอัลกอริทึมโดยละเอียดเกี่ยวกับคำถามของฉัน


คิดแบบนี้: รอยพับลึกจะมีเงาอยู่ภายใน
Alan Wolfe

1
สิ่งสำคัญที่ต้องเข้าใจที่นี่คือเรากำลังพยายามคำนวณการบังแสงรอบข้างไม่ใช่การบดเคี้ยวจากมุมมอง
trichoplax

คำตอบ:


5

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

ภาพถ่ายแสดงให้เห็นถึงผลกระทบเหมือน AO ในมุมของห้อง

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

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

แผนภาพแสดงความลึกของบัฟเฟอร์ที่แสดงถึงรูปทรงเรขาคณิตจาก Bavoil และ Sainz (2008)

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

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


5

ดังที่ Alan และ trichoplax พูดถึงในคอมเม้นท์ผลกระทบที่เกิดจากการบดเคี้ยวโดยรอบไม่ใช่การบดเคี้ยวของพื้นผิวจากกล้อง แต่เป็นการบดเคี้ยวของพื้นผิวจากสภาพแวดล้อม

ลองคิดแบบนี้: บอกว่าคุณมีแสงสว่างส่องมาจากทุกทิศทางเพื่อให้แสงที่เข้ามารวม ณ จุดใด ๆ รวมกันเป็น 1 ถ้าคุณวางระนาบราบในสภาพแวดล้อมนั้นและมองไปที่ด้านหนึ่งของมัน ด้านนั้นจะได้รับ 50% ของการส่องสว่างนั้นหรือ 0.5 เพราะอีกครึ่งหนึ่งถูกบล็อกโดยเครื่องบิน กล่าวอีกนัยหนึ่งจุดใดก็ตามบนพื้นผิวของระนาบสามารถ“ มองเห็น” แสงที่มาจากครึ่งหนึ่งของสภาพแวดล้อมเท่านั้นดังนั้นจึงมีแสงส่องครึ่ง หากคุณพับเครื่องบินลำนั้นไปทางมุมมองของคุณ (เป็น "หุบเขา" พับ) จากนั้นคุณลดการส่องสว่างที่เข้ามาสู่ด้านข้างของเครื่องบินต่อไปให้มีค่าต่ำกว่า 0.5 เพราะอีกครั้งแต่ละจุดบนระนาบ "เห็น" เล็กน้อย แสงน้อยลงมาจากสภาพแวดล้อม

การล้อมรอบพื้นที่หน้าจอทำงานได้มากขึ้นหรือน้อยลงโดยการมองหา "รอยพับ" เหล่านี้ - ซึ่งเป็นความลึกที่เปลี่ยนแปลงอย่างรวดเร็วตามที่กำหนดโดยการเปรียบเทียบความลึกของพิกเซลข้างเคียง - และทำให้มืดลงเพื่อจำลองการลดแสง

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