การกระเจิงของปริมาตร Monte-Carlo แบบเต็ม


9

ฉันต้องการเพิ่มการกระจัดกระจายปริมาตร monte-carlo อย่างเต็มรูปแบบเพื่อติดตามเส้นทางของฉัน แต่ฉันมีเวลายากวิจัยวิธีการทำ ให้ฉันอธิบายสิ่งที่ฉันต้องการจะทำ: การกระเจิงของ Monte Carlo รังสีเข้าสู่วัสดุและเราใช้ BTDF จากนั้นหลังจากระยะทางหนึ่งเหตุการณ์การกระเจิงของปริมาตรเกิดขึ้นหลังจากนั้น (ในกรณี isotropic) รังสีจะกระจายไปในทิศทางใดก็ได้ใน รูปทรงกลม การทำซ้ำนี้จนกว่ารังสีจะออกจากวัสดุด้วย BTDF อื่น

คำถามของฉันมีดังนี้:

  1. ฉันจะเลือกระยะห่างระหว่างเหตุการณ์กระจายได้อย่างไร สัญชาตญาณบอกฉันว่าควรจะมีการกระเจิงแบบ pdf ซึ่งให้โอกาสในการกระจายหลังจากระยะทางที่แน่นอน?
    • สิ่งนี้จะถูกต้องหรือไม่
    • pdf จะเป็นฟังก์ชันเชิงเส้นสำหรับวัสดุ isotropic หรือไม่
    • ฟังก์ชั่นนี้มีชื่อหรืออะไรที่ฉันสามารถใช้กับ Google
  2. Beer-Lambert จะยังคงใช้งานระหว่างเหตุการณ์กระจายหรือไม่
    • ฉันจะไม่คิด เนื่องจาก Beer-Lambert เป็นการทำให้การคำนวณกระจัดกระจายง่ายขึ้น
    • จากนั้นอีกครั้งบางทีเบียร์ - แลมเบิร์ตเป็นการคำนวณในระดับไมโครและการติดตามเส้นทางอยู่ในระดับมหภาค
  3. ปริมาตรที่เทียบเท่ากับ BSDF คืออะไร? ดูเหมือนว่าฉันสามารถใช้ฟังก์ชันเฟสเช่น Henyey-Greenstein เพื่อกำหนดทิศทางใหม่ แต่ฉันจะใช้เพื่อลดทอนอะไรบ้าง
  4. สุดท้ายวลี Google ดีกว่าสำหรับการกระเจิงเชิงปริมาตร Monte-Carlo คืออะไร?
    • การค้นหาการกระจัดกระจายตามปริมาตรหรือ SSS สิ้นสุดลงด้วยการมอบเอกสารวิธีการและโพสต์บล็อกเกี่ยวกับความง่ายของการจำลอง Monte-Carlo เต็มรูปแบบ (Dipole, in-scattering, out-scattering, diffusion, diffusion ฯลฯ )

คำตอบ:


7

ก่อนอื่นการอ้างอิงที่ดีสำหรับการติดตามเส้นทาง Monte Carlo ในสื่อที่เข้าร่วมคือบันทึกย่อของหลักสูตรนี้จาก Steve Marschner

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

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

ดังนั้นเพื่อตอบคำถามของคุณโดยตรง:

  1. ในทางเทคนิคคุณสามารถเลือกระยะห่างระหว่างเหตุการณ์ได้ตามต้องการตราบใดที่คุณให้น้ำหนักเส้นทางที่ถูกต้องสำหรับความน่าจะเป็นที่โฟตอนสามารถทำได้ระหว่างสองเหตุการณ์ที่อยู่ติดกันโดยไม่ต้องโต้ตอบกับสื่อ กล่าวอีกนัยหนึ่งแต่ละส่วนของเส้นทางภายในสื่อมีส่วนช่วยในเรื่องน้ำหนักของอี-σxที่ไหน xคือความยาวของส่วน (นี่ถือว่าเป็นสื่อที่เป็นเนื้อเดียวกัน แต่ดูหัวข้อ 4.2 ในบันทึก Marschner ที่เชื่อมโยงด้านบนว่าจะทำอย่างไรถ้ามันไม่เป็นเนื้อเดียวกัน)

    เมื่อพิจารณาถึงสิ่งนี้ทางเลือกที่ดีสำหรับระยะทางคือการสุ่มตัวอย่างที่สำคัญจากการแจกแจงเอ็กซ์โพเนนเชียล คุณตั้งค่าไว้x=-(LNξ)/σ แล้วออกไป อี-σx ปัจจัยจากน้ำหนักเส้นทาง

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

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

  3. ปริมาตรที่เทียบเท่ากับ BSDF คือการรวมกันของสัมประสิทธิ์การกระเจิงและการดูดซับ σs,σaและฟังก์ชั่นเฟส โดยการประชุมสัมประสิทธิ์ควบคุมความสมดุลโดยรวมของการส่งกระจายและการดูดซึมในขณะที่ฟังก์ชั่นเฟสเป็นปกติ

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

  4. ลองใช้ "สื่อที่เข้าร่วม" (นั่นคือ "สื่อ" เชิงปริมาตร - "สื่อ" - ซึ่ง "เข้าร่วม" ในการขนส่งเบา) และ "การติดตามเส้นทางตามปริมาตร"


คุณจะลองชิมระยะทางสำหรับสัมประสิทธิ์การกระเจิง / การดูดซับที่ไม่ใช่ monochromatic อย่างไร เลือกช่องแบบสุ่มแล้วหารด้วย 1/3 (ในกรณีของ RGB หรือ XYZ)
RichieSams

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

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