1 อธิบาย
Erode หด matte เข้ามา (ค่าติดลบ) หรือขยายออก (ค่าบวก) ขอบเขียวที่เหลือจะหายเพราะถูกตัดออกจาก matte ไม่ได้ถูกแก้สี (การแก้สีเป็นงานของ despill ใน K3) และมันกัดผมกับเส้นเล็กไปด้วย จึงควรเป็นขั้นท้ายของการแก้ขอบ
ลำดับที่แนะนำ: despill ก่อน แล้วปรับ alpha (gamma ดูต่อใน K5) แล้ว edge extend แล้วค่อย erode ถ้ายังจำเป็น
2 ลงมือใน mini compositor
3 เจาะลึก
Erode ในห้องทดลองทำงานยังไง
Erode ของเราเป็น min filter รูปสี่เหลี่ยม ทุกพิกเซลของ alpha จะเอาค่าที่น้อยที่สุดในกรอบรัศมี r รอบตัว ค่าบวกทำกลับกัน (เอาค่ามากสุด) คือ dilate ขยายออก
ผลคือรายละเอียดที่แคบไม่เกิน 2r พิกเซลจะหายหมด ไม่ใช่แค่บางลง เสาอากาศของหุ่นกว้าง 1–2 พิกเซล erode −1 จึงลบทิ้งทั้งเส้น
| size | กรอบที่ดู | สิ่งที่หายหมด |
|---|---|---|
| −1 | 3 × 3 | กว้างไม่เกิน 2 px |
| −2 | 5 × 5 | กว้างไม่เกิน 4 px |
| −3 | 7 × 7 | กว้างไม่เกิน 6 px |
มันไม่ได้แก้ขอบ มันตัดขอบทิ้ง
ขอบเขียวหายหลัง erode เพราะพิกเซลขอบที่มีสีเขียวปนถูกตัดออกจาก matte ไม่ใช่เพราะสีของมันถูกแก้ ตัวหุ่นจึงผอมลงทั้งตัว รูปทรงเปลี่ยน และส่วนที่แตะพื้นอาจลอยจากเงา
dilate กลับทีหลังไม่ได้คืนเสาอากาศ เพราะเส้นที่หายไปแล้วไม่มีอะไรให้ขยาย erode แล้ว dilate จึงลบของเล็กทิ้ง ส่วน dilate แล้ว erode จะปิดรูเล็ก ๆ ใน matte
- 1Erode −1
- 2เสาอากาศหาย
- 3Dilate +1
- 4ยังหาย
ที่ที่ erode เหมาะ
erode เหมาะกับ core matte ที่เป็นเนื้อทึบด้านใน ซึ่งควรอยู่ลึกเข้าไปจากขอบไม่กี่พิกเซลอยู่แล้ว และกับ garbage matte แต่ไม่เหมาะกับ edge matte ที่เก็บผม เส้นลวด และ motion blur
ถ้าจำเป็นต้อง erode ขอบจริง ให้ใช้ roto จำกัดเฉพาะจุดที่มีปัญหา เช่นไหล่หุ่น ไม่ใช่ทั้งตัว และให้เป็นขั้นสุดท้ายหลัง despill, alpha gamma และ edge extend
- 1Despill
- 2Alpha gamma
- 3Edge extend
- 4Erode (ถ้ายังจำเป็น)
Erode ใน Nuke มีหลายตัว
Nuke มี node กลุ่ม erode หลายแบบ ใช้แนวคิดคล้ายกันคือหดหรือขยาย matte แต่คำนวณต่างจากห้องทดลอง Dilate หดหรือขยายทีละพิกเซลเต็ม ส่วน FilterErode ให้เลือก filter ได้ แต่ถ้าใช้ box ขอบก็ยังออกมาเป็นขั้น ผลจึงไม่ตรงกับของเราเป๊ะ
erode แบบ box ให้ขอบเป็นขั้นและมุมเหลี่ยม ใส่ blur เล็กน้อยต่อท้ายเพื่อให้ขอบนุ่มกลับมาเข้ากับ plate
ทิศของค่า size ต่างกันในแต่ละ node ลองกับ alpha ก่อนทุกครั้ง
4 ในงานจริง
ทำใน Nuke
- FilterErode (filter box) บน core matte แล้วตามด้วย Blur เล็กน้อย
- Dilate สำหรับหดหรือขยายทีละพิกเซลเต็ม เช่น garbage matte
- รวม core ที่ erode แล้วกับ edge matte ที่ไม่แตะ ด้วย Merge max
- ถ้าต้อง erode ขอบจริง ต่อ roto เข้า mask input ให้โดนเฉพาะจุดปัญหา
พลาดบ่อย → แก้ยังไง
- ✗ erode ทั้ง matte เพื่อลบขอบเขียว✓ despill และปรับ alpha gamma ก่อน erode เป็นทางสุดท้าย
- ✗ dilate กลับเพื่อเอาเสาอากาศคืน✓ เส้นที่หายแล้วไม่กลับมา ให้ erode เฉพาะ core matte และเก็บ edge matte ไว้
- ✗ erode แล้วไม่ดูจุดที่หุ่นแตะพื้น✓ เช็กเท้ากับเงา ถ้าลอยให้จำกัด erode ด้วย roto
- ✗ erode แบบ box แล้วไม่ blur✓ ใส่ blur เล็กน้อยหลัง erode ให้ขอบนุ่มเท่า plate
เช็กก่อนส่งช็อต
- เส้นเล็ก (เสาอากาศ ผม ลวด) ยังอยู่ในช่อง alpha
- erode อยู่ที่ core หรือ garbage matte หรือถูกจำกัดด้วย roto
- รูปทรงหุ่นไม่ผอมลงเมื่อเทียบกับ plate ต้นฉบับ
- ขอบไม่เป็นขั้นหรือเหลี่ยม
5 เช็กตัวเอง
ขอบเขียวบาง ๆ เหลือรอบตัว ควรลองอะไรก่อน erode
🔒 ตอบคำถามด้านบนก่อน แล้วการ์ดนี้จะเปิด
1. ในห้องทดลอง erode −2 ลบรายละเอียดที่กว้างไม่เกินกี่พิกเซลออกหมด
2. erode −1 แล้วเสาอากาศหาย ใส่ dilate +1 ต่อจะเกิดอะไร
ตัวเลขมาจากไหน: ภาพคำนวณในเบราว์เซอร์ 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 ใช้ในเรนเดอร์เท่านั้น)