1 อธิบาย
อาการ: ประกายไฟอยู่ข้างหลังหุ่น แต่แขนขวาของหุ่นกลับสว่างจ้าเหมือนแสงลอยอยู่ข้างหน้า ชี้เมาส์ที่แขนเทียบ "Merge over" กับ "Merge plus (sparks)" ตรงที่ซ้อนกันสว่างขึ้นหลายเท่า ในงานจริงวัดแบบนี้ได้ว่าคนที่ยืนหน้า element สว่างขึ้น 1.6 เท่า
ต้นเหตุคือลำดับ: plus บวกแสงเข้าไปทุกพิกเซล รวมถึงพิกเซลของหุ่นที่ควรบังแสงไว้ ทางแก้คือ holdout: ตัดแสงออกด้วย alpha ของหุ่นก่อน plus (stencil) ผลเท่ากับวางแสงไว้ใต้หุ่นแล้วค่อย over
holdout: sparks · (1 − a_robot)2 ลงมือใน mini compositor
โจทย์: ทำให้แสงอยู่หลังหุ่น โดยไม่เปลี่ยนความสว่างของประกายไฟตรงที่ไม่มีหุ่นบัง
มี node holdout เตรียมไว้แล้ว เช็กว่ามันทำงานอยู่ไหม
3 เจาะลึก
plus ไม่รู้ว่าอะไรอยู่หน้า
over ใช้ alpha ตัดสินว่าใครบังใคร แต่ plus แค่บวกทุกพิกเซล ถ้าแสงของ element ที่อยู่ข้างหลังถูก plus หลังจากของหน้า over ไปแล้ว แสงจะไปบวกบนของหน้าด้วย
ทางแก้มีสองแบบที่ได้ผลเท่ากัน: (1) plus แสงเข้ากับ plate ก่อน แล้วค่อย over ของหน้า หรือ (2) stencil แสงด้วย alpha ของของหน้าแล้วค่อย plus ห้องนี้ใช้แบบที่ 2
- 1แสง × (1 − a ของหน้า)
- 2plus บน comp
- 3ของหน้าไม่โดนแสง
วัดด้วยอัตราส่วน
วิธีจับอาการนี้แบบเป็นตัวเลข: เอา comp หารด้วยภาพก่อน plus บนพื้นที่ของหน้า ถ้าถูกต้องควรได้ราว 1 ในงานจริงเคยวัดได้ 1.6 บนคนที่ยืนหน้า element ที่เรืองแสง หลังย้าย glow ไปอยู่ใต้ holdout กลับมาราว 1.0
ทุก glow หรือแสงที่บวก ต้องอยู่ใต้ holdout ของของหน้า
ถ้าแสงควรตกบนของหน้าจริงล่ะ
บางครั้งแสงจากไฟข้างหลังควรส่องขอบคนที่ยืนหน้า นั่นคือ interactive light ทำแยกเป็นชั้นของมันเอง: ใช้แสงที่เบลอและลดความแรงตามระยะ คูณกับ matte ของคน แล้วคุมให้ตกเฉพาะด้านที่หันเข้าหาแสง อย่าปล่อยให้ glow ของ element ทำหน้าที่นี้แบบบังเอิญ
4 ในงานจริง
ทำใน Nuke
- Merge (stencil): B = แสง, A = matte ของหน้า แล้วต่อเข้า Merge (plus)
- หรือ: แสง plus plate ก่อน แล้ว Merge over ของหน้าทีหลัง
- matte ของหน้ามาจาก roto, key หรือ depth ใช้ Copy หรือต่อเข้า A โดยตรง
- ตรวจ: Merge (divide) comp ÷ ภาพก่อน plus แล้ว sample บนของหน้า
พลาดบ่อย → แก้ยังไง
- ✗ plus glow ท้ายสุดหลังทุกอย่าง✓ glow ของ element ข้างหลังต้องอยู่ใต้ holdout
- ✗ ลด gain ของแสงเพื่อให้ของหน้าไม่สว่าง✓ แสงจะมืดทุกที่ แก้ที่ลำดับหรือ holdout
- ✗ ใช้ matte ที่ครอบคนอื่นหรือของอื่นติดมาด้วย✓ ดู matte ทับ plate ทุกช็อต ให้ครอบเฉพาะของที่ตั้งใจ
เช็กก่อนส่งช็อต
- แสงและ glow ทุกตัวที่มาจากข้างหลังอยู่ใต้ holdout ของของหน้า
- comp ÷ ภาพก่อน plus บนของหน้า ≈ 1
- matte ของ holdout ครอบเฉพาะของที่ตั้งใจ
- ถ้าต้องการแสงบนของหน้า ทำเป็น interactive light แยก
5 เช็กตัวเอง
แขนหุ่นสว่างขึ้นหลายเท่าตรงที่ซ้อนกับประกายไฟ ต้นเหตุคืออะไร
🔒 ตอบคำถามด้านบนก่อน แล้วการ์ดนี้จะเปิด
1. สองแบบนี้ให้ผลเท่ากันไหม: (หุ่น over plate) + แสง·(1 − a) กับ หุ่น over (plate + แสง)
2. จะพิสูจน์ด้วยตัวเลขว่าคนข้างหน้าไม่โดน glow ทำอย่างไร
ตัวเลขมาจากไหน: เคสจากปัญหาที่เจอในงานจริง เล่าใหม่แบบไม่ระบุงาน และสร้างซ้ำด้วยภาพ Blender ของเราเอง ภาพคำนวณในเบราว์เซอร์: Merge, Grade, Premult, Keymix, Invert, Clamp ตรงกับ Nuke 17.0v2 (ตรวจแล้ว) ส่วน Toe, Defocus, Sharpen, Grain, Keyer และ Despill เป็นแบบสอนหลักการ ไม่เท่า node ใน Nuke เป๊ะ