1 อธิบาย
อาการ: พื้นทรายดู noise หนากว่า plate ดิบ แต่หุ่นกลับเนียนกริบเหมือนพลาสติก ในเคสนี้ plate มี grain ของกล้องอยู่แล้ว (node "Camera grain" แทน grain นั้น) ส่วน CG ไม่มี grain เลย ต้อง regrain เฉพาะพิกเซลที่ถูกแทนที่ด้วย CG
Keymix ใส่ grain ตาม mask แต่มีคน Invert mask ไว้ grain ใหม่จึงลงบน plate (grain สองชั้นที่ขนาดเท่ากันแรงขึ้นราว 1.41 เท่า) และไม่ลงบนหุ่นเลย ดู r, g, b ทีละช่องที่พื้นทรายเทียบ "Merge over" กับ "Keymix (regrain)"
two equal, independent grains: √2 ≈ 1.41× stronger2 ลงมือใน mini compositor
โจทย์: ให้ grain ใหม่ลงเฉพาะหุ่น (และเงาของมัน) ไม่ลงซ้ำบน plate
3 เจาะลึก
regrain เฉพาะส่วนที่เปลี่ยน
ถ้า plate ยังมี grain ของกล้องอยู่ (ไม่ได้ denoise) พิกเซล plate ที่ไม่ถูกแตะมี grain ถูกต้องแล้ว ส่วนที่ต้องใส่ grain คือพิกเซลที่ถูกแทนด้วยของใหม่: CG, ส่วนที่ paint, หรือส่วนที่ถูกเบลอจน grain หาย
อีกแนวทางที่ใช้กันมาก: denoise plate ก่อน comp ทั้งหมดบนภาพสะอาด แล้ว regrain ครั้งเดียวทั้งเฟรมตอนท้าย ทั้งสองแนวทางถูก แต่ห้ามผสมกันจน plate ได้ grain สองชั้น
| แนวทาง | plate | regrain |
|---|---|---|
| เก็บ grain เดิม | ไม่ denoise | เฉพาะพิกเซลใหม่ ผ่าน mask |
| denoise ก่อน | denoise แล้ว | ทั้งเฟรม ครั้งเดียว ตอนท้าย |
grain ซ้อนแรงขึ้นเท่าไหร่
noise สองชั้นที่เป็นอิสระต่อกันรวมกันแบบ √(a² + b²) ไม่ใช่ a + b grain สองชั้นที่แรงเท่ากันจึงแรงขึ้นราว 1.41 เท่า ในบทนี้วัดค่าเบี่ยงเบนของช่องน้ำเงินบนพื้นทรายได้ 0.027 (plate) เทียบ 0.038 (หลัง regrain ผิดที่) ราว 1.38 เท่า ใกล้ 1.41
ในงานจริงเคยเจอ element ที่มี grain มากกว่า plate ถึงราว 3 เท่า เพราะมี grain อยู่ในตัว element แล้วยังใส่ Grain ทับอีก วิธีวัดคือเทียบค่าเบี่ยงเบนบนพื้นที่เรียบทีละช่องสี เป้าหมาย comp ÷ plate ราว 0.9–1.1
mask ที่กลับด้าน
mask กลับด้านเป็นความผิดพลาดที่เงียบที่สุดอย่างหนึ่ง ภาพไม่พัง แค่ผลไปลงผิดที่ ทุกครั้งที่ต่อ mask ให้กดดู mask นั้นเอง แล้วถามว่า "สีขาวคือที่ที่อยากให้มีผลใช่ไหม" และเช็กช่อง invert ของ node ที่รับ mask ด้วย
grain: ท้ายสุด ครั้งเดียว ต่อช่องสี และเฉพาะที่เปลี่ยน
4 ในงานจริง
ทำใน Nuke
- Keymix: B = comp, A = comp ที่ใส่ Grain แล้ว, mask = alpha ของส่วนที่เปลี่ยน (CG, paint)
- เช็กช่อง invert ของ mask ใน Keymix และ Merge ทุกครั้ง
- DasGrain (gizmo ฟรีจากชุมชน) ทำแบบเดียวกัน: เอา grain จาก plate แล้วใส่เฉพาะที่ comp ต่างจาก plate
- Grain2: intensity ต่อช่องสีไม่เท่ากัน ปกติช่องน้ำเงินแรงสุด; ระวัง maskgrain ที่เปิดอยู่ตั้งแต่ต้นจะไม่ใส่ grain ตรงที่ alpha ของ input เป็น 0 (ใส่ grain ให้ element ก่อน merge จึงไม่ไปโดนส่วนที่ว่างของมัน และถ้าใส่กับภาพทั้งเฟรม ให้เช็ก alpha ของภาพนั้นก่อน) Grain ในห้องนี้เป็นแบบสอน ใส่ทุกพิกเซลไม่สน alpha
พลาดบ่อย → แก้ยังไง
- ✗ ใส่ Grain ทั้งเฟรมทั้งที่ plate ยังมี grain✓ regrain ผ่าน mask เฉพาะส่วนที่เปลี่ยน หรือ denoise plate ก่อน
- ✗ ลด amount เพื่อแก้ grain หนา✓ ถ้าต้นเหตุคือ grain ซ้อน ลด amount แล้ว CG ก็ยังเนียนผิดอยู่ แก้ที่ mask
- ✗ blur หรือ defocus หลังใส่ grain✓ grain อยู่หลัง blur/defocus เสมอ
- ✗ วัด grain บนพื้นที่ที่มีรายละเอียดหรือมีของขยับ✓ วัดบนพื้นที่เรียบที่นิ่ง ทีละช่องสี
เช็กก่อนส่งช็อต
- plate ไม่มี grain สองชั้น
- CG และส่วนที่ paint มี grain เท่า plate (ต่อช่องสี)
- mask ของ regrain ไม่กลับด้าน
- grain เป็นขั้นท้ายสุด ไม่มี blur หลังมัน
5 เช็กตัวเอง
พื้นหลัง grain หนาขึ้น แต่ CG เนียน ต้นเหตุคืออะไร
🔒 ตอบคำถามด้านบนก่อน แล้วการ์ดนี้จะเปิด
1. grain สองชั้นที่แรงเท่ากันและเป็นอิสระต่อกัน รวมแล้วแรงขึ้นราวกี่เท่า
2. plate ไม่ได้ denoise จะใส่ grain ให้ CG อย่างไร
ตัวเลขมาจากไหน: Grain และ Keymix: Keymix ตรงกับ Nuke 17.0v2 ส่วน Grain เป็นแบบสอน (noise ต่อช่องสีที่บวกเข้าทุกพิกเซล ต่างจาก Grain2 ของ Nuke ที่ค่า default ไม่ใส่ grain ตรงที่ alpha เป็น 0) grain สองชั้นที่เป็นอิสระต่อกันรวมกันแบบ √(a² + b²) จึงแรงขึ้น √2 เท่าเมื่อเท่ากัน นี่คือคณิตของ noise ทั่วไป