[Knowing Ambient Occlusion]
เมื่อแสงตกกระทบ Object ใดๆ จะมีการเข้าลูปเพื่อปล่อย vector ที่ใช้ในการทดสอบการชนออกมา จำนวนมาก หรือน้อยก็คือจำนวน sample ที่เราต้องตั้งค่า จุดที่แสงตกกระทบจะสว่างมากหรือน้อยขึ้นกับ สัดส่วนของ vector ที่ปล่อยออกไปแล้วชนกับ Object ใดๆ ต่อ จำนวนของ vector ที่ปล่อยออกไปทั้งหมด ถ้าไม่มีการชนเลย จุดนั้นก็จะสว่างเต็มที่แต่ถ้าชนหมดทุกตัว จุดนั้นก็จะเป็นสีดำ ดังนั้นคุณภาพของภาพที่ได ้ขึ้นอยู่กับจำนวน sample นั่นเอง ยิ่งมากก็จะยิ่ง ให้ภาพคุณภาพสูง แต่ก็หมายถึงเวลาในการคำนวน ต้องใช้มากขึ้นด้วย
เอาล่ะ เรามีObject เป็นหุ่นยนต์ประหลาดหนึ่งตัว อยากลองทำ ambient Occlusion โดยใช Dome Lights เมื่อมีModel แล้วก็เริ่มสร้าง Shader แบบ Lambert สีขาวใส่ลงไปบน Object ทุกอย่างในฉาก
ตั้งค่า Colorให้เป็นสีขาว และ Diffuse ให้เป็น 1.0 นอกนั้นไม่ต้องครับ
Assign Shader ลงไปก็จะได้หุ่นยนต์ตัวขาวๆออกมา ทีนี้ก็เริ่มสร้างแสงเลยครับ
อันนี้ผมสร้างขึ้นมา 32 ดวงโดยใช MEL ที่ชื่อ prerenderperamid แต่ก็สร้างเองได้ครับ ใช duplicate ไปเรื่อยๆ จำนวนแสงมากก ็render ช้าครับ
ออกมาแบบนี้
ออกจะมืดเกินไปหน่อย ลองปรับแสงใหม่ครับ โดยเพิ่ม Intensity เข้าไปเป็น 0.075
render ออกมาใหม่ก็สว่างขึ้นครับ
สังเกตจะเห็นเป็นรอยจํ้าๆบนพื้น เป็นรอยซึ่งเกิดจากการตัดกันไปมาของ Depth Map Shadow นั่นเองครับคุณภาพที่ออกมาก็ถือว่าใช้ได้ในระดับหนึ่ง ซึ่งถ้า เทียบก็เวลาที่ใช้ในการ render ซึ่งเร็วมาก (ไม่ถึงนาที) ก็นับว่าคุ้มครับ
ได้แล้วก ็double click ขึ้นมาตั้งค่าให Surface Color เป็นสีขาว Ambient Strength เป็น 0 Specular Strength เป็น 0
สกอร์ลงมาด้านล่างจะเห็นคำว่า Indirect Diffuse ครับคลิกค้างที่กล่องเหลือง แล้วเลือก Connection
จากนั้นคลิกที่ปุ่มด้านขวาและเลือก more>>IndirectIllum
จะได้แบบนี้ออกมาครับ วิธีการนี้เป็นวิธีการเบื้องต้นในการ เชื่อมต่อ Node ต่างๆเข้าด้วยกัน คล้ายๆกับ HyperShade ของ Maya นั่นเอง ทีนี้คลิกปุ่มที่ชื่อ IndirectIllum_0
เราจะเข้ามาที่หน้าจอของ IndirectIllum_0 ซึ่งมีการตั้งค่าหลายอย่างเกี่ยวกับการทำ Indirect Illumination เอาติ๊กที่ช่อง Color Bleeding ออกครับ ในที่นี้เราไม่ต้องใช้ความสามารถในการทำ Color Bleeding หรือการถ่ายทอดสีไปให object ใกล้เคียง ซึ่งจะทำให render เร็วขึ้นด้วย
จากนั้นตั้งค่า Samples ให้เป็น 256 ตรงนี้ต้องระวังนิดนึงครับ ยิ่งเยอะก็ยิ่งนานนน มาก แต่ก็จะได้คุณภาพดี
เรียบร้อยก็ทำการ attach ลงไป Object ที่ต้องการ โดย Select Object ทั้งหมดแล้วคลิกขวาที่SwissArmy ใน Slim แล้วเลือก Attach แค่นี้ก็เรียบร้อย
มาดูRender Global ของ PRMan กันบ้างว่ามีอะไรให้ตั้งค่าบ้างที่แน่ๆ ในหัวข้อ Rays ต้องติ๊ก Enable Ray Tracing เพื่อสั่งใน PRMan คำนวณ Raytrace ด้วย
ดูที่หัวข้อ Irradiance Cache ตั้งค่า Max Error และ Max Pixel Distance เป็น 0.1 ค่านี้ยิ่งน้อยยิ่งทำให้การคำนวน Indirect Illumination คุณภาพสูง ครับ แต่ก็จะ render นานมาก ถ้าค่าเป็น 0 ก็จะให้คุณภาพสูงสุด
เปิดไปที่หัวข้อ Reyes ครับตรงนี้เราจะตั้งค่า Shading Rate ซึ่งเป็นคุณภาพโดยรวมของ PRMan ค่าที่ให้คุณภาพสูง จะเริ่มจาก 1 ลงมาเรื่อยๆ ยิ่งน้อยยื่ง คุณภาพดีในที่นี้ก็ตั้งเอาไว 0.2 เป็นโดยทั่วไปครับ
เอาล่ะจัดแจงปรับมุมกล้องใหม่นิดหน่อย สั่ง render แล้วไปนอนรอได้เลย
เนื่องจาก render นานนนมากๆ ผมเลยลด sample เหลือ 128 และ ตั้งค่า Max Error และ Max Pixel Distance เป็น 0.2 ก็เลยออกมาเป็นจํ้าๆเยอะแยะ อย่างที่เห็นครับ
เสร็จแล้วก ็render เพิ่มอีกซัก 2 pass มีflat color pass และ lighting pass ง่ายๆพอให้เห็นภาพครับ
นำมาซ้อนกันไปมาปรับสีนิดหน่อยใน Shake ก็จะได้ภาพด้านล่างออกมา...
ต่ออีกหน่อย...
render hilight pass ออกมาอีกอันครับ แล้วก็ไปเพิ่มใน shake ตามเคย
คราวนี้ใช IAdd และปรับความสว่างด้วย ColorCorrect
ได hilight หรือ specular ติดมาด้วย ถ้าอยากให้มีรายละเอียดมากกว่านี้ก็จะมีอีกหลาย pass ครับ ภาพนี้เป็นตัวอย่างง่ายๆ กับการใช้แสงเพียงดวงเดียว |
|