Deep Compositing: เมื่อไหร่ควรหยิบมาใช้ และวิธีไม่ให้มันทำลายเครื่องคุณ

Deep Compositing เป็นหนึ่งในเทคนิคประเภทที่ตอนแรกคุณจะรู้สึกว่า "โอยย จะยากและซับซ้อนไปไหน เกินความจำเป็นจัด ๆ!" จนกระทั่งเจอช็อตประเภทปราบเซียนตรงหน้า แล้วพบว่ามันเป็นทางออกเดียวของชีวิตที่จะช่วยชีวิตเราไว้ได้ครับ
แต่ปัญหาโลกแตกคือ ข้อมูล Deep นั้นเป็นอะไรที่ "แพง" มาก ขนาดไฟล์บวมเบ่งประหนึ่งบอลลูน แถมประมวลผลที Nuke ก็หน่วงจนแทบจะหยุดหายใจ (หมุนล้อรอเรนเดอร์กันจนลืม 555)
ถ้าเราจัดการไม่ระวังแล้วปล่อยให้ท่อ Deep ลากยาวไปตลอดทั่ง Node Tree เครื่องคอมพิวเตอร์ของคุณอาจจะประท้วงด้วยการดับไปดื้อ ๆ ได้เลย
วันนี้ในฐานะคนที่ผ่านความเจ็บปวดจากการคอมพ์ไฟล์ Deep จนเครื่องค้างมานับครั้งไม่ถ้วน ผมอยากมาแชร์วิธีคิดง่าย ๆ ว่าเมื่อไหร่ที่เราควรดึงสกิลนี้มาใช้ และวิธีจัดระเบียบมันอย่างไรไม่ให้เครื่องคอมพิวเตอร์สุดรักของคุณต้องร้องขอชีวิตครับ
ข้อมูล Deep คืออะไรกันแน่? (แบบไม่ต้องเปิดตำราคุย)
ภาพ 2D ทั่วไปที่เราคอมพ์กันปกติ จะเก็บค่าสีและ Alpha ไว้แค่ 1 ชุดต่อ 1 พิกเซลเท่านั้นครับ แต่สำหรับภาพ Deep มันจะทำการเก็บ Sample ข้อมูลไว้หลายชั้นใน 1 พิกเซล โดยแต่ละชั้นจะบอกระยะความลึกที่แตกต่างกัน
อธิบายง่าย ๆ คือ ใน 1 พิกเซลเดียวกัน ภาพแบบ Deep จะรู้หมดเลยครับว่า ณ ระยะ 40 เมตรตรงนั้นมีหมอกบาง ๆ อยู่ ถัดไปข้างหลังที่ 200 เมตรมีตึกตั้งอยู่ และที่ระยะอนันต์คือท้องฟ้า ทำให้เราสามารถนำ Element อื่น ๆ ไปสอดแทรกคอมพ์ระหว่างสิ่งเหล่านั้นได้โดยให้ค่าความโปร่งใส (Transparency) ที่ถูกต้องทางคณิตศาสตร์และแสงเงาเป๊ะ ๆ
สิ่งที่ช่วยชีวิตเราได้จริง ๆ ในช็อตหน้างานคือการทำ Volumetric Holdout ครับ เช่น เวลาที่ต้องทำหมอก CG ให้ลอยโอบล้อมรอบสิ่งปลูกสร้างจริง หรือพวกเอฟเฟกต์ Particle ฝุ่นละอองที่ต้องตัดผ่านชิ้นส่วน Geometry ต่าง ๆ Deep Compositing จะช่วยให้เราได้ผลลัพธ์ที่เนียนตาในทันทีโดยไม่ต้องมานั่งแยก Matte หรือทำ Roto ขอบสิ่งของเหล่านั้นจนตาแฉะเลยครับ
FIG_01: แผนผังอธิบายหลักการของระบบ Deep Data — แสดงการที่แสงวิเคราะห์ผ่านละอองหมอกหรือวัตถุโปร่งใส ทำให้ 1 พิกเซลสามารถเก็บค่า Sample ได้หลากหลายค่าตามระยะความลึกที่แม่นยำทางคณิตศาสตร์
กฎเหล็กการ Optimize ที่ช่วยเซฟชีวิต (และเซฟเครื่องคอมพ์)
1. Flatten กลับเป็น 2D ให้เร็วที่สุด (สำคัญที่สุด!) ข้อมูลแบบ Deep ควรโลดแล่นอยู่ใน Node Tree ของเราเฉพาะในช่วงเวลาที่ต้องทำการคำนวณระยะลึกเท่านั้นครับ ทันทีที่คุณทำ Deep Merge หรือทำ Holdout สอดประสาน Element ต่าง ๆ เสร็จแล้ว ให้รีบใช้ node DeepToImage แปลงมันกลับมาเป็นภาพ 2D แบน ๆ ทันที! การปล่อยให้ข้อมูล Deep ไหลลงไปต่อด้านล่างเรื่อย ๆ โดยไม่จำเป็น เป็นการสร้างภาระงานที่หนักหน่วงเกินไปครับ
2. ใช้ DeepCrop เสมอ อย่าลืมจำกัดพื้นที่ทำงานด้วย DeepCrop เสมอเพื่อบีบ Bounding Box ให้อยู่เฉพาะบริเวณที่มี Depth Interaction เกิดขึ้นจริง ๆ สมมุติว่างานหมอกหนา ๆ ของคุณอยู่แค่ครึ่งซ้ายของจอ ก็ไม่มีความจำเป็นใด ๆ ที่จะต้องสั่งให้เครื่องรันคำนวณ Deep ทั้งเฟรมครับ แค่นิสัยนี้ข้อเดียวก็ช่วยประหยัดเวลาเรนเดอร์ไปได้มหาศาลแล้วครับ
3. Merge เฉพาะเท่าที่จำเป็น การใช้ Deep Merge มีต้นทุนการประมวลผลที่ทบทวีคูณขึ้นเรื่อย ๆ ครับ หาก Element ไหนไม่ได้จำเป็นต้องใช้มิติความลึกเพื่อคำนวณการซ้อนทับกับภาพอื่น ให้เก็บ Element นั้นไว้เป็น 2D แบน ๆ แล้วค่อยเอามา Merge รวมกันหลังจากที่เราแปลง Deep หลักกลับเป็น 2D แล้วจะดีกว่าครับ
4. เช็กปริมาณ Sample Count งาน Volumetric ที่เรนเดอร์มาละเอียดจัด ๆ สามารถสร้าง Sample ได้เป็นพัน ๆ ตัวต่อพิกเซล วิธีตรวจสอบคือลองดู Sample Histogram ใน Properties ของ Deep Node ใน Nuke ดูครับ หากพบว่าตัวเลขสูงมากแบบเกินเบอร์ ให้รีบเดินไปสะกิดทีม Lighting ทันทีเพื่อขอปรับลดความละเอียดลง ซึ่งส่วนใหญ่สามารถลดลงได้โดยที่สายตาผู้กำกับมองไม่เห็นความต่างเลยครับ
เมื่อไหร่ที่ควร "ข้าม" เทคนิคนี้ไปเลย?
ถึงมันจะฟังดูดี แต่ Deep Compositing ไม่ใช่เครื่องมือสำหรับทุกช็อตครับ งาน Greenscreen ทั่วไป การซ้อนภาพ CG หลาย ๆ Layer ที่ไม่ได้มีหมอก บรรยากาศ หรืออนุภาคซับซ้อนลอยพาดผ่าน หรือช็อตที่เลเยอร์แต่ละชั้นแยกจากกันชัดเจนในระยะลึก งานพวกนี้ทำใน 2D แบน ๆ ปกติจะเสร็จเร็วกว่าและเบาสบายกว่าเยอะครับ
คำถามง่าย ๆ ที่เราต้องถามตัวเองก่อนกดดึงข้อมูล Deep มาใช้คือ “ช็อตนี้มีชิ้นงานที่ต้องคำนวณระยะลึกระหว่างกันจริง ๆ ใช่ไหม?” ถ้าคำตอบคือไม่... ให้ข้ามมันไปได้เลยครับ อย่าหาเหาใส่เครื่องคอมพิวเตอร์ของคุณเปล่า ๆ
บทสรุปจากคนเคยเจ็บ
หากเลือกใช้ในจังหวะที่ถูกต้องและมีวินัย Workflow แบบ Deep จะช่วยประหยัดเวลานั่งทำ Roto และเจาะ Matte ให้เราได้มหาศาลประหนึ่งปาฏิหาริย์ แต่หากหยิบมาใช้แบบตามใจฉัน หรือลากสายทิ้งไว้ทั่วแผ่นบอร์ด มันจะกลายเป็นปีศาจที่กลับมาทำร้ายเครื่องคอมพ์ของคุณให้ค้างคาตา
ความโปรคือการรู้ว่าเมื่อไหร่ควรเปิดโหมด Deep... และเมื่อไหร่ควร Flatten มันกลับมาเป็น 2D แล้วไปต่อครับ!