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

R3 in, out, stencil, mask, atop

merge แบบ matte แต่ละตัวเก็บอะไรไว้

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

1 อธิบาย

นอกจาก over ยังมี merge ที่ใช้ alpha เป็นตัวตัด: in = A ในพื้นที่ B, out = A นอกพื้นที่ B, mask = B ในพื้นที่ A, stencil = B นอกพื้นที่ A, atop = A วางบน B เฉพาะที่ B มีของ

ใช้ทำ holdout, แยกส่วนภาพ, หรือจำกัด effect เปลี่ยน operation แล้วดูผล

2 ลงมือใน mini compositor

SkyVFX mini compositor · R3640×360 · float · 1001

3 เจาะลึก

ห้าตัวในตารางเดียว

ตัวพิมพ์ใหญ่ A, B คือสีของแต่ละ input ตัวพิมพ์เล็ก a, b คือ alpha ของมัน ตัวอย่างใช้ห้องทดลองนี้ A = หุ่น, B = shape วงรี

opสูตรเก็บอะไร
inA·bหุ่นเฉพาะในวงรี
outA·(1 − b)หุ่นเฉพาะนอกวงรี
maskB·aวงรีเฉพาะตรงที่มีหุ่น
stencilB·(1 − a)วงรีที่ถูกเจาะรูเป็นรูปหุ่น
atopA·b + B·(1 − a)หุ่นวางบนวงรี เฉพาะในวงรี

ใครเป็นตัวตัด

in กับ out เก็บ A แล้วใช้ alpha ของ B เป็นกรรไกร ส่วน mask กับ stencil เก็บ B แล้วใช้ alpha ของ A เป็นกรรไกร

จึงเป็นคู่กระจก: “หุ่น in วงรี” ให้ผลเท่ากับ “วงรี mask หุ่น” ถ้าสลับ input ส่วน out ก็คู่กับ stencil แบบเดียวกัน เลือกตัวที่ทำให้ไม่ต้องสลับสาย B ซึ่งควรเป็นสายหลักของ comp

ชื่อ in, out, atop อ่านว่า “A ... B” ส่วน mask, stencil คือสิ่งที่ A ทำกับ B

ตัวเลขจริงจาก Nuke

ค่าเหล่านี้วัดใน Nuke 17 ด้วย A = 0.3 (alpha 0.5, premultiplied) และ B = 0.4 (alpha 0.8) ลองคิดตามแล้วเทียบกับห้องทดลอง สังเกตว่า atop ได้ alpha เท่ากับ b คือรูปร่างของ B ไม่เปลี่ยน

oprgbalpha
in0.240.4
out0.060.1
mask0.20.4
stencil0.20.4
atop0.440.8

ใช้ตอนไหนในงานจริง

stencil เจาะรูให้ของที่อยู่หน้า (holdout) หรือลบส่วนเกินด้วย garbage matte ส่วน in จำกัด effect ให้อยู่บนวัตถุ เช่นให้ฝุ่นเกาะเฉพาะบนตัวหุ่น และ atop วาง texture หรือแสงเพิ่มลงบนหุ่นโดยไม่ล้นออกนอกรูปร่างหุ่น

over ก็คือ stencil กับ plus รวมกัน: A + B·(1 − a) ถ้าเข้าใจสูตรนี้ ปัญหาขอบดำหรือขอบเรืองส่วนใหญ่จะอธิบายได้

4 ในงานจริง

ทำใน Nuke

  1. Merge: เลือก operation เป็น in, out, mask, stencil หรือ atop จำไว้ว่า A คือ input ที่มีป้าย A ส่วน B คือสายหลัก
  2. ใช้ Dot ดึง roto หรือ matte มาจากทางข้าง ให้สาย B วิ่งตรงลงมา
  3. ถ้าต้องการแค่ alpha ไม่ใช่สี ใช้ Copy (alpha → alpha) หรือ ChannelMerge กับช่อง alpha
  4. ตรวจผลที่ช่อง alpha ด้วย ไม่ใช่แค่ rgb

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

  • ✗ ใช้ in ทั้งที่ต้องการให้ B เป็นตัวที่ถูกเก็บ✓ in เก็บ A ถ้าจะเก็บ B ด้วย alpha ของ A ใช้ mask
  • ✗ สลับ A กับ B เพื่อให้ op ทำงาน จนสายหลักของ comp เปลี่ยนไปอยู่ A✓ เลือก op คู่กระจกแทน (in ↔ mask, out ↔ stencil) ให้ B เป็นสายหลักเสมอ
  • ✗ ใช้ matte ที่ไม่มี alpha (ข้อมูลอยู่ในช่อง rgb)✓ op เหล่านี้อ่าน alpha ย้ายข้อมูลเข้า alpha ก่อนด้วย Shuffle หรือ Copy

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

  • รู้ว่าแต่ละ Merge เก็บ A หรือ B และใช้ alpha ของใครตัด
  • สาย B ยังเป็นสายหลักของ comp
  • matte อยู่ในช่อง alpha จริง
  • ตรวจช่อง alpha ของผลลัพธ์แล้ว

5 เช็กตัวเอง

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

อยากได้หุ่นเฉพาะส่วนที่อยู่นอกวงรี ใช้อะไร (A = หุ่น)

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

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

คำถามเพิ่ม

1. A = หุ่น, B = วงรี ต้องการวงรีที่มีรูเป็นรูปหุ่น ใช้ op ไหน

2. A = 0.3 (alpha 0.5), B = 0.4 (alpha 0.8) Merge atop ได้ alpha เท่าไหร่

ตัวเลขมาจากไหน: ภาพคำนวณในเบราว์เซอร์ 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 ใช้ในเรนเดอร์เท่านั้น)