หน้าแรก · Lab · Comp Foundations

F4 Grade กับภาพ premult

ยก lift ทีเดียว ทั้งเฟรมสว่างตาม

Comp Foundations · ~7 นาที · ฟรี

1 อธิบาย

lift ยกทุกพิกเซลที่มืด รวมถึงพิกเซลที่ alpha = 0 รอบ ๆ หุ่นด้วย พอ Merge over บวก A เข้าไปตรง ๆ plate ทั้งเฟรมเลยสว่างขึ้น ไม่ใช่แค่หุ่น

การคูณล้วน (gain, multiply) ทำบนภาพ premult ได้ แต่ lift, gamma, offset ต้อง unpremult → grade → premult ใน Grade ของ Nuke มีช่อง "(un)premult by" ทำให้ในตัว

Grade (Nuke): y = A·x + (add + lift − A·blackpoint), A = multiply·(gain − lift)/(whitepoint − blackpoint)

2 ลงมือใน mini compositor

โจทย์: ให้ lift มีผลแค่ที่หุ่น ไม่ลามไปทั้งเฟรม

ดูที่ท้องฟ้า มันไม่ควรสว่างขึ้นเลย

SkyVFX mini compositor · F4640×360 · float · 1001

3 เจาะลึก

Grade ทำอะไรจริง ๆ

ก่อน gamma ทั้ง Grade คือเส้นตรงเส้นเดียว: y = A·x + B โดย A = multiply·(gain − lift)/(whitepoint − blackpoint) และ B = offset + lift − A·blackpoint

จากนั้นจึงคิด gamma และ black clamp ซึ่งเปิดไว้เป็นค่าเริ่มต้น ตัดค่าติดลบเป็น 0 (white clamp ปิดอยู่)

  1. 1blackpoint / whitepoint
  2. 2lift / gain
  3. 3multiply
  4. 4offset
  5. 5gamma
  6. 6black clamp

ตัวเลขที่ควรจำ

lift ไม่ถูกคูณด้วย multiply: multiply 2 กับ lift 0.1 ทำให้ 0 กลายเป็น 0.1 ไม่ใช่ 0.2 และ gamma ทำงานเป็นโค้งแค่ช่วง 0–1 เกิน 1 เป็นเส้นตรงความชัน 1/gamma

ตั้งค่าเข้าออกสังเกต
lift 0.100.1ดำยกขึ้น
lift 0.14.54.15ไฮไลต์ถูกดึงลง
gamma 20.40.6325โค้งช่วงต่ำกว่า 1
gamma 22.51.75เส้นตรงช่วงเกิน 1

ทำไม multiply ปลอดภัย แต่ lift ไม่

พิกเซลขอบ: สีจริง 0.25 alpha 0.5 ในภาพ premult เก็บไว้เป็น 0.125 ถ้า grade ตรง ๆ บนภาพ premult ผลจะต่างจากการ unpremult → grade → premult ทุกครั้งที่ไม่ใช่การคูณล้วน

การคูณ k·(C·a) = (k·C)·a สลับกันได้ แต่ gamma, lift, offset ไม่ได้ lift ยังไปบวกพิกเซล alpha 0 รอบหุ่น แล้ว over ก็บวกค่านั้นทั้งเฟรม

การปรับบนภาพ premult ตรง ๆunpremult → grade → premult
gain 2 (ขอบ)0.250.25
gamma 2 (ขอบ)0.354 สว่างเกิน0.25
lift 0.06 (นอกหุ่น, alpha 0)0.06 ลามทั้งเฟรม0

ช่อง (un)premult by ใน Grade

ตั้ง (un)premult by เป็น rgba.alpha แล้ว Grade จะ unpremult → grade → premult ให้ในตัว สะดวกเมื่อมี grade ตัวเดียว ถ้ามีหลายตัวติดกัน ใช้ Unpremult กับ Premult ครอบทั้งชุดจะอ่านง่ายกว่า

ข้อควรระวัง: พิกเซลที่ alpha เป็น 0 จะออกมาเป็น 0 ทุกช่อง element แสงที่ alpha 0 ทั้งภาพจึงหายหมด แสงพวกนี้ไม่ต้องใช้ช่องนี้เลย

ขยับ lift แล้วดูท้องฟ้าไกลจากหุ่น ถ้ามันขยับตาม แปลว่ายังไม่ได้ unpremult

4 ในงานจริง

ทำใน Nuke

  1. gain / multiply อย่างเดียว: ใส่ Grade บนภาพ premult ได้เลย
  2. มี lift, gamma, offset: ตั้ง (un)premult by = rgba.alpha
  3. หลาย node สี: Unpremult → Grade → ColorCorrect → Premult
  4. element แสง alpha 0: grade โดยไม่เปิด (un)premult
  5. ดู Viewer ที่ Merge แล้วชี้อ่านค่าท้องฟ้าก่อนและหลังขยับ lift

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

  • ✗ lift บนหุ่นที่ premult แล้ว ทั้งเฟรมสว่างขึ้น✓ เปิด (un)premult by หรือครอบด้วย Unpremult/Premult
  • ✗ คิดว่า multiply จะคูณ lift ไปด้วย✓ lift อยู่ในส่วน B ไม่ถูกคูณ ดำจะค้างที่ค่า lift ปรับแยกกัน
  • ✗ ใช้ gamma ดัดไฮไลต์ที่เกิน 1 เหมือนดัดโทนมืด✓ เกิน 1 gamma เป็นเส้นตรง ถ้าจะกดไฮไลต์ใช้ multiply หรือ SoftClip
  • ✗ เปิด (un)premult by กับ element แสง alpha 0✓ แสงจะกลายเป็น 0 ทั้งหมด ปิดช่องนี้สำหรับแสง

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

  • Grade ที่มี lift/gamma/offset บนภาพ premult มี unpremult ครอบ
  • ท้องฟ้านอกหุ่นไม่เปลี่ยนเมื่อขยับ grade ของหุ่น
  • ขอบหุ่นไม่สว่างหรือมืดกว่าเนื้อ
  • element แสงไม่ได้ใช้ (un)premult by

5 เช็กตัวเอง

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

อันไหนทำบนภาพ premult ได้เลยโดยไม่ต้อง unpremult

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

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

คำถามเพิ่ม

1. Grade ตั้ง multiply 2 และ lift 0.1 ค่าเข้า 0 จะออกมาเท่าไร

2. ใส่ gamma 2 บนหุ่นที่ premult แล้ว โดยไม่ unpremult ขอบจะเป็นอย่างไร

ตัวเลขมาจากไหน: สูตร Merge, Grade, Premult, Unpremult ในห้องนี้ตรงกับ Nuke 17.0v2 ครบ 109 กรณีทดสอบ (เทียบตัวเลขจาก Nuke จริง) ส่วน Blur และ Transform เป็นแบบง่าย ใกล้เคียงแต่ไม่เท่า Nuke เป๊ะ ภาพทั้งหมดเรนเดอร์จาก Blender จากฉากของเราเอง: วางฉากด้วยโค้ด ภูเขาเป็น terrain ที่สร้างใน Gaea 2.3 (Community, build แบบ headless) ท้องฟ้าเป็น HDRI CC0 จาก Poly Haven หินและหญ้าแห้งจาก Poly Haven (CC0) texture ทรายและหินผาจาก Quixel และหุ่นบน rig จาก Mixamo (Quixel และ Mixamo ใช้ในเรนเดอร์เท่านั้น ไม่มีไฟล์ต้นฉบับแจก)