[mental ray Sub Surface Scattering]
เป็นที่รู้กันว่า Sub Surface Scattering หรือเรียกสั้นๆ SSS เป็นเทคนิคการ Render ที่ใช้เวลานานมากๆ เมื่อต้องการคุณภาพที่ดีดังนั้นจึงมีความพยายามที่จะเร่งความเร็ว รวม ถึงหลอก ด้วยวิธีการต่างๆ
โดยปกติแล้วการคำนวณ SSS เป็นการ Sample จุดรอบๆจุดที่กำลัง Render อาจจะรอบจุดเดียว รอบสองจุด หรือตามเส้น แล้วแต่จะ Apply หลักการใดมาใช้งาน ไม่ว่าจะเป็น วิธีใดก็ตาม การ Sample ค่าแสงที่กระทบ Surface รอบๆจำนวนมากเข้ามาคำนวณนั้นใช้เวลาสูงมากๆ ดังนั้น การเร่งความเร็วที่ตรงประเด็นที่สุดคือ สร้างข้อมูลแสงในแต่ละ จุดเอาไว้ใน file ก่อน แล้วเรียกค่าแสงเข้ามาใช้งานโดยไม่ต้องคำนวณแนวแสง (Raytrace) และค่าแสงกระทบ อาจเก็บไว้ในรูปกลุ่มของจุดใน 3D Space (Point Clound) ก ็ได ้หรือเก็บใน file รูปภาพก็ได้โดยเก็บไว้ในลักษณะ Texture
mental ray ซึ่งให้มากับ Maya 6.5 และ 7.0 ได้ให้ Shader เร่งความเร็วในการคำนวณ SSS มาหลายตัวด้วยกัน โดยใช้หลักการเก็บค่าแสงไว้ใน file ภาพ และเรียกมาใช้งาน ลองมาดูกันครับ ว่าการ mental ray ใช้คาอะไรบ้างคำนวณ
ตัวแปลสำคัญๆเช่น Front SSS Radius, Back SSS Radius คือระยะในการเก็บค่าแสงเข้ามาคำนวณ Back SSS Depth คือระยะลึกของจุดที่สองในการ Sample ซึ่งถือว่าเป็นด้านหลังของ Surface Samples คือจำนวนจุดที่ต้องการนำมาคำนวณ ซึ่งจำนวนมากหมายถึง คุณภาพที่ดีขึ้น
ดูตัวอย่างกันดีกว่าครบ

ต้องการให้มีแสงทะลุเข้ามาในถ้วยก๋วยเตี๋ยว อาจเลือกี่จะใช้ Shader ตัวเดียวแล้ว Render ออกมาเลยก็ได ้แต่อยากให้ดูการแยก Pass เนื่องจากทำให้เราสามารถทำงานโดย ปกติโดยไม่มี SSS ได ้และเพิ่มเติม SSS เข้าไปตามต้องการ

Node ที่เกี่ยวข้องมีทั้งหมด 4 Node ด้วยกัน
1. misss_fast_shader ตัวหลักในการคำนวณ SSS
2.
misss_lightmap_write มีหน้าที่สร้างข้อมูลแสงซึ่งตกกระทบบน Surface แล้วเก็บไว้ใน file โดย Shader ตัวนี้ต้องต่อเข้ากับ Light Map Shader ของ Shading Group
3.
mentalrayTexture รับข้อมูลจาก misss_lightmap_write และเขียนลง file นอกจากนี้ยังเป็นตัวเชื่อมข้อมูลแสงที่ได้ให้กับ misss_fast_shader ด้วย
4.
misss_lambert_gamma รับหน้าที่คำนวณปริมาณแสงตกกระทบบน Surface แบบ Lambert ซึ่ง misss_lightmap_write ใช้เป็นตัวหลักในการ คำนวณ
ดูกันทีละตัวครับ

เนื่องจากตัว misss_fast_shader สามารถคำนวณค่า Diffuse หรือค่าแสงตกกระทบโดยตรงได้ด้วย แต่ในกรณีนี้เราต้องการ แยก Pass จึงไม่ต้องการ Diffuse ให้ขึ้นมา จึงตั้ง ค่า Diffuse Wieght เป็น 0
ส่วน Front SSS Weight และ Back SSS Weight คือความเข้ม (ตัวคูณ) ของด้าน Front และด้าน Back ก็ตั้งตามความเหมาะสม ในที่นี้ตั้งไว้เท่ากัน คือให้เฉลี่ยในปริมาณ เท่าๆกัน
ค่า Samples 256 จะให้คุณภาพที่ค่อนข้างใช้ได ้ตํ่ากว่านี้จุดที่เกิดขึ้นจะเห็นชัดเกินไป

misss_lightmap_write ต้องต่อเข้ากับสอง Node คือ misss_lambert_gamma และ mentalrayTexture ค่าอย่างอื่นไม่ต้องตั้ง

misss_lambert_gamma ตั้งค่าสีเมื่อแสงกระทบ ควรตั้งเป็นสีขาว เพื่อให้ง่ายในการปรับแต่งภายหลัง

mentalrayTexture ต้องทำให้เป็น Texture ที่เขียนได้โดยติ๊กที่ Writable ตั้ง File Size Depth 32 bits และเขียนตำแหน่ง file พร้อมตั้งชื่อ อาจตั้งชื่ออะไรก็ได ้เช่นภาพด้าน บนตั้งชื่อ sssbowl เก็บใน folder sourceimages

Shading Group Node ต่อ misss_lightmap_write เข้าไปที่ Light Map Shader ส่วน misss_fast_shader ควรต่ออยู่แล้วโดยอัตโนมัต

ตั้งค่าใน Render Setting (Render Global) เล็กน้อยเพื่อเพิ่มคุณภาพ แล้วก็ Render เลยครับ Composite เพื่อปรับแต่งใน Shake (หรือ After Effect ก็ได้)


<<Back
|