หน้าแรก · Lab · Roto & Masks

R4 Holdout: ให้หุ่นอยู่หลังเสา

ตัดหุ่นออกตรงที่มีของซึ่งอยู่ใกล้กว่าบังอยู่

Roto & Masks · ~6 นาที · ฟรี

1 อธิบาย

ถ้ามีของใน plate ที่อยู่ใกล้กล้องกว่า CG ต้องตัด CG ออกตรงนั้น (holdout) ไม่งั้น CG จะลอยมาอยู่หน้าของที่ควรบัง ใช้ roto ของของหน้าแล้ว stencil ออกจาก CG ก่อน over

ในห้องนี้ shape วงรีแทนเสาที่อยู่หน้าหุ่น เลือก operation ที่ตัดหุ่นออกตรงพื้นที่วงรี

2 ลงมือใน mini compositor

โจทย์: ตั้ง operation ของ "Merge holdout" ให้ตัดหุ่นออกในพื้นที่ shape

B = หุ่น, A = shape: อยากได้ B นอกพื้นที่ A

SkyVFX mini compositor · R4640×360 · float · 1001

3 เจาะลึก

ลำดับความลึกต้องบอกเอง

Merge over ไม่รู้ว่าอะไรอยู่ใกล้กล้อง มันแค่วาง A ทับ B เสมอ ถ้าใน plate มีเสาที่อยู่หน้าหุ่น over จะเอาหุ่นไปทับเสา ภาพจะดูผิดทันที

plate ไม่มี alpha ของเสาให้ ต้องสร้าง matte ของเสาเอง แล้วเจาะหุ่นออกตรงนั้นก่อน over เมื่อรูถูกเจาะ เสาใน plate ข้างหลังก็จะโผล่ขึ้นมาเอง

  1. 1roto เสา
  2. 2stencil ออกจากหุ่น
  3. 3หุ่นที่เจาะแล้ว over plate
  4. 4เสาใน plate โผล่ด้านหน้า

matte มาจากไหนได้บ้าง

อะไรก็ได้ที่บอกว่าของหน้าอยู่ตรงไหน: roto ของเสา, key ถ้าของหน้าอยู่หน้าฉากสี, ข้อมูล depth ถ้ามีทั้งของ plate และ CG หรือ matte ที่ render มาจาก 3D ถ้าของหน้าเป็น CG ด้วย

ในงาน key คำว่า holdout matte มักหมายถึงอีกงานหนึ่ง คือ roto หยาบ ๆ ที่บังคับพื้นที่ที่ต้องทึบแน่ ๆ ให้ alpha เป็น 1 (รวมเข้า alpha ด้วย max) ส่วน garbage matte ใช้ตัดของที่ไม่ต้องการออก (stencil) ทั้งสองอย่างคือการ “บอก comp ว่าตรงไหนเป็นอะไร” เหมือนกัน

ขอบของ holdout

ขอบของ matte เสาต้องนุ่มเท่าขอบเสาใน plate และถ้ากล้องหรือเสาขยับ ต้องมี motion blur เท่ากัน กฎเดียวกับบท feather

ถ้า roto เล็กกว่าเสา จะเห็นเส้นบาง ๆ ของหุ่นทับขอบเสา ถ้าใหญ่กว่า หุ่นจะแหว่งเกินเสา และเห็นพื้นหลังตรงช่องที่ไม่ควรมี

อาการสาเหตุ
เส้นหุ่นบาง ๆ บนขอบเสาroto เล็กหรือแข็งเกิน
หุ่นแหว่ง มีช่องว่างข้างเสาroto ใหญ่เกิน
ขอบเสาสั่นตอนเล่นroto ไม่ได้ track หรือไม่มี motion blur

ตัดทุกอย่างที่อยู่หลังเสา

หุ่นในห้องนี้มีเงาอยู่ใน alpha stencil จึงตัดเงาตรงที่เสาบังไปด้วย ซึ่งถูกเมื่อเงาอยู่หลังเสาเหมือนตัวหุ่น

ทุกชั้นของ CG ที่อยู่หลังเสาต้องใช้ holdout เดียวกัน ทั้งตัวหุ่น เงา ฝุ่น หรือ glow ไม่งั้นจะมีชั้นใดชั้นหนึ่งลอยมาอยู่หน้าเสา

เจาะ CG ก่อน over เสมอ ไม่ใช่วาง CG แล้วเอา plate มาแปะทับทีหลัง

4 ในงานจริง

ทำใน Nuke

  1. Roto ของเสา → Merge (stencil) A = roto, B = หุ่น
  2. หุ่นที่เจาะแล้ว → Merge (over) บน plate
  3. ใช้ Dot แยก roto ไปใช้กับทุกชั้น CG ที่อยู่หลังเสา
  4. กล้องขยับ: Tracker บนเสา แล้วให้ roto ตาม เปิด motion blur ของ Roto ให้ตรงกับ plate

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

  • ✗ over หุ่นลง plate ก่อน แล้วค่อยเอา plate ตรงเสามาแปะทับ✓ ถ้าใช้ plate และ matte เดียวกันเป๊ะ ตัวเลขจะออกมาเท่ากัน แต่การแปะทับจะพังทันทีที่มีอะไรทำกับทั้งภาพ (grain, defocus, lens) คั่นระหว่าง over กับตัวแปะ และทุกชั้น CG ใหม่ต้องแปะซ้ำ เจาะหุ่นด้วย stencil ก่อน over ให้ holdout ติดไปกับ CG
  • ✗ ใช้ alpha ของหุ่นเป็น holdout matte✓ alpha ของหุ่นบอกแค่ตัวหุ่น holdout ต้องเป็น matte ของของที่อยู่หน้า
  • ✗ เจาะแค่ตัวหุ่น ลืมชั้นเงา ฝุ่น หรือ glow✓ ทุกชั้นที่อยู่หลังเสาต้องใช้ holdout เดียวกัน
  • ✗ roto เสาขอบแข็งในช็อตที่กล้องแพน✓ ใส่ feather เท่าขอบจริงและเปิด motion blur ให้เท่ากับ plate

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

  • ไม่มีชั้น CG ใดลอยอยู่หน้าเสา
  • ขอบเสานุ่มและเบลอเท่ากับใน plate
  • ไม่มีเส้นหุ่นบาง ๆ บนขอบเสา และไม่มีช่องว่างข้างเสา
  • เล่นทั้งช็อตแล้ว holdout ตามเสาตลอด

5 เช็กตัวเอง

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

holdout matte ได้มาจากไหนในงานจริง

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

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

คำถามเพิ่ม

1. ทำไมแค่เจาะรูในหุ่นแล้วเสาก็โผล่มาข้างหน้าได้

2. หลัง holdout เห็นเส้นบาง ๆ ของหุ่นทับขอบเสา น่าจะเป็นเพราะอะไร

ตัวเลขมาจากไหน: ภาพคำนวณในเบราว์เซอร์ Saturation, Multiply, Clamp, Invert, Keymix, Copy และ Grade ตรงกับ Nuke 17.0v2 (ตรวจแล้ว) ส่วน Blur, Defocus, Glow, Sharpen, ChromaticAberration, Vignette, LensDistort, Grain, Erode, Toe, Keyer และ Despill เป็นแบบสอนหลักการ ไม่เท่า node ใน Nuke เป๊ะ Transform ในห้องนี้ก็เป็นแบบสอนหลักการเช่นกัน ใช้ bilinear ไม่ concatenate และตัดขอบที่เฟรม ภาพเป็นเรนเดอร์ Blender ของเราเอง (green screen สร้างด้วยโค้ดล้วน ฉากทะเลทรายใช้ภูเขาจาก Gaea 2.3 ท้องฟ้าเป็น HDRI CC0 จาก Poly Haven หินและหญ้าจาก Poly Haven CC0 ทรายและหินผาจาก Quixel และ rig หุ่นจาก Mixamo โดย Quixel และ Mixamo ใช้ในเรนเดอร์เท่านั้น)