finalRender

โดยปกติ เมื่อเราเรนเดอร์ภาพ 3 มิติด้วย Default Scanline Renderer ใน 3DSMAX แสงจาก ดวงไฟ ที่อยู่ในฉากจะตกกระทบโดยตรงบนวัตถุ วัตถุจะสว่างเฉพาะพื้นผิวของวัตถุที่ลำแสงตก กระทบเท่านั้น ส่วนด้านที่ไม่ถูกลำแสง จะปรากฏเป็นเงามืดสนิท เราเรียกการเรนเดอร์ลักษณะนี้ว่า Direct illumination การจัดดวงไฟสำหรับการเรนเดอร์แบบ Direct illumination นี้จะต้องมีดวงไฟ อยู่ในฉากอย่างน้อย 3 ดวงจึงจะสามารถทำให้ด้านที่มืดของวัตถุ ที่อยู่ในฉากสว่างขึ้นได้ เพราะแสงจะไม่มีการสะท้อนจากวัตถุหนึ่งไปยังอีกวัตถุหนึ่ง แต่ถ้าหากมีการ นำปลั๊กอิน finalRender เข้ามาใช้งานใน 3DSMAX 4 ดวงไฟประกอบฉาก เพียงดวงเดียว ก็จะสามารถทำให้วัตถุต่างๆ ที่อยู่ในฉาก สว่างขึ้นมาทั้งหมดได้ ซึ่งรวมไปถึงพื้นผิวของ วัตถุด้านที่อยู่ตรงข้ามกับ ดวงไฟด้วย เหตุที่เป็นเช่นนี้ ก็เพราะ finalRender (ปลั๊กอินแบบ Render effect) มีความสามารถในการ คำนวณ แสงแบบ Indirect illumination นั่นคือ เมื่อแสงจากดวงไฟ ตกกระทบบนพื้นผิวของวัตถุชิ้นหนึ่ง ลำแสง(Rays)จะสะท้อนไปยังวัตถุอีกชิ้นหนึ่ง และจะสะท้อนต่อไปยังวัตถุอื่นๆ อีก และยังอาจจะ กำหนดให้สะท้อน กลับไปยังด้านที่อยู่พื้นผิวของวัตถุ ด้านที่อยู่ตรงกันข้ามกับแหล่งกำเนิดแสง หรือสะท้อน ไปมาระหว่างวัตถุต่างๆ ที่อยู่ในฉาก ทำให้วัตถุสว่าง ขึ้นมาทุกส่วน ดังรูปเปรียบเทียบข้างล่างนี้

Click to enlarge!

ในฉากใช้ดวงไฟ Omni light ให้แสงสว่างเพียงดวงเดียว

Click to enlarge!

ภาพเรนเดอร์จาก Default Scanline Renderer

Click to enlarge!

ภาพเรนเดอร์จาก finalRender Omni Light Intensity =1,

Click to enlarge!

ภาพเรนเดอร์จาก finalRender Omni Light Intensity =0.5

Click to enlarge!

ภาพเรนเดอร์จาก finalRender Omni Light Intensity =0,

(RH Rays=16, Min Density=20, Max Density=200)

จากรูปข้างบนนี้ สังเกตุว่าผนังทางด้านขวาของรูปที่ 2 ถูกเงามืดบดบังจนผนังกลายเป็นสีดำ เนื่องมาจากแหล่งกำเนิดแสง ซึ่งใช้ Omni Light จำลองเป็นแสง จากดวงอาทิตย์ อยู่ด้านหลังของผนัง จึงเกิดเงา มืดสนิท ทอดจาก ขอบผนังลงไปที่พื้น แสงจากดวงไฟจึงไม่สามารถส่องไปยังผนังด้านในได้ ทำให้เรามอง ไม่เห็นอิฐ ที่นำมาก่อเป็นผนัง แต่ถ้าเราสังเกตุผนังด้านขวาของรูปที่ 3, 4, และ 5 เราจะเห็นว่า มีแสงที่มี ความเข้ม ไม่มากนักตกกระทบไป ยังผนังซึ่งอยู่ ตรงข้ามกับแหล่งกำเนิดแสง ทำให้เราพอที่จะมองเห็นก้อนอิฐของผนังนั้นได้ อนึ่ง การสว่างขึ้นของเงามืด ของผนังทางด้าน ขวาเกิดขึ้นจาก Indirect illumination ของลำแสง(Rays)ที่ตกกระทบไปยังพื้น สะท้อนไปยังลูกแก้ว แล้วสะท้อนต่อไปที่ผนัง และยังมี ลำแสงที่ ตกกระทบไป ยังลูกแก้วสะท้อน ไปยังพื้นแล้วสะท้อนกลับไปยังผนังทำให้ผนังสว่าง นอกจากนี้ลำแสงยังสะท้อนจากผนังด้านหลังสะท้อนไปยังลูกแก้ว แล้วสะท้อนกลับไป ที่ผนังอีกครั้งหนึ่ง จึงทำให้ผนังด้านขวาสว่างขึ้น โดยไม่จำเป็นต้องสร้างดวงไฟขึ้นมาเพื่อส่องแสงไปยังผนังโดยตรง ทำให้ภาพที่เรนเดอร์ด้วย finalRender ดูนุ่มนวลและ สมจริงมากกว่า เมื่อเปรียบเทียบกับการเรนเดอร์ด้วย Default Scanline Renderer ธรรมดาของ 3DSMAX

Click to enlarge!

3D Model ที่สร้างจาก AutoCAD นำเข้าใน 3DSMAX ภายในฉากใช้ดวงไฟ Omni Light ดวงเดียว

Click to enlarge!

ภาพเรนเดอร์ที่ได้จาก Default Scanline Renderer

Click to enlarge!

ภาพเรนเดอร์ที่ได้จาก finalRender

หลักการนำโมเดลจาก AutoCAD 2002 หรือ ADT 3.3 เข้าไปใช้ใน 3DSMAX 4.2

หากนำโมเดลจาก AutoCAD เข้ามาใช้งานใน 3DSMAX โดยเลือกใช้คำสั่ง File/Import แล้วเลือกฟอร์แมต .dwg จะต้องมีการกำหนดค่า พารามิเตอร์ ที่เหมาะสม มิฉะนั้น โมเดลที่นำเข้าไปใน 3DSMAX อาจจะมีปัญหาซึ่งจะต้องแก้ไขเสียก่อน จึงจะนำโมเดลไปเรนเดอร์ได้ ปัญหาที่เกิดขึ้นมีอยู่ 4 ประการคือ

  1. การหันเหของ Face normal ผิดทิศทาง ทำให้ดูเหมือนว่า Face ของโมเดลนั้นหายไป ปรากฏเป็นรูหรือเป็นช่องโหว่รูปสามเหลี่ยม
  2. Face ถูกสร้างขึ้นมาซ้อน Face เดิม ทำให้พื้นผิวบางส่วนของวัตถุ ปรากฏเป็นสามเหลี่ยมสีดำ
  3. ความหนาแน่นของผิวหน้าไม่เพียงพอทำให้ ส่วนโค้งของวัตถุกลายเป็นสันเหลี่ยม ดูไม่โค้งแบบราบเรียบ
  4. หน่วยวัดของโมเดลใน 3DSMAX ไม่ตรงกับหน่วยวัดของโมเดลต้นฉบับใน AutoCAD

ปัญหาทั้ง 4 ข้อข้างบนนี้เคยทำให้หลายท่านล้มเลิกความต้องการที่จะนำโมเดลจาก AutoCAD ไปใช้ใน 3DSMAX ไปแล้ว เนื่องจากนำโมเดล เข้าไปใน 3DSMAX แล้วใช้งานไม่ได้ จึงเลิกล้มความตั้งใจ แต่อันที่จริงนั้น ปัญหามีอยู่นิดเดียวเท่านั้น อยู่ตรงส่วนของการกำหนดพารามิเตอร์ของคำสั่ง File/Import ใน 3DSMAX เท่านั้น พารามิเตอร์ ที่โปรแกรมกำหนดมาให้นั้น ไม่สามารถใช้งานได้ เราจะต้องปรับเปลี่ยนใหม่เสียก่อน โดยมีขั้นตอนดังต่อไปนี้

  1. ใน AutoCAD 2000-2 ใช้คำสั่ง File/Save บันทึกโมเดล 3 มิติลงในไฟล์ .dwg (ไม่จำเป็นต้อง กำหนดความ หนาแน่นของผิวหน้าด้วย FACETRES)
  2. เข้า 3DSMAX แล้วกำหนดหน่วยวัดให้ตรงกับหน่วยวัดที่ใช้สร้างโมเดลใน AutoCAD โดยในใช้คำสั่ง Customize/Preferences... ในแถบคำสั่ง General กำหนดหน่วยวัด 1 Unit = 1 เมตรหรือมิลลิเมตรหรือ หน่วยวัดใดๆ ที่เราใช้ขึ้นโมเดลใน AutoCAD แล้วออกจากไดอะล็อค ตัวอย่างเช่น ถ้าเราสร้างโมเดลใน AutoCAD มีขนาด = 10 หน่วยและต้องการให้มีหน่วยเป็นเมตรหรือมีขนาด 10 เมตรใน 3DSMAX ให้กำหนด 1 Unit = 1.0 Meters ถ้าต้องการให้โมเดลเดียวกันมีหน่วยเป็นมิลลิเมตรหรือมีขนาด 10 มิลลิเมตร ใน 3DSMAX ให้กำหนด 1 Unit = 1.0 Millimeters เป็นต้น (คำสั่ง Customize/Unit Setup... เป็น อีกคำสั่งหนึ่ง ใช้สำหรับกำหนดหน่วยวัด ที่ปรากฏบนบรรทัดแสดงสถานะของ 3DSMAX เท่านั้น ไม่เกี่ยวข้อง กับการ แปลงหน่วย)
  3. ใช้คำสั่ง File/Import แล้วเลือกฟอร์แมต .dwg จะปรากฏไดอะล็อค DWG Import ให้คลิกบนปุ่ม OK จะ ปรากฏ ไดอะล็อค Import AutoCAD DWG File ใน Geometry Options ให้ปลด เครื่องหมายถูก หน้าเช็คบอกซ์ Weld, Unify normals, Cap closed entities และให้แน่ใจว่าปรากฏ เครื่องหมาย ถูกหน้า เช็คบอกซ์ Auto-smooth ส่วนเช็คบอกซ์อื่นๆ จะตั้งค่าอย่างไรก็ได้ เพราะไม่มีผลต่อการผิดปกติกับโมเดล (ข้อนี้มีความสำคัญต่อ ความถูกต้องของโมเดล 3 มิติที่นำเข้ามาใน 3DSMAX เป็นอย่างมาก หากทำตาม ข้อนี้ถูกต้อง เราจะสามารถใช้โมเดลใน 3DSMAX ได้ทันที โดยไม่ต้องแก้ไขปรับแต่ง โมเดล 3 มิติแม้ แต่น้อย)
  4. ปรับความความหนาแน่นของโครงลวด 3 มิติ โดยตั้งค่าความละเอียดใน ACIS Options ค่าที่นิยมใช้อยู่ในช่วง 0.01 - 20 หากตั้งค่าน้อยจะได้โมเดล ที่มีความละเอียดสูง แต่ใช้เวลาในการเรนเดอร์นาน หากตั้งค่ามากจะ ได้โมเดล ที่มีความละเอียดต่ำ แต่ใช้เวลาในการเรนเดอร์น้อย ทั้งนี้ขึ้นอยู่กับ ผู้ใช้โปรแกรมต้องทำการตรวจสอบ วัตถุที่เป็นส่วนโค้งมี ความราบเรียบพอหรือไม่ หากไม่พอก็ไม่ลดค่า ACIS Options ลง แต่ถ้าส่วนโค้งมีจำนวน เซกเมนต์ ละเอียดเกินไป ก็จะทำให้เปลืองหน่วยความจำ และเสียเวลาในการเรนเดอร์โดยไม่จำเป็น

หมายเหตุ หากต้องการนำโมเดลจาก Architectural Desktop 3.3 และ Mechanical Desktop 6 เข้าไปใช้งานใน 3DSMAX 4.2 ผ่านฟอร์แมต .dwg เมื่ออยู่ใน Architectural Desktop 3.3 หรือใน Mechanical Desktop 6 ให้ใช้คำสั่ง EXPLODE เพื่อระเบิด Objects ทั้งหมด ให้กลายเป็นโซลิด ธรรมดา เสียก่อน (ต้องแน่ใจว่าใช้คำสั่ง EXPLODE เพียง 1 ครั้งเท่านั้น) แล้วจึง Save ในไฟล์ฟอร์แมต .dwg แต่ตั้งชื่อใหม่ (ข้อควรระวัง อย่า Save ทับชื่อเดิม เพราะจะทำให้เราไม่สามารถกลับไปใช้พารามิเตอร์ในการแก้ไข Objects ต่างๆ ได้) เมื่อ Objects ทั้งหมดถูกแปลงให้เป็น Solid ของ AutoCAD แล้ว เราก็สามารถใช้ขั้นตอนข้างบนนี้ในการ นำโมเดลเข้าไปยัง 3DSMAX ได้อย่างถูกต้อง

หลักการใช้ finalRender

หลังจากที่เราได้ติดตั้งโปรแกรมเข้ากับ 3DSMAX และ Authorize เรียบร้อยแล้ว สิ่งแรกที่เราต้องทำ(ครั้งแรกเท่านั้น)คือ เพิ่มคำสั่ง finalRender Global เข้าไปใน Quads menu โดยใช้คำสั่ง Customize/Customize User Interface -> Quads -> คลิกแถบรายการ Group -> แล้วเลือก finalRender -> คลิกและลาก finalRender Global จากหน้าต่าง Action ไปปล่อยลง ณ ตำแหน่งใดๆ บนเมนู TRANSFORM แล้วออกจากไดอะล็อค Quad menu จะมีคำสั่ง finalRender Global เพิ่มขึ้นดังรูป ต่อไปในการเรนเดอร์แบบ Global illumination ด้วย finalRender เราจะต้องเริ่มทำตามลำดับโดยมีขั้นตอน ดังต่อไปนี้
  1. กำหนดโหมด Global illumination ให้กับวัตถุทุกชิ้นที่ต้องการให้มีการรับแสงสะท้อนจากวัตถุอื่น โดยเลือก Object ทั้งหมด แล้วคลิกขวาบนวัตถุที่ถูกเลือกทั้งหมด จะปรากฏ Quad menu แล้วเลือก Properties จะปรากฏไดอะล็อค Object Properties ในฟิลด์ Mental ray Rendering Control คลิกให้ปรากฏเครื่องหมายถูกหน้าเช็คบอกซ์ Generate Global Illumination เพื่อทำให้วัตถุทั้งหมดสามารถสะท้อนแสงแบบ Global illumination ไปยังวัตถุอื่นๆ
  1. เข้าสู่หน้าต่าง Material Editor แล้วกำหนด(Assign) Materials ให้กับวัตถุทั้งหมด เราสามารถใช้ได้ทั้ง Standard Material ที่มากับ 3DSMAX หรือใช้ finalRender Material ได้ตามต้องการ แต่จะต้องใช้ Material อย่างใด อย่างหนึ่ง ถ้าเราไม่ได้กำหนด Material ให้กับวัตถุใด วัตถุนั้นจะปรากฏเป็น สีดำมืดสนิท เพราะวัตถุจะไม่รับแสง ถ้าเราเลือกใช้ finalRender Material เราจะต้องคลิกให้ ปรากฏ เครื่องหมาย ถูกหน้าเช็คบอกซ์ Receive Global Illum. เพื่อเปิดโหมด การสะท้อนแสง & Global-Illumination ซึ่งอยู่ในโซน Caustics & Global-Illumination ด้วย ข้อดีของการใช้ finalRender Material คือเราสามารถเข้าไป ควบคุมการความเข้มข้นของการรับแสงและ การสะท้อนแสง โดยกำหนด ค่าได้ใน Recv. multiplier และ Send multiplier ดังนั้น เราจะสามารถกำหนดให้ Material รับแสงและ สะท้อนแสง แตกต่างกับตามประเภทของ วัสดุที่นำมากำหนดให้แก่วัตถุได้ Color bleeding มากหรือน้อย เกิดจากการกำหนดค่า Recv. multiplier และ Send multiplier มากหรือน้อย เช่นเดียวกัน
  1. สร้างดวงไฟ Omni light หรือ Spot light หรือ Direct light ประกอบฉาก แต่จะต้องมีดวงไฟอยู่ในฉากอย่างน้อย 1 ดวง ถ้าเป็นฉากกลางวัน ใช้ดวงไฟ Sun light หรือ Direct light หรือ Omni light แทนแสงจากดวงอาทิตย์ได้ ควรตั้งค่าความเข้มของแสงให้กับดวงไฟให้น้อยกว่าปกติ เพราะว่าวัตถุต่างๆ ที่อยู่ในฉากจะสว่างขึ้นได้ เนื่องจากการสะท้อนแสงระหว่างวัตถุต่างๆ ที่อยู่ในฉาก ดังนั้น ดวงไฟเพียงดวงเดียวก็สามารถทำให้ฉากสว่างได้
  1. กำหนดพารามิเตอร์ของ finalRender โดยคลิกขวาในวิวพอร์ทใดๆ แล้วเลือก finalRender Global จาก Quad menu จะปรากฏไดอะล็อค finalRender Parameters ดังรูป กำหนดจำนวนครั้งของการสะท้อนแสงสูงสุด ซึ่งแสงจะ ตกกระทบบนผิววัตถุและสะท้อนไปวัตถุอื่นๆ โดยกำหนดค่า Diffuse Depth =10 คลิกให้ปรากฏเครื่องหมายถูกหน้า Enable Global illumination เพื่อเปิดโหมด Global illumination และคลิกให้ปรากฏเครื่องหมายถูกหน้า Show Samples เพื่อเปิดโหมดแสดงจุด Sample points (สีเขียว) บนภาพเรนเดอร์ Sample points นี้จะเป็นตัวบอกให้เรา ทราบว่าการกำหนดค่า Min. Density และ Max. Density นั้นเหมาะสมหรือไม่ การกำหนดพารามิเตอร์ที่มีความสำคัญ ในการกำหนด คุณภาพของ Global illumination ของ finalRender มีอยู่ 3 ตัวคือ ค่า RH-Rays, Min. Density และ Max. Density ในขั้นต้นของการ เรนเดอร์ ทดสอบ เราควร กำหนด RH-Rays =16 ซึ่งจะได้ภาพที่มีคุณภาพต่ำ แต่จะใช้เวลา ในการ เรนเดอร์น้อยมาก และยังใช้สำหรับ การ ตรวจสอบการสะท้อนของแสงได้ดี , Min. Density = 20, Max. Density = 200 นอกนั้นใช้ค่าที่โปรแกรมกำหนดมาให้ Min. Density ใช้สำหรับกำหนดความ หนาแน่นต่ำสุดของจุด Sample บนวัตถุต่างๆ ที่อยู่ในฉาก Max. Density ใช้สำหรับ กำหนดความ หนาแน่นสูงสุดของจุด Sample บนวัตถุต่างๆ ที่อยู่ในฉาก (เราควร กำหนดให้ค่า Max. Density มากกว่า Min. Density ประมาณ 10 เท่าเสมอ) แล้วจึงใช้คำสั่ง Render เพื่อตรวจสอบการ สะท้อนแสงภายในฉาก
Min Density=5, Max Density=20 จุด Sample ที่มีขนาดและ ความหนาแน่นไม่เหมาะสม
Min Density=20, Max Density=200 จุด Sample ที่มีขนาดและ ความหนาแน่นเหมาะสม

Min Density=20, Max Density=200 เรนเดอร์แบบไม่แสดงจุด Sample points

จะปรากฏดังรูปบนกลาง สังเกตุว่า จุด Sample points ที่ปรากฏจะ เป็นจุดมี ขนาดเล็กๆ และมีจำนวนความหนาแน่นสูง (Max. Density) ในส่วนที่อยู่ ตรงมุมและขอบของวัตถุซึ่งแสงมีความแปรผันสูง และจะมี จำนวน ความหนา แน่นต่ำ (Min. Density) ตรงส่วนของ วัตถุ ที่แสงและเงา มีความแปรผันต่ำ หากจุด Sample ที่ปรากฏมีขนาดใหญ่ และมีระยะห่างกันจนเกิน ไปดังรูปบนซ้าย เราจะต้องปรับเพิ่มค่าความ หนาแน่น ของ Min. Density และ Max. Density แล้ว เรนเดอร์ใหม่ จนปรากฏจุด Sample ที่เหมาะสมแล้ว จึงปลเครื่องหมายถูกออกจาก Show Samples แล้วจึงเพิ่มค่า RH-Rays เป็น 32, 64, 128, 256, 512 หรือค่าใดๆ ที่เหมาะสม เพื่อให้การคำนวณแสง Global illumination มีความ ละเอียด และ คุณภาพสูงขึ้น แล้วเรนเดอร์ใหม่ จะปรากฏดังรูปบนขวา อย่างไรก็ตาม หากเพิ่มค่า RH-Rays มีขึ้นการ คำนวณ ก็จะใช้ เวลานานมากขึ้นเป็น ทวีคูณด้วย

หมายเหตุ หากเราได้ปรับค่า Min. และ Max. Density แต่เรนเดอร์ใหม่แล้ว ภาพที่ได้ไม่มีการเปลี่ยนแปลง ให้คลิกบนปุ่ม Reset Solution เพื่อคำนวณโซลูชั่นใหม่ หรือปลดเครื่องหมายถูก ออกจาก Reuse Solution เพื่อไม่ให้มีการใช้การคำนวณ จากครั้งก่อนมาใช้งานใหม่ Reuse Solution มีประโยชน์ในการสร้างภาพเคลื่อนไหว เพราะโปรแกรมจะคำนวณโซลูชั่น ใน เฟรมแรก เท่านั้น

  1. กำหนด Background ให้เป็นสีฟ้าอ่อนหรือสีเทาอ่อนก็ได้ เพื่อจำลองแสงจากท้องฟ้า (Sky light) โดยใช้คำสั่ง Rendering/Environment แล้วคลิกบนตลับสี Color ในโซน Background โดยกำหนด Red ประมาณ 165, Green ประมาณ 158, Blue ประมาณ 255 แล้วแต่ว่าต้องการแสง จากท้องฟ้ามาก หรือน้อย ถ้าต้องการแสงมากให้ใช้สีฟ้าอ่อน ถ้าต้องการแสงน้อยให้ใช้สีฟ้าแก่

    หมายเหตุ ไม่ควรใช้ Background เป็นสีดำ หากต้องการสร้างภาพที่อยู่ในช่วงเวลากลางวัน เพราะสีจาก Background จะมีผลต่อแสงสะท้อน Global illumination มากกว่าแสงจากดวงไฟ

หมายเหตุ หากต้องการสร้างฉากในช่วงเย็นซึ่งไม่มีแสงแดด เราจะต้องสร้างดวงไฟขึ้นมา 1 ดวง แต่จะต้องปิด(Off)ดวงไฟนั้น แสงจากท้องฟ้าจึงจะมีผลและปรากฏเด่นชัด

6. เริ่มเรนเดอร์เพื่อสร้างภาพ 3 มิติ จะได้ภาพเรนเดอร์ดังรูปข้างล่างนี้

ภาพทั้งสามนี้ใช้แสงจากดวงไฟ Omni light ประกอบฉากเพียงดวงเดียว เฉพาะภาพด้านล่างมีดวงไฟ Omni light เช่นเดียวกัน แต่ดวงไฟดังกล่าว อยู่ในสถานะปิด(Off) แสงที่ส่องสว่างภายในฉาก ที่ได้มาจาก Back ground สีฟ้าอ่อน ซึ่งทำหน้าที่ เป็นแสงจากท้องฟ้า (Sky light)
1