Path tracer - วัสดุหลายชั้นและการสุ่มตัวอย่างที่สำคัญ


12

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

ป้อนคำอธิบายรูปภาพที่นี่

เมื่อแสงกระทบกับพื้นผิว Fresnel จะบอกเราว่าแสงนั้นสะท้อนออกมาในชั้นแรกมากแค่ไหนและไปที่ชั้นที่สองเท่าใด

ดังนั้นฉันจึงทำสิ่งที่คล้ายกัน แต่ง่ายกว่า: เพียงชั้นเดียวของ specular และชั้นหนึ่งของการกระจาย ยังไม่มีการส่งผ่าน จนถึงตอนนี้ฉันใช้brdf ที่มีน้ำหนักแบบโคไซน์เพื่อการกระจายของฉันและแบบจำลองขนาดเล็กของ Cook-Torrance สำหรับ specular ของฉัน

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

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

มีวิธีแก้ปัญหาที่ดีกว่านี้ไหม?


1
คุณไม่สามารถ 'ชั้นวัสดุ' monte-carlo ได้หรือไม่ เช่นน้ำหนักแต่ละชั้นตามการสะท้อนแสงของพวกเขาและเลือกหนึ่งโดยการสุ่มขึ้นอยู่กับว่า ชั้นลึกจะต้องลดทอนบางอย่างขึ้นอยู่กับผลรวมของการดูดซึมของทุกชั้นเหนือพวกเขา
PaulHK

PaulHK นั่นคือสิ่งที่ฉันกำลังทำในเส้นทางของฉันรูเล็ตรัสเซียสำหรับแต่ละอินเตอร์เฟสระหว่างเลเยอร์ดังนั้นจึงไม่มีการแตกแขนงเลย โชคไม่ดีที่การใช้งานของฉันยังไม่เสร็จดังนั้นฉันจึงไม่มีข้อมูลเกี่ยวกับประสิทธิภาพที่แท้จริง ฉันได้นำไปปฏิบัติในบทความเรื่อง "Layered Micro-Facet Surfaces" โดย Andrea Weidlich และ Alexander Wilkie ซึ่งดูเหมือนจะมีข้อ จำกัด มากกว่ากรอบของ Wenzel Jakob (ชี้ให้เห็นในคำตอบของ Stefan) แต่มีความสามารถ การสร้างผลลัพธ์ที่ค่อนข้างดีและง่ายต่อการใช้งาน
Christian Pagot

คำตอบ:


7

Wenzel Jakob et al นำเสนอกรอบงานสำหรับวัสดุชั้นใน SIGGRAPH 2014 ส่วน 6.2 อธิบายการสุ่มตัวอย่างที่สำคัญ หากคุณต้องการมากกว่ารหัสสมการวิธีการที่จะดำเนินการในrenderer Mitsuba


2
โปรดทราบว่าวิธีการโดย Jakob et al อาศัยการเรนเดอร์ของข้อมูล BSDF แบบตารางในการแทนค่าพื้นฐานฟูริเยร์แบบพิเศษบางอย่าง สำหรับรายละเอียดโปรดอ้างอิงรายงานทางเทคนิคที่เกี่ยวข้อง การใช้งานโอเพนซอร์สยังมีอยู่ในรุ่นใหม่ล่าสุดรุ่นที่ 3 ของPBRT ไฟล์ BSDF สามารถสร้างได้ด้วยlayerlabใน Python
tizian
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.