Displacement Map
สร้างฉากใต้ทะเล โดยใช้ Displacement Map
Chamferbox
ขั้นตอนการสร้าง เตียง ผ้าคลุมเตียง หมอนใบนั้น
Compesite Map
ขั้นตอนการสร้างวัสดุ น้ำ Compesite Map

[Global Illumination in mental ray]
ช่วงปีสองปีที่ผ่านมานี้เรื่อง Global Illumination (GI) เนี่ยดังในบ้านเราพอดูทีเดียวส่วนหนึ่งก็มาจาก Final Render plugin ของ 3ds max ที่ทำ GI ได้เร็วแล้วก็มี Autodesk VIZ 4 ที่รวมเอาการคำนวณแบบ Radiosity ของ Lightscape เอาไว้ส่วน Mayaหลังจากที่พยายามfakeหรือพยายามทำแสงเลียนแบบ GI ด้วยวิธีการ ต่างๆนาๆมานาน ก็มี mental ray for Maya มาให้ใช้กัน

GI คืออะไรและทำงานอย่างไร ??
หลายคนก็รู้แล้ว หลายคนก็ยังคงงงๆกันอยู่ว่ามันคืออะไรกัน วัตถุในชีวิตจริงทุกอย่าง สามารถ สะท้อนแสงได้ หรือถ้าพูดให้ถูกคือ สามารถแผ่พลังงานที่ได้รับมาให้วัตถุที่อยู่ใกล้เคียงได้ วัตถุที่ไม่แผ่พลังงานเมื่อได้รับแล้ว มีอย่างเดียวคือวัตถุดำ หรือ black body ซึ่งเป็นวัตถุสมมติ


เอาล่ะเมื่อเรารู้แล้วว่าวัตถุทั้งหมดจะต้องสะท้อนแสง เราก็จะรู้ได้ทันทีเลยว่า การคำนวณแสงโดยทั่วไปของโปรแกรม3Dจะคำนวณแสงที่ไปตกกระทบที่วัตถุแรกเท่านั้น เช่น ถ้าเรามีห้องอยู่หนึ่งห้องแล้วใช้ spotlight ส่องลงพื้น โปรแกรม 3Dจะคำนวณเฉพาะแสงบนพื้น นอกนั้นมืดหมด ทั้งๆที่ความจริงทั่วห้องจะสว่าง เนื่อง จากมีการสะท้อนไปมาของแสง จากพื้นไปผนัง จากผนังไป เพดาน ทำนองนี้เป็นต้น การคำนวณแบบ GI จะ เข้ามาช่วยตรงนี้ คือคำนวณว่าแสงสะท้อนไปไหนบ้าง ทำให้ตรงไหนสว่างขึ้นบ้าง เราจะเรียกแสง ที่มาจาก แหล่งกำเนิดโดยตรงว่า Direct Light และแสงที่สะท้อนออกจาก Object ว่า Indirect Light

การคำนวณ GI แบ่งเป็น 2 ประเภทใหญ่ๆคือ แบบ Radiosity และ Photon mapping Lightscape เป็นตัวอย่างที่ดีของการคำนวณแบบ Radiosity ซึ่งตอนนี้ถูกผนวกเข้าไปเป็นส่วนหนึ่งของ Autodesk VIZ 4 และ 3ds max 5 แล้ว การคำนวณแบบนี้จะพยายามคำนวณให้ใก ้เคียงกับแสงจริงมากที่ สุด โดยจะทำการ subdivide หรือแบ่ง object ในฉากของเป็นส่วนย่อย เพื่อให้เกิด vertex กระจายอยู่ทั่ว ทั้งฉาก vertex เหล่านี้จะเป็นตัวเก็บค่าแสงที่ได้รับมา นั่นหมายความว่า ยิ่ง vertex เยอะมาก การคำนวณก็ จะกินเวลา มาก Radiosity จึงเหมาะกับ ฉากที่เป็นเหลี่ยมเช่นห้อง บ้าน เป็นต้น Photon mapping เป็นการคำนวณอีกแบบ ซึ่งไม่ใช้ vertex ในการเก็บข้อมูล แต่เก็บข้อมูลในรูปของ texture แทน โดยมี Photon shader เป็นตัวรับผิดชอบในการจัดการกับ map หลักการคือแสงแต่ละตัวจะ ยิง Photon ออกมา แล้ว Photon เหล่านี้จะเด้งไปมาในฉากเหมือนลูกบอล เมื่อเด้งไปชนอะไรก็ตามจะมีสี ติดอยู่ตรงนั้น

ทั้งสามภาพนี้แสดงให้เห็นว่า photon แต่ละอันจะมีขนาด เมื่อมีขนาดเล็ก เช่นภาพแรก เราก็จะเห็นได้ชัดเจน และเมื่อใหญ่ขึ้นเรื่อยๆ photon map ก็จะกลืนเข้าหากัน ทำให้ภาพดูเนียนขึ้น สำหรับ mental ray มีความสามารถอีกอย่างที่เรียกว่า Final Gather ซึ่งมีความสามารถในการเปล่งแสง ออกมาจาก object ทุกตัว แล้วเกลี่ยสีจนเนียนเรียบ เมื่อเราใช้ GI และ Final Gather คู่กันจะทำให้ ภาพออกมา เนียนมากๆ แต่ Final Gatherกินเวลาคำนวณพอดูเลยทีเดียว ลองมาทำกันจริงๆใน Maya กันเลยดีกว่าครับ ผมมีฉากง่ายๆที่เห็นข้างล่าง ใช้ lambert ทั้งหมด เปลี่ยนสี ให้ต่างกัน แล้วก็ใส่แสงลงไปสองดวง spotlight นะครับ

เมื่อลง mental ray for maya ไปเร็วจะเปลี่ยนตัว render ให้เป็น mental ray ได้โดยไปที่ render>>render using>>mental ray ถึงตอนนี้ให้คลิกที่ spotlight ทีละตัวนะครับ แล้วตั้งค่าตามข้างล่างนี้เลย

ส่วนที่สำคัญคือตั้ง Decay ให้เป็น Quadratic ซึ่งเป็น Decay ของแสงจริงตั้ง Intensity เยอะ เพื่อให้แสง แรงพอที่จะไปถึง object และเกิดเงาในที่นี้ก็ตั้งไว้ที่ 1000 มาดูส่วนของ mental ray บ้าง ติ๊ก Emit Photon ให้ยิง Photon ออกมา ค่า Energy สามค่านี้คือ RGB นั่นเอง เป็นค่าที่บอกว่าเมื่อแสงตกกระทบแล้วจะสะท้อนออกมาแรงแค่ไหน แล้วก็ติ๊ก Physical เพื่อให้ energy ลดลงเมื่อสะท้อนไปหลายที Global Illum Phtons ก็คือจำนวน Photon ที่จะปล่อยออกมา ปกติ ผมจะตั้งไว้ ไม่เกิน 10000 ถ้าจะลอง render ดูเร็วๆก็อาจจะตั้งไว้ซัก 1000 ก็ได้ครับ Area Light ทำให้เกิดเงาแบบ soft shadow ตั้งค่าถามที่ให้มาก้ OK แล้วครับ คือ sampling 3 3 ถ้า มากกว่านี้จะ render ช้ามากๆอาจจะลองตั้งให้น้อยกว่านี้ก็ได้ ตั้งค่าให้แสงทั้งสองดวง จะลองตั้งให้ต่างกันดูก็ได้ครับ ลองดูหลายๆแบบ จะทำให้รู้จักตัวแปลแต่ละตัวมาก ขึ้น ทีนี้มาถึง Render Global ของ mental ray บ้าง

ดูที่หัวข้อ Overrides แล้วคลิกให้ Global Illum Generating และ Global Illum Receiving เป็น On เพื่อให้ Object ในฉากทุกตัวสะท้อนและรับ Photon

ติ๊ก Global Illum ตั้ง Accuracy ไว้ที่ 100 ค่านี้คือค่าความแม่นยำในการยิง Photon ถ้าตั้งไว้มากเช่น 1000 ก็จะช้า ในตอนแรกยังไม่ต้องติ๊ก Final Gather ครับ render ดูแล้วตั้ง Global Illum Radius ให้ ใหญ่พอจนมองไม่เห็นเป็นรอยมากนัก เช่นตัวอย่างอันบนสุด ผมก็ตั้งไว้ที่ 3ถ้ามากกว่านี้จะเบรอเกินไป แต่ละ ฉากจะไม่เท่ากันครับ อันนี้ต้องลองปรับดู เมื่อได้ Global Illum Radius ที่พอใจแล้วก็ติ๊ก Final Gatherตอนแรกก็ตั้ง Final Gather Rays ไ ว้ซัก 50 ไม่ก็ 100 แล้วปรับ min, max Radius ให้เหมาะสม ถ้าค่า Radius มากไปก็จะเบรอเกินไปน้อยไปก็จะ เห็นเป็น รอยด่าง ต้องลองปรับให้ได้ที่ครับ ในที่นี้ผมก็ตั้งไว้ที่ 1 และ 2.5 แล้วก็ตั้ง Final Gather Rays ไว้ 250 เพื่อ render ครั้งสุดท้าย อันต้องระวังนิดนะครับ ตอนแรก Maya จะตั้งไว้ให้เรา 1000 ถ้าสั่ง render ไปเลย จะช้าเป็นเต่าเลย

สุดท้ายตรงนี้เป็นการตั้งคุณภาพของภาพโดยจะกำหนดจากตัวแปล min และ max samples โดยปกติจะตั้ง ไว้ที่ -1 และ 1 เพื่อให้ render เร็ว แต่ถ้าต้องการคุณภาพมากขึ้นก็ลองเพิ่มขึ้นเรื่อยๆ อันนี้ผมตั้งไว้ที่ 1 กับ 3 ก็ ok แล้วครับ ถ้ามีเวลา render ก็ลองตัวไว้ที่ 3 กับ 4 ก็ได้ แต่จะช้า อย่างมาก สั่ง render ออกมาก็ได้ออกมาแบบนี้

ภาพนี้ใช้เวลาประมาณ 15 นาที ก็ถือว่าไม่นานมากครับสำหรับคุณภาพระดับนี้ ทั้ง soft shadow และ GI

<<Back