φυβλαςのβλογ
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
モンゴル語
言語学
maya
確率論
日本での日記
中国での日記
-- 北京での日記
-- 香港での日記
-- 澳門での日記
台灣での日記
北欧での日記
他の国での日記
qiita
その他の記事

記事の類別



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

  記事を検索

  おすすめの記事

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

ไทย

日本語

中文