มีการจัดการกับผลกระทบเชิงปริมาตรใน raytracing อย่างไร


10

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

คำตอบ:


11

ภาพรวม

การปรากฏตัวของปริมาตร (หรือที่เรียกว่าสื่อที่มีส่วนร่วม) ในธรรมชาตินั้นเกิดจากอนุภาคเล็ก ๆ เช่นฝุ่นละอองหยดน้ำหรือแพลงก์ตอนที่แขวนอยู่ในของเหลวรอบ ๆ เช่นอากาศหรือน้ำ อนุภาคเหล่านี้เป็นวัตถุที่เป็นของแข็งและแสงหักเหหรือสะท้อนออกจากวัตถุเหล่านี้ตามที่มันจะอยู่บนพื้นผิวปกติ ในทางทฤษฎีสื่อที่มีส่วนร่วมสามารถจัดการได้โดยตัวติดตามรังสีแบบดั้งเดิมที่มีจุดตัดที่ผิวทางเท่านั้น

แบบจำลองทางสถิติ

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

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

ค่าสัมประสิทธิ์การดูดซับจะแสดง σa. บอกว่าแสงแห่งแสงต้องการเดินทางเสื้อเมตรภายในสื่อที่เข้าร่วม ความน่าจะเป็นที่จะทำให้ผ่าน unabsorbed - นั่นคือไม่ได้ชนอนุภาคใดอนุภาคหนึ่งและถูกดูดซับโดยมัน -อี-เสื้อσa` เมื่อเพิ่มมากขึ้นเราจะเห็นว่าความน่าจะเป็นนี้ลดลงเป็นศูนย์นั่นคือยิ่งเราเดินทางผ่านสื่อได้นานเท่าไหร่ยิ่งมีโอกาสมากขึ้นที่จะโดนบางสิ่งบางอย่างและถูกดูดซับ สิ่งที่คล้ายกันมากมีค่าสัมประสิทธิ์การกระเจิงσs: ความน่าจะเป็นของรังสีที่ไม่กระทบกับอนุภาคและการกระจัดกระจายคือ อี-เสื้อσs; นั่นคือยิ่งเราเดินทางผ่านตัวกลางได้นานเท่าไหร่ยิ่งมีโอกาสมากขึ้นที่เราจะชนอนุภาคและกระจายไปในทิศทางที่แตกต่างกัน

โดยปกติแล้วปริมาณสองปริมาณนี้จะถูกพับเป็นค่าสัมประสิทธิ์การสูญพันธุ์ครั้งเดียว σเสื้อ=σa+σs. ความน่าจะเป็นในการเดินทางเสื้อ เมตรผ่านสื่อโดยไม่ต้องโต้ตอบกับมัน (ไม่ถูกดูดซับหรือกระจาย) เป็นแล้ว อี-เสื้อσเสื้อ. ในทางกลับกันความน่าจะเป็นของการโต้ตอบกับสื่อหลังจากนั้นเสื้อ เมตรคือ 1-อี-เสื้อσเสื้อ.

การแสดงผลด้วยสื่อที่เข้าร่วม

วิธีการนี้ใช้ในโหมดเรนเดอร์แบบทางกายภาพมีดังนี้: เมื่อรังสีเข้าสู่ตัวกลางเราน่าจะหยุดมันภายในตัวกลางและให้มันโต้ตอบกับอนุภาค ความสำคัญของการสุ่มตัวอย่างความน่าจะเป็นปฏิสัมพันธ์1-อี-เสื้อσเสื้อ ให้ระยะทาง เสื้อ; สิ่งนี้บอกเราว่ารังสีเดินทางไปเสื้อ เมตรในตัวกลางก่อนที่จะกระทบกับอนุภาคและตอนนี้หนึ่งในสองสิ่งนี้เกิดขึ้น: รังสีอาจถูกดูดซับโดยอนุภาค (ด้วยความน่าจะเป็น σaσเสื้อ) หรือมันจะกระจายไป (ด้วยความน่าจะเป็น σsσเสื้อ)

การกระจัดกระจายของรังสีอธิบายโดยฟังก์ชันเฟสและขึ้นอยู่กับลักษณะของอนุภาค ฟังก์ชั่นเฟส Rayleigh อธิบายการกระเจิงของอนุภาคทรงกลมที่มีขนาดเล็กกว่าความยาวคลื่นของแสง (เช่นชั้นบรรยากาศของเรา) ฟังก์ชันเฟสมิเอะอธิบายการกระเจิงของอนุภาคทรงกลมที่มีขนาดใกล้เคียงกับความยาวคลื่น (เช่นหยดน้ำ) ในกราฟิกมักใช้ฟังก์ชันเฟสHenyey-Greensteinแต่เดิมใช้กับการกระเจิงจากฝุ่นระหว่างดวงดาว

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

ภาพ

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


4

วิธีหนึ่งในการทำ - ซึ่งไม่ใช่วิธีการแก้ปัญหา "ไปที่" แต่สามารถใช้งานได้ดีคือการหาระยะทางที่รังสีเคลื่อนที่ผ่านปริมาตรและใช้การรวมฟังก์ชั่นความหนาแน่นบางอย่างเพื่อคำนวณว่า ตี.

นี่คือลิงก์ที่มีตัวอย่างการนำไปใช้: http://blog.demofox.org/2014/06/22/analytic-fog-density/


3

ขึ้นอยู่กับปริมาตรน้ำที่บรรจุ

ผลกระทบปริมาณสม่ำเสมอที่ไม่ได้อยู่ในการกระเจิงสามารถจำลองได้โดยเพียงแค่คำนวณระยะเข้าและออกจากรังสี

ไม่เช่นนั้นคุณต้องทำการรวมเส้นทางของรังสีหรือที่เรียกว่ารังสีเดินขบวน เพื่อหลีกเลี่ยงความต้องการในการถ่ายภาพรังสีทุติยภูมิ raymarching มักจะถูกรวมเข้ากับแคชบางประเภทเช่นความลึก, แผนที่ลึก, แผนที่อิฐหรือเมฆ voxel สำหรับแสงเงา ฯลฯ วิธีนี้คุณไม่จำเป็นต้องเดินขบวนฉากทั้งหมด แคชที่คล้ายกันมักจะทำกับพื้นผิวขั้นตอนปริมาณ

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


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

@ AlanWolfe นั่นคือสิ่งที่คุณทำในกรณีที่เหมือนกัน แต่ถ้าสื่อมีส่วนร่วมกับรูปทรงเรขาคณิตแล้วคุณต้องทำสิ่งที่ดีกว่า อย่างไรก็ตามฉันไม่ได้อ้างว่านี่เป็นวิธีการทั้งหมด
joojaa

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