หน้าแรก · Lab · Case Files: แก้ปัญหา comp จากงานจริง

CF8 เคส 8: CG คมกว่า plate

หาผู้ร้ายจากสามผู้ต้องสงสัย

Case Files: แก้ปัญหา comp จากงานจริง · ~5 นาที · ฟรี

1 อธิบาย

อาการ: รอบช่องตาเรืองแสงของหุ่นมีวงมืดเข้ม และขอบตัวหุ่นมีเส้นสว่างด้านในกับเส้นมืดด้านนอก หุ่นดู "คมจัด" กว่าทุกอย่างใน plate จึงอ่านเป็นของแปะ ในงานจริงเคยเจอว่า element ที่คมกว่าคนที่ยืนอยู่หน้ามันดูหลุดทันที plate คือตัวอ้างอิงความคม

ผู้ต้องสงสัยสามตัว: Grade, Sharpen และ Merge ไล่ดูทีละ node ชี้เมาส์ที่วงมืดรอบช่องตา ค่าจะติดลบ เพราะ sharpen ดันขอบให้เกินเพื่อนบ้าน ไม่ได้เพิ่มรายละเอียดจริง

sharpen: out = x + amount · (x − blur(x))

2 ลงมือใน mini compositor

โจทย์: หา node ที่ทำให้เกิดวงรอบขอบ แล้วเอาผลของมันออก

SkyVFX mini compositor · CF8640×360 · float · 1001

3 เจาะลึก

ลายนิ้วมือของ sharpen

sharpen แบบ unsharp mask คือ x + amount·(x − blur(x)) ฝั่งสว่างของขอบถูกดันให้สว่างขึ้น ฝั่งมืดถูกกดลง ถ้าความต่างที่ขอบสูงมาก เช่นกระจกหน้าหุ่นที่สว่างราว 3.5 ติดกับเปลือกหุ่น หรือแสงแดดสะท้อนราว 7 บนไหล่ ฝั่งมืดจะติดลบจนเห็นเป็นวงดำเข้ม

บน CG ที่ premult แล้ว Sharpen ในห้องนี้แตะแค่สีแต่ไม่แตะ alpha ขอบด้านนอกที่ alpha เป็น 0 จึงได้สีติดลบ แล้ว over ก็บวกค่าลบนั้นลงบน plate เกิดเส้นมืดนอกตัว

plate คือตัวอ้างอิงความคม

CG มักคมระดับพิกเซล แต่ภาพจากกล้องจริงไม่เคยคมขนาดนั้น เลนส์ sensor และการบีบอัดทำให้ขอบนุ่มเสมอ แม้ของที่อยู่ในโฟกัสก็มักต้องการความนุ่มราว 1–2 พิกเซล ทางที่ถูกจึงมักเป็นการทำให้ CG นุ่มลงให้เท่า plate ไม่ใช่ทำให้คมขึ้น

ในงานจริงเคยลองโกงให้ element ชัดกว่าที่ฟิสิกส์บอกเพราะลูกค้าอยากให้เด่น ถ้าโกงจนคมกว่าคนที่ยืนอยู่หน้ามัน ภาพจะอ่านเป็นของแปะทันที ทางออกคือโกงได้ แต่ไม่คมกว่าของที่อยู่ข้างหน้า

เทียบความคมกับของใน plate ที่อยู่ระยะเดียวกัน

วิธีจับผู้ร้ายในกราฟ

ทบทวนวิธีจากเคส 2: เมื่อมีหลาย node ที่อาจเป็นต้นเหตุ ให้ disable ทีละตัวแล้วดูว่าอาการหายไหม หรือดู output ของแต่ละ node ไล่ลงมาจาก Read จุดแรกที่อาการโผล่คือผู้ร้าย วิธีนี้เร็วกว่าการเดาจากชื่อ node มาก

  1. 1ดู Read
  2. 2ไล่ลงทีละ node
  3. 3อาการโผล่ที่ไหน
  4. 4disable ยืนยัน

4 ในงานจริง

ทำใน Nuke

  1. ถ้าจำเป็นต้อง sharpen: Sharpen ขนาดเล็กและ amount น้อย ทำหลัง Unpremult แล้ว Premult กลับ
  2. ส่วนใหญ่ให้ทำตรงข้าม: Blur หรือ Defocus เล็กน้อยให้ CG นุ่มเท่า plate
  3. หาค่าติดลบ: Expression r<0||g<0||b<0 ? 1 : 0 แล้วดูผล
  4. Clamp minimum 0 เป็นทางแก้ปลายเหตุ แก้ที่ sharpen ดีกว่า

พลาดบ่อย → แก้ยังไง

  • ✗ sharpen CG ให้ "ดูมีรายละเอียด"✓ sharpen ไม่เพิ่มรายละเอียด แค่ดันขอบ ทำให้ CG นุ่มเท่า plate แทน
  • ✗ sharpen บนภาพ premult ตรง ๆ✓ ขอบนอกจะติดลบ unpremult ก่อนหรือเลี่ยงไปเลย
  • ✗ เดาผู้ร้ายจากชื่อ node✓ disable ทีละ node หรือไล่ดู output

เช็กก่อนส่งช็อต

  • CG ไม่คมกว่าของใน plate ที่ระยะเดียวกัน
  • ไม่มีวงสว่างหรือมืดรอบขอบที่ gain ×4
  • ไม่มีค่าติดลบหลัง filter ใด ๆ
  • element ไม่คมกว่าของที่อยู่ข้างหน้ามัน

5 เช็กตัวเอง

เช็กตัวเอง 1 ข้อ

หลักฐานไหนชี้ว่า Sharpen คือผู้ร้าย

สิ่งที่ได้เรียน

🔒 ตอบคำถามด้านบนก่อน แล้วการ์ดนี้จะเปิด

คำถามเพิ่ม

1. CG คมกว่า plate ทางแก้แรกที่ควรลองคืออะไร

2. ทำไม sharpen บน CG ที่ premult ทำให้เกิดเส้นมืดนอกตัว

ตัวเลขมาจากไหน: เคสจากปัญหาที่เจอในงานจริง เล่าใหม่แบบไม่ระบุงาน และสร้างซ้ำด้วยภาพ Blender ของเราเอง ภาพคำนวณในเบราว์เซอร์: Merge, Grade, Premult, Keymix, Invert, Clamp ตรงกับ Nuke 17.0v2 (ตรวจแล้ว) ส่วน Toe, Defocus, Sharpen, Grain, Keyer และ Despill เป็นแบบสอนหลักการ ไม่เท่า node ใน Nuke เป๊ะ