รายละเอียดเส้นขอบฟ้าของน้ำที่ฉาย


13

ฉันพยายามใช้ฉากมหาสมุทรด้วย C ++ และ DirectX11 ขณะนี้ฉันมีตารางที่ฉายคลื่น Gerstner และการแรเงาขั้นพื้นฐาน ปัญหาของฉันคือเมื่อฉันเล็งกล้องในแนวนอนฉันสามารถมองเห็นเส้นขอบฟ้าของน้ำได้ในระยะไกลกริดที่คาดการณ์ไว้จะไม่เพียงพอแม้แต่ที่จุดยอดสูง ภาพหน้าจอเหล่านี้แสดงให้เห็นถึงปัญหา:

ผิวน้ำ

โครงร่างพื้นผิวของน้ำ

ฉันรู้ว่าสาเหตุของปัญหาอยู่ในแนวคิดของกริดที่ฉาย (ตารางมีรายละเอียดใกล้กับกล้องซึ่งห่างจากมันมาก) แต่ต้องมีวิธีปฏิบัติที่ดีที่สุดในการแก้ปัญหานี้

ความคิดใด ๆ

คำตอบ:


7

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

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

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


ขอบคุณสำหรับคำแนะนำฉันเลือกโซลูชันขี้เกียจในตอนนี้ ฉันใช้ฟังก์ชั่นในส่วนยอดที่กำหนดค่าการลดทอนของคลื่นจากระยะทางจากกล้อง tha
GáborSzalóki

6

คุณสามารถเป็นได้ทั้งเรียลไทม์และเรียลไทม์ ความลับคือการเปลี่ยนการแสดงในแต่ละครั้งที่ข้อมูลได้รับภายใต้มาตราส่วน Shannon-Nyquist (เช่นกริด): จากรูปทรงเรขาคณิตไปเป็นแผนที่ปกติไปยังแบบจำลองการแรเงา บทความนี้จัดทำขึ้นเพื่อคุณ: http://maverick.inria.fr/Publications/2010/BNH10/index.php (ดูวิดีโอของ Yoube)


3

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

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


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