ทำไม H (blinn) จึงใช้แทน R (phong) ในการแรเงาแบบ specular?


22

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

สิ่งที่ฉันสามารถค้นหาได้มีสาเหตุบางประการ:

มันเร็วกว่า - มีข้อมูลที่หลากหลายเกี่ยวกับเรื่องนี้ แต่ถึงอย่างนั้นมันก็จะเป็นเหตุผลที่ดี ... ในปี 1998

มันจัดการมุมที่สูงกว่า 90 องศาได้ดีกว่า - เท่าที่ฉันสามารถบอกเหตุผลเดียวสำหรับเรื่องนี้ก็เพราะว่าคำว่าพงษ์ถูกใช้อย่างไม่ถูกต้อง ผลคูณของการสะท้อนและมุมมองให้มุมระหว่าง -1 ถึง +1 โดยปกติมุมนี้จะถูกจับเป็น 0 ถึง 1 นี่คือสาเหตุโดยตรงของปัญหา 90 องศา ปรับมุมให้เป็นมาตรฐานอีกครั้งแทนที่จะยึดไว้และคุณจะได้รับการครอบคลุม 180 องศาอย่างเต็มที่ ฉันปฏิเสธที่จะเชื่อว่าการทำงานแบบ x * 0.5 + 0.5 ที่เรียบง่ายทำให้โลกกราฟิกเป็นเวลา 40 ปี

มันจัดการกับขอบได้ดีขึ้น - "ปัญหา" ของขอบยังมีอยู่ในโซลูชัน blinn เพียงเล็กน้อยเท่านั้น สาเหตุหลักคือการจำลองแสงของพื้นที่ในเทอร์มิเนเตอร์อย่างไม่เหมาะสมซึ่งควรมีความสำคัญสำหรับส่วนใดส่วนหนึ่งของร่างกาย แต่แม้ในสถานการณ์ที่ง่ายกว่าฟังก์ชั่น sigmoid สามารถประมาณบรรทัด soft terminator ได้อย่างถูกต้อง การคูณลงในเทมเพลตแลมเบิร์ตนั้นไม่ถูกต้องเนื่องจากมันลดทอนคำศัพท์ที่ไม่ถูกต้องซึ่งอาจทำให้เทอมเฟรสหายและนำไปสู่ข้อผิดพลาดเพิ่มเติม

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

เหตุผลเหล่านี้ไม่เป็นที่น่าพอใจฉันต้องการแยกแยะความบ้าคลั่งนี้

ฉันต้องการชี้แจงว่าฉันไม่ได้พูดถึง blinn และ phong โดยเฉพาะแต่แทนที่จะเกี่ยวกับองค์ประกอบของเวกเตอร์ H และ R ซึ่งใช้เป็นพื้นฐานสำหรับการให้เฉดสีเหล่านี้รวมถึงอื่น ๆ

คำตอบ:


24

สำหรับพื้นผิวที่สะท้อนแสงได้อย่างสมบูรณ์แบบรุ่น Phong จึงสมเหตุสมผล อย่างไรก็ตาม n in (RV) ^ n ของโมเดลพงษ์สำหรับการประมาณพื้นผิวที่หยาบกร้านมาจากที่ไหน? ทฤษฏีที่คุณต้องเพิ่มผลลัพธ์ของผลิตภัณฑ์ดอทเป็นพลังงานนั้นคืออะไรยกเว้นว่ามันจะให้ผลลัพธ์ที่เหมาะสม

สำหรับแบบจำลองของ Blinn นั้นมีทฤษฎีของ microfacetทางกายภาพเพื่อสนับสนุนส่วนประกอบทั้งหมดในสมการและยังมีหลักฐานเชิงประจักษ์ว่าแบบจำลองนั้นใกล้เคียงกับพื้นผิวโลกแห่งความเป็นจริงมากขึ้น (แม้ว่าจะไม่สมบูรณ์แบบ) ครึ่งเวกเตอร์ในแบบจำลอง Blinn ใช้เป็นข้อมูลป้อนเข้าสู่ฟังก์ชั่นการแจกแจงแบบปกติ (NDF) ซึ่งเป็นการประมาณว่าการกระจายของ microfacets เกี่ยวกับพื้นผิวปกติเป็นหน้าที่ของความขรุขระผิว คือเมื่อ H-vector ชี้ไปที่ทิศทางปกติค่าสูงสุดเนื่องจาก microfacets ส่วนใหญ่ชี้ไปที่ทิศทางนั้นและความน่าจะเป็นจะลดลงตามลำดับเมื่อมุมระหว่างปกติและ H-vector เพิ่มขึ้น

Blinn-model นั้นไม่ได้สมบูรณ์แบบด้วยวิธีการใด ๆ และมันก็ไม่ได้นำเอารูปทรงเรขาคณิตของรูปแบบของ microfacet มาพิจารณา (เช่นการแรเงาและการปิดบังของ microfacets ที่มีความสำคัญเพิ่มขึ้นในมุมการเลี้ยงสัตว์)


ฉันไม่ได้พูดถึงการใช้งานเฉพาะของพงษ์ซึ่งแน่นอนไม่มีพื้นฐานทางกายภาพ แต่ฉันไม่สามารถเห็นได้ว่าทฤษฎีไมโครฟิล์มสนับสนุน H ได้ดีกว่า R เป็นพื้นฐานสำหรับเวกเตอร์สะท้อนแสงได้อย่างไร แบบจำลองการแรเงาไม่ได้รับการสนับสนุนสังเกตุทุกอย่างล้มเหลวในการทำซ้ำวัสดุจริงตาม "การทดสอบการตรวจสอบของ BRDF" addy 2005 ดูเหมือนว่าสำหรับฉันแล้วว่า microfacets มีการจำลองใน phong ผ่านผลิตภัณฑ์ dot R · V ซึ่งสามารถใช้เป็น พื้นฐานสำหรับไฮไลท์ที่ถูกต้องทางร่างกายมากขึ้นทั้งผ่านฟังก์ชั่นการแมปใหม่หรือทางลาด ฟังก์ชั่นพลังงานเป็นเพียงการแมปที่เรียบง่ายและผิดพลาดที่สุด
BmB

2
@BmB ไม่ microfacets ไม่ใช่ "modeled in phong" แต่ใช้การกระจายความน่าจะเป็นของ microfacets ที่กำหนดด้วย NDF นั่นคือ "ตัวอย่าง" กับ H-vector NDF โดยทั่วไปมีความสมมาตรเกี่ยวกับปกติ (isotropic / anisotropic) ดังนั้นจึงเหมาะสมที่จะใช้ H-vector สำหรับมัน ผมบอกว่ามีหลักฐานเชิงประจักษ์ที่ Blinn รูปแบบอื่น ๆ อย่างใกล้ชิดใกล้เคียงกับวัสดุที่โลกแห่งความจริงกว่าษ์
JarkkoL

การสะท้อนใด ๆ ที่ไม่ได้อยู่บนเวกเตอร์การสะท้อนนั้นไม่ได้เป็นการสะท้อนแบบกระจกที่สมบูรณ์แบบ ผลิตภัณฑ์ดอทสร้างมูลค่าการสะท้อนกลับสำหรับมุมที่ไม่สมบูรณ์ จำเป็นต้องผลิตโดย microfacets ผลิตภัณฑ์ดอทจึงทำโมเดลไมโครฟอร์ซ จุดง่ายสร้างการกระจายเชิงเส้น แต่การแจกแจงสามารถถูกจำลองโดยฟังก์ชันใด ๆ ที่มี R เช่นเดียวกับ H สิ่งนี้ไม่ได้อธิบายเกี่ยวกับความถูกต้องของ H เหนือ R
BmB

1
@BmB ฉันขอแนะนำให้คุณอ่านเกี่ยวกับทฤษฎีของไมโครฟอร์แมตและโดยเฉพาะเกี่ยวกับส่วน NDF เพื่อทำความเข้าใจแนวคิด นั่นจะช่วยให้คุณได้รับคำตอบสำหรับคำถามของคุณ
JarkkoL

1
คุณควรเปิดคำถามใหม่เกี่ยวกับ microfacets และ NDF เพราะมีหลายสิ่งที่คุณไม่เข้าใจเกี่ยวกับแนวคิดและความคิดเห็นเหล่านี้ไม่ใช่สถานที่ที่เหมาะสมที่จะอธิบาย
JarkkoL

6

อันที่จริงฉันคิดว่าคุณเองระบุเหตุผลว่าทำไม Blinn จึงเป็นค่าเริ่มต้นของ Phong

แต่ละเหตุผลที่คุณระบุไว้ในความเป็นจริงพื้นที่ที่ Blinn พิสูจน์ได้ดีกว่า Phong

โดยรวมแล้วสิ่งเหล่านี้นำไปสู่การ Blinn เป็นค่าเริ่มต้นที่ดีกว่า Phong

Blinn สมบูรณ์แบบไหม มันดีกว่าพงษ์เหรอ?

เลขที่

แต่มันเป็นค่าเริ่มต้นที่สมเหตุสมผล อย่าลังเลที่จะทดแทน Phong ให้กับ Blinn ในโหมด renderer / shader ที่คุณเขียน


เห็นด้วยนี่เป็นสิ่งที่แน่นอน ทั้งสองรุ่นนั้นสมบูรณ์แบบ การประมาณของ Blinn นั้นเหนือกว่าการเพิ่มประสิทธิภาพทั้งหมดตั้งแต่การคำนวณมุมครึ่งนั้นถูกกว่า ปรากฎว่ามันดูดีขึ้นเกือบตลอดเวลาเช่นกัน
Damon

-2

ฉันได้ค้นพบสาเหตุของการใช้เวกเตอร์ H น่าเสียดายที่มันไม่ได้เป็นวิธีที่ใช้ในโมเดลบังแดดส่วนใหญ่ซึ่งสามารถสรุปได้ว่าไม่ถูกต้อง

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

ตามกฎของการสะท้อนมุมของการบังต้องถูกสะท้อนด้วยมุมการสะท้อนตามพื้นผิวปกติ เพื่อให้แสงของแสงกระทบกับกล้อง - ซึ่งเรารู้ว่าทำ - มันต้องสะท้อนจากแสง - เรารู้ทิศทางของมัน ดังนั้นพื้นผิวปกติต้องถูกหักเป็นแกนกระจกสำหรับสองทิศทางนี้ นี่ให้เวกเตอร์ครึ่ง H ซึ่งอยู่ระหว่างพวกเรา คำนวณโดย normalizing ผลรวมของทั้งสอง

ตอนนี้โดยการคำนวณมุมระหว่างทิศทางแสง L และเวกเตอร์ครึ่ง H เราได้รับมุมของการตกกระทบของการสะท้อนแสงแบบจำเพาะของ microfacet และสามารถลดทอนมันได้อย่างถูกต้องโดยใช้คำว่าเฟรส

โปรดทราบว่าทิศทางการดูเท่ากับ R สำหรับไมโครฟิล์มนั้น H ไม่ใช่คำศัพท์การสะท้อน Blinn, Cook, Torrance และ Sparrow สามารถดูดมันได้ พงษ์และ Fresnel ถูกต้อง


คำศัพท์เฟรสเนลเป็นส่วนหนึ่งของสมการไมโครไบรท์ BRDF และจุลภาคแต่ละตัวไม่ได้คำนึงถึงสิ่งเหล่านี้ คุณไม่ต้องคำนวณมุมระหว่างเวกเตอร์ L และ H แต่เป็นเวกเตอร์ N และ H นี่ควรให้คำใบ้ว่าทำไม H ถึงถูกใช้งาน คุณจำเป็นต้องมีความรู้เพิ่มเติมเล็กน้อยในหัวข้อเพื่อสรุปว่าใครถูกหรือ "ถูกกว่า";)
JarkkoL

microfacet ของวัสดุมีคุณสมบัติเช่นเดียวกับวัสดุ ดังนั้นไมโครฟอเรสต์ของตัวสะท้อนที่ไม่สมบูรณ์นั้นไม่สามารถเป็นตัวสะท้อนที่สมบูรณ์แบบได้ ตรรกะของคุณไม่ปลอดภัยและไม่ช่วยเหลือ N dot H ไม่มีนัยสำคัญทางกายภาพ
BmB

4
ไม่นั่นไม่ใช่วิธีการทำงานของ microfacet model เหตุผลของฉันคือเสียงที่สมบูรณ์แบบทุกคนที่เข้าใจแม้กระทั่งพื้นฐานของแบบจำลอง microfacet ก็สามารถยืนยันได้ microfacet แต่ละตัวเป็นตัวสะท้อนแสงที่สมบูรณ์แบบ (เช่นแบบออพติคัลแบบแบน) และการสะท้อนที่ไม่สมบูรณ์ของวัสดุนั้นมาจากความแปรปรวนของบรรทัดฐาน microfacet ตามที่กำหนดโดย NDF ความเพียรของคุณที่จะท้าทายคำแนะนำที่ถูกต้องสมบูรณ์แบบก็เป็นเรื่องที่น่าขบขัน;)
JarkkoL

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