φυβλαςのβλογ
บล็อกของ phyblas



ทำความเข้าใจเรื่องการกระเจิงแสง (scatter) และกระจายแสง (dispersion) ของ standardSurface ใน arnold ใน maya
เขียนเมื่อ 2021/09/19 00:05
แก้ไขล่าสุด 2023/05/14 11:39

ในบทความที่แล้วได้เขียนเรื่องสีส่องผ่าน (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 แต่ว่าแสงสะท้อนไม่ได้หยาบขึ้นไปด้วย







-----------------------------------------

囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧囧

ดูสถิติของหน้านี้

หมวดหมู่

-- คอมพิวเตอร์ >> 3D >> maya

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

สารบัญ

รวมคำแปลวลีเด็ดจากญี่ปุ่น
มอดูลต่างๆ
-- numpy
-- matplotlib

-- pandas
-- manim
-- opencv
-- pyqt
-- pytorch
การเรียนรู้ของเครื่อง
-- โครงข่าย
     ประสาทเทียม
ภาษา javascript
ภาษา mongol
ภาษาศาสตร์
maya
ความน่าจะเป็น
บันทึกในญี่ปุ่น
บันทึกในจีน
-- บันทึกในปักกิ่ง
-- บันทึกในฮ่องกง
-- บันทึกในมาเก๊า
บันทึกในไต้หวัน
บันทึกในยุโรปเหนือ
บันทึกในประเทศอื่นๆ
qiita
บทความอื่นๆ

บทความแบ่งตามหมวด



ติดตามอัปเดตของบล็อกได้ที่แฟนเพจ

  ค้นหาบทความ

  บทความแนะนำ

ตัวอักษรกรีกและเปรียบเทียบการใช้งานในภาษากรีกโบราณและกรีกสมัยใหม่
ที่มาของอักษรไทยและความเกี่ยวพันกับอักษรอื่นๆในตระกูลอักษรพราหมี
การสร้างแบบจำลองสามมิติเป็นไฟล์ .obj วิธีการอย่างง่ายที่ไม่ว่าใครก็ลองทำได้ทันที
รวมรายชื่อนักร้องเพลงกวางตุ้ง
ภาษาจีนแบ่งเป็นสำเนียงอะไรบ้าง มีความแตกต่างกันมากแค่ไหน
ทำความเข้าใจระบอบประชาธิปไตยจากประวัติศาสตร์ความเป็นมา
เรียนรู้วิธีการใช้ regular expression (regex)
การใช้ unix shell เบื้องต้น ใน linux และ mac
g ในภาษาญี่ปุ่นออกเสียง "ก" หรือ "ง" กันแน่
ทำความรู้จักกับปัญญาประดิษฐ์และการเรียนรู้ของเครื่อง
ค้นพบระบบดาวเคราะห์ ๘ ดวง เบื้องหลังความสำเร็จคือปัญญาประดิษฐ์ (AI)
หอดูดาวโบราณปักกิ่ง ตอนที่ ๑: แท่นสังเกตการณ์และสวนดอกไม้
พิพิธภัณฑ์สถาปัตยกรรมโบราณปักกิ่ง
เที่ยวเมืองตานตง ล่องเรือในน่านน้ำเกาหลีเหนือ
ตระเวนเที่ยวตามรอยฉากของอนิเมะในญี่ปุ่น
เที่ยวชมหอดูดาวที่ฐานสังเกตการณ์ซิงหลง
ทำไมจึงไม่ควรเขียนวรรณยุกต์เวลาทับศัพท์ภาษาต่างประเทศ

บทความแต่ละเดือน

2024年

1月 2月 3月 4月
5月 6月 7月 8月
9月 10月 11月 12月

2023年

1月 2月 3月 4月
5月 6月 7月 8月
9月 10月 11月 12月

2022年

1月 2月 3月 4月
5月 6月 7月 8月
9月 10月 11月 12月

2021年

1月 2月 3月 4月
5月 6月 7月 8月
9月 10月 11月 12月

2020年

1月 2月 3月 4月
5月 6月 7月 8月
9月 10月 11月 12月

ค้นบทความเก่ากว่านั้น

ไทย

日本語

中文