ความแตกต่างแบบกระจายและแบบ specular-based


34

วิธีการแรเงาแบบคลาสสิคในคอมพิวเตอร์กราฟิกแบบเรียลไทม์คือการรวมกันของคำศัพท์การกระจาย (Lambertian) และคำที่มีความหมายซึ่งอาจเป็นไปได้ว่า Phong หรือ Blinn-Phong

ภาพจาก Wikipedia

ขณะนี้มีแนวโน้มไปสู่การเรนเดอร์เชิงกายภาพดังนั้นโมเดลวัสดุในเครื่องยนต์เช่นFrostbite , Unreal EngineหรือUnity 3D BRDF เหล่านี้มีการเปลี่ยนแปลง ตัวอย่างเช่น (อันที่เป็นสากลในตอนนั้น) Unreal Engine ล่าสุดยังคงใช้การแพร่กระจายของ Lambertian แต่เมื่อใช้ร่วมกับรูปแบบ microfacet ของ Cook-Torrance สำหรับการสะท้อนแบบ specular (โดยเฉพาะการใช้ GGX / Trowbridge-Reitz ) นอกจากนี้ยังมีการใช้ค่า 'Metalness' เพื่อแยกความแตกต่างระหว่างตัวนำและอิเล็กทริก

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

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

คำตอบ:


30

ในการเริ่มต้นฉันขอแนะนำให้อ่านการนำเสนอ Siggraph ของ Naty Hoffman ซึ่งครอบคลุมถึงฟิสิกส์ของการเรนเดอร์ ที่กล่าวว่าฉันจะพยายามตอบคำถามเฉพาะของคุณยืมภาพจากงานนำเสนอของเขา

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

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

โลหะที่ไม่ใช่จะแสดงทั้งการสะท้อนและการหักเห ที่ไม่ใช่โลหะ

วัสดุโลหะมีเพียงการสะท้อน แสงหักเหทั้งหมดจะถูกดูดซับ โลหะ

มันจะมีราคาแพงในการพยายามทำแบบจำลองการโต้ตอบของอนุภาคแสงกับโมเลกุลของวัสดุ เราทำการตั้งสมมติฐานและเรียบง่ายแทน

การหักเหง่าย

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

อย่างไรก็ตามนี่เป็นข้อสันนิษฐานที่ค่อนข้างใหญ่ สำหรับวัสดุทึบแสงส่วนใหญ่สมมติฐานนี้ใช้ได้และไม่แตกต่างจากชีวิตจริงมากนัก อย่างไรก็ตามสำหรับวัสดุที่มีความโปร่งใสชนิดใด ๆ สมมติฐานจะล้มเหลว ตัวอย่างเช่นนมผิวสบู่ ฯลฯ

สีที่สังเกตได้ของวัสดุคือแสงที่ไม่ดูดซับ นี่คือการรวมกันของทั้งแสงสะท้อนเช่นเดียวกับแสงหักเหใด ๆ ที่ออกจากวัสดุ ตัวอย่างเช่นวัสดุสีเขียวบริสุทธิ์จะดูดซับแสงทั้งหมดที่ไม่ใช่สีเขียวดังนั้นแสงเดียวที่มาถึงดวงตาของเราคือแสงสีเขียว

ดังนั้นศิลปินจึงจำลองสีของวัสดุโดยให้ฟังก์ชั่นการลดทอนสำหรับวัสดุนั้นคือการดูดซับแสงของวัสดุ ในโมเดลกระจาย / specular ที่ง่ายของเราสามารถแสดงได้สองสี, สีกระจายและสี specular ก่อนที่จะมีการใช้วัสดุที่มีอยู่จริงศิลปินจะเลือกสีเหล่านี้แต่ละสีโดยพลการ อย่างไรก็ตามควรมีความชัดเจนว่าสีทั้งสองนี้ควรเกี่ยวข้องกัน นี่คือที่มาของสี albedo ตัวอย่างเช่นใน UE4 พวกเขาคำนวณสีแบบกระจายและแบบ specular ดังนี้:

DiffuseColor = AlbedoColor - AlbedoColor * Metallic;
SpecColor = lerp(0.08 * Specular.xxx, AlbedoColor, Metallic)

โดยที่ Metallic คือ 0 สำหรับอโลหะและ 1 สำหรับโลหะ พารามิเตอร์ 'Specular' ควบคุม specularity ของวัตถุ (แต่มักจะเป็นค่าคงที่ 0.5 สำหรับวัสดุ 99%)


1
เหตุใดรังสีของเหตุการณ์จึงถูกแยกหลังจากการสะท้อนกลับ / การหักเห ถ้าแสงนั้นเป็นอนุภาคนั่นหมายความว่าอนุภาคนี้จะแยกแบบวนซ้ำ? และถ้าแสงเป็นคลื่นหมายความว่านั่นคือแยกตามความถี่ (แต่ในกรณีนี้ทำไมมันแยกหลังจากตีสอง / สาม / ฯลฯ )?
nikitablack

5
อนุภาคไม่แตก ค่อนข้างภาพแสดงเส้นทางที่อาจเกิดขึ้นได้
RichieSams

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

1
คำตอบที่ดีส่องแสงคำถามส่วนใหญ่ของฉัน ทำไมส่วนที่ไม่มีโครงสร้างของโลหะไม่มีสีและไม่ได้รับผลกระทบจากอัลเบโด้? โพลาไรซ์เกิดขึ้นได้อย่างไรและที่ไหนในการเล่น?
David Kuri

1
"สีที่สังเกตได้ของวัสดุคือแสงที่ไม่ดูดซับ" ณ จุดนี้อาจจะคุ้มค่าในการอ้างอิงว่ามีวัสดุทั่วไปที่ไม่ได้แสดงโดย RGB ที่ดีหรือไม่ การอภิปรายเป็นวัสดุเรืองแสงฤดูใบไม้ผลิในใจ
Simon F

23

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

ปรากฎว่ามีเรื่องโกหกมากมายที่เราเชื่อว่าคนกราฟิก


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

ไม่มีสิ่งเช่น "สี specular"

สิ่งที่คุณอาจไม่ทราบก็คือสมการเฟรสเนลแตกต่างกันไปตามความยาวคลื่นเนื่องจากดัชนีการหักเหแตกต่างกันไปตามความยาวคลื่น ความแตกต่างนั้นค่อนข้างเล็กสำหรับ dielectrics (การกระจายตัวใคร?) แต่สามารถมีขนาดใหญ่สำหรับโลหะ (ฉันคิดว่าสิ่งนี้เกี่ยวข้องกับโครงสร้างไฟฟ้าที่แตกต่างกันของวัสดุเหล่านี้)

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

ไม่มีสิ่งเช่น "การสะท้อนกระจาย"

ดังที่ Naty Hoffman กล่าวในการพูดคุยที่เชื่อมโยงกับคำตอบอื่น ๆ นี่เป็นการประมาณค่าที่กระจัดกระจายใต้ผิวดิน

โลหะส่งสัญญาณแสง

Naty Hoffman ผิด (แม่นยำยิ่งขึ้นลดความซับซ้อน) แสงจะไม่ถูกดูดซึมโดยโลหะทันที ในความเป็นจริงมันจะผ่านค่อนข้างสะดวกผ่านวัสดุหนาหลายนาโนเมตร (ตัวอย่างเช่นสำหรับทองคำใช้เวลา 11.6633nm เพื่อลดทอนแสง 587.6nm (สีเหลือง) ครึ่งหนึ่ง)

การดูดซึมเช่นเดียวกับในไดอิเล็กตริกเนื่องจากกฎหมายเบียร์ - แลมเบิร์ต สำหรับโลหะค่าสัมประสิทธิ์การดูดซึมเป็นเพียงขนาดใหญ่มาก (α = 4πκ / λที่κเป็นองค์ประกอบในจินตนาการของดัชนีหักเหของแสง (สำหรับโลหะ ~ 0.5 ขึ้นไป) และλจะได้รับในเมตร )

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


3
ขอขอบคุณ! ฉันรู้แค่ความเรียบง่ายเท่านั้น รายละเอียดพิเศษเหล่านี้ยอดเยี่ยมมาก
RichieSams

1
นี่คือคำตอบที่น่าสนใจ คุณช่วยอธิบาย / ลิงก์ SSS คำย่อได้ไหม?
trichoplax

@trichoplax ขอบคุณ! SSS == การกระเจิงของพื้นผิวย่อย
imallett

ขอบคุณ :) หากคุณชี้แจงในคำถามมันจะรอดจากการลบความคิดเห็น (ซึ่งไม่รับประกันว่าจะมีอายุการใช้งานนาน) ฉันได้แก้ไขในลิงก์และข้อความโฉบซึ่งหวังว่าจะทำให้งานนำเสนอที่คุณตั้งใจไว้เหมือนเดิม
Trichoplax

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