ในบทความที่แล้วได้เขียนเรื่องสีส่องผ่าน (transmission) ไปแล้วส่วนหนึ่ง (
https://phyblas.hinaboshi.com/20210918)
คราวนี้มาต่อกันที่เรื่องของปรากฏการณ์ที่เกิดขึ้นไปด้วยเมื่อแสงส่องผ่านวัตถุ นั้นคือการกระเจิงแสง (scatter) และกระจายแสง (dispersion)
สำหรับตัวอย่างคราวนี้จะใช้โมเดลอาซากาเซะ (
朝風) (ที่มา
https://3d.nicovideo.jp/works/td28882)
การกระเจิงแสงและความเปลี่ยนแปลงตามค่าความลึก
ปกติเวลาแสงเคลื่อนผ่านวัตถุจะมีการกระเจิงแสงไป ทำให้แสงที่ผ่านไปได้นั้นน้อยลงเรื่อยๆ
สำหรับในอาร์โนลด์การจำลองการกระเจิงเมื่อส่องผ่านนั้นอาจปรับได้ที่ค่า transmissionDepth และ transmissionScatter
ถ้าหากเราใส่ transmissionDepth เป็น 0 ไปก็จะไม่มีการกระเจิงเกิดขึ้น แต่ถ้าใส่ค่ามากกว่า 0 ลงไปก็จะเกิดการกระเจิงโดยที่ค่า transmissionDepth นี้เป็นตัวกำหนดความหน้าที่แสงจะสามารถทะลุผ่านไปได้
ถ้าค่ายิ่งน้อยก็หมายความว่าแสงเข้าไปได้นิดเดียวก็กระเจิงจนหมดแล้ว ทำให้ดูมืดทึบ แต่ถ้าค่ามากก็จะให้แสงผ่านเข้าไปได้ลึก จึงดูโปร่งใสกว่า
ลองให้ transmissionScatter เป็นสีขาวไปตามค่าตั้งต้น แล้วปรับ transmissionDepth ให้เป็นค่าต่างๆตั้งแต่ 0.1 ไปจนถึง 2000 ดูความเปลี่ยนแปลง
เมื่อลองใช้เท็กซ์เจอร์เป็นทั้งสีส่องผ่านและสีการกระเจิง
transmissionScatter เป็นตัวกำหนดสีที่จะมีการกระเจิงเมื่อมีการส่องผ่าน
พวกวัตถุโปร่งใสเช่นแก้วหรือของเหลวที่มีสีอาจจำลองได้โดยการให้สีโปร่งใส transmissionColor และสีการกระเจิง transmissionScatter เป็นสีนั้นๆไป ก็จะทำให้เรามองเห็นวัตถุเป็นสีนั้นๆ
ลองให้สี transmissionColor และ transmissionScatter เป็นไปตามเท็กซ์เจอร์ของโมเดลนี้ดู แล้วปรับค่าความลึกไปเรื่อยๆเหมือนตัวอย่างที่แล้ว
จะเห็นว่าถ้ากำหนดให้ transmissionDepth ตื้นมากๆก็จะได้วัตถุสีตามเท็กซ์เจอร์ คล้ายกับตอนที่ใช้เป็นสี base แต่ส่วนที่บางๆก็จะยังเห็นใสๆทะลุได้อยู่ และเมื่อให้ transmissionDepth มากขึ้นเรื่อยๆก็จะมีการทะลุผ่านมากขึ้นเรื่อยๆจนยิ่งใส
ความเปลี่ยนแปลงไปตามค่า anisotropy ของการกระเจิง
ในวัตถุบางชนิดการกระเจิงแสงก็เกิด anisotropy ขึ้น คือทีความแตกต่างกันในแต่ละทิศทาง การจำลอง anisotropy ของการกระเจิงนี้อาจทำได้โดยใส่ค่า transmissionScatterAnisotropy โดยค่าที่สามารถใส่ได้คือ -1.0 ไปจนถึง 1.0
ลองดูตัวอย่างโดยให้ค่า transmissionDepth=10, specularRoughness=0.1, specularIOR=1.5 แล้วไล่ปรับค่า transmissionScatterAnisotropy ภายในช่วงนั้นแล้วดูความเปลี่ยนแปลง จะเห็นว่าให้ผลต่างออกไปมาก
เลขอับเบอกับการกระจายแสง
การจำลองปรากฏการณ์การกระจายแสงต่างกันตามช่วงคลื่นดังที่เกิดขึ้นในแก้วหรือเพชร transmissionDispersion โดยค่าที่ใส่นั้นเป็นค่า
เลขอับเบอ ซึ่งในแก้วหรือเพชรอาจมีค่าอยู่ที่ 10-70
ลองตั้งสมบัติของวัสดุให้เหมือนเพชร คือ specularRoughness=0, specularIOR=2.4 แล้วปรับค่า transmissionDispersion ตั้งแต่ 0 จนถึง 60
จะเห็นว่าพอใส่ค่า transmissionDispersion แล้วทำให้แสงที่ทะลุผ่านดูมีสีสันขึ้นมาแม้ว่าแสงที่ส่องเข้าไปจะเป็นแสงขาวธรรมดา
ค่าความหยาบเสริมเพิ่มเติม
ปกติแล้วความหยาบในการส่องผ่านนั้นจะขึ้นอยู่กับค่า specularRoughness โดยค่านี้กำหนดทั้งความหยาบของการสะท้อนและส่องผ่านไปพร้อมกัน
แต่ว่าเราสามารถทำให้ความหยาบในการส่องผ่านมีค่าต่างออกไปจากการสะท้อนได้โดยกำหนดค่า transmissionExtraRoughness ค่านี้จะไปบวกเพิ่มหรือหักลบจาก specularRoughness ได้เป็นค่าความหยาบในการส่องผ่าน ค่าที่ใส่อาจติดลบก็ได้ ซึ่งก็จะทำให้ความหยาบในการส่องผ่านน้อยลง ถ้าเป็นบวกก็จะทำให้การส่องผ่านหยาบมากกว่าการสะท้อน
ลองให้ specular=1, specularRoughness=0.1 แล้วให้ transmissionExtraRoughness เปลี่ยนไปตั้งแต่ -0.1 ถึง 0.5
จะเห็นว่าแสงส่องผ่านมีความหยาบทำให้ดูแล้วขุ่นขึ้นเรื่อยๆเหมือนเมื่อเมื่อเพิ่มค่า specularRoughness แต่ว่าแสงสะท้อนไม่ได้หยาบขึ้นไปด้วย