หน้าแรก · Lab · Color

C8 White balance ด้วยการคูณสี

plate อมฟ้า แก้ด้วยการคูณแต่ละช่อง

Color · ~6 นาที · ฟรี

1 อธิบาย

สีอมฟ้าหรืออมส้มทั้งภาพ มักมาจากแสงหรือ white balance ของกล้อง ใน linear การแก้ที่ถูกคือคูณแต่ละช่องสี (ไม่ใช่บวก) เพราะแสงที่มีสีทำงานแบบคูณ

หาอะไรที่ควรเป็นเทากลางในภาพ แล้วคูณให้สามช่องเท่ากัน ในโจทย์นี้มีคนคูณ (0.8, 1.0, 1.25) ไว้ หาค่าที่หักล้างกัน

2 ลงมือใน mini compositor

โจทย์: ใส่ค่าใน Multiply "แก้สี" ให้ plate กลับมาเหมือนเดิม

ค่าที่หักล้าง = 1 ÷ ค่าเดิม

SkyVFX mini compositor · C8640×360 · float · 1001

3 เจาะลึก

ทำไมต้องคูณ ไม่ใช่บวก

สิ่งที่กล้องเห็น = แสง × ค่าสะท้อนของวัตถุ ถ้าแสงอมฟ้า ทุกพื้นผิวในฉากจะถูกคูณด้วยตัวเลขชุดเดียวกัน หินมืดเปลี่ยนนิดเดียว ของที่สว่างกว่าเปลี่ยนมากกว่า การแก้ที่ตรงกับธรรมชาติจึงเป็นการคูณกลับ

ตารางคือ plate ทะเลทรายที่โดนคูณ (0.8, 1, 1.25) แล้วแก้สองแบบ แบบบวกถูกตั้งให้ทรายกลับมาพอดี แต่หินมืดกลับมีน้ำเงินติดลบและแดงลอยขึ้น

พื้นผิวโดนสีอมแก้ด้วยคูณแก้ด้วยบวก
หินมืด 0.010.008 / 0.01 / 0.01250.01 / 0.01 / 0.010.038 / 0.01 / −0.025
เทากลาง 0.180.144 / 0.18 / 0.2250.18 / 0.18 / 0.180.174 / 0.18 / 0.188
ทราย 0.150.12 / 0.15 / 0.1880.15 / 0.15 / 0.150.15 / 0.15 / 0.15

หาสิ่งที่ควรเป็นกลาง

เลือกพื้นผิวด้าน สีกลาง โดนแสงหลักเต็ม ๆ เช่นการ์ดเทา หินสีเทา หรือคอนกรีต อย่าเลือกไฮไลต์สะท้อนหรือ flare เพราะมันมีสีของแหล่งไฟปนอยู่ และ sample เป็นพื้นที่ ไม่ใช่พิกเซลเดียว ไม่งั้น noise จะหลอก

ค่าแก้ของแต่ละช่อง = ค่าเป้าหมาย ÷ ค่าที่ sample ได้ หินเทาใน plate sample ได้ (0.16, 0.20, 0.25) luma ราว 0.195 ถ้าอยากให้เป็นกลางโดยความสว่างเท่าเดิม ให้คูณ (1.22, 0.976, 0.78)

  1. 1หาพื้นผิวกลาง
  2. 2Sample เป็นพื้นที่
  3. 3เป้า ÷ ค่าที่ได้
  4. 4คูณต่อช่อง

จับคู่ CG กับ plate ด้วย Grade

ถ้า lift, blackpoint และ offset เป็น 0 และ gamma เป็น 1 Grade ทำงานเป็นการคูณล้วน: ผล = x × multiply × gain ÷ whitepoint ต่อช่อง ใส่ค่าที่ sample จากหุ่นยนต์ (ส่วนที่ด้านและควรเป็นสีกลาง) ลงใน whitepoint แล้วใส่ค่าที่ sample จาก plate ตรงพื้นผิวที่ควรเหมือนกันลงใน gain

หลังจากนั้นอย่าแตะ whitepoint กับ gain อีก ถ้าต้องการสว่างขึ้นหรือมืดลง ให้ปรับ multiply ค่าเดียวทั้งสามช่อง สีจะได้ไม่เลื่อน

whitepoint = ค่าจาก element, gain = ค่าจาก plate

ในช็อตจริง

สีของ plate มักเป็นความตั้งใจของผู้กำกับภาพ งาน comp ส่วนใหญ่คือทำให้ CG เข้ากับ plate ไม่ใช่ “แก้” plate ให้เป็นกลาง เว้นแต่โจทย์สั่ง

แสงผสม เช่นในอาคารไฟส้มกับหน้าต่างแสงฟ้า การคูณครั้งเดียวทั้งภาพแก้ได้แค่ฝั่งเดียว ให้แยกตามโซนด้วย mask และทำทุกอย่างใน linear เพราะใน log การคูณไม่ได้หมายถึงการเปลี่ยนแสงแล้ว

4 ในงานจริง

ทำใน Nuke

  1. Multiply: ใส่ค่า r g b แยกกัน (เช่น 1.25 / 1 / 0.8) สำหรับการแก้ที่รู้ตัวเลขแน่นอน
  2. Grade: ปิด node ก่อน กดปุ่ม color picker ข้าง whitepoint แล้ว Ctrl+Shift+ลาก ใน Viewer เพื่อ sample พื้นที่กลางของ element ลง whitepoint
  3. เปิด Grade กลับ แล้ว sample พื้นผิวที่ตรงกันใน plate ลง gain
  4. ปรับความสว่างต่อด้วย multiply ค่าเดียว ไม่แตะ whitepoint/gain อีก
  5. แสงผสม: แยก Grade ตามโซน แล้วใช้ mask input หรือ Keymix รวมกัน

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

  • ✗ แก้สีอมด้วย offset หรือ lift✓ ใช้การคูณต่อช่อง offset ทำให้ดำติดสีและอาจติดลบ
  • ✗ Sample ไฮไลต์สะท้อนหรือ flare มาเป็น whitepoint✓ เลือกพื้นผิวด้านที่โดนแสงหลัก และ sample เป็นพื้นที่
  • ✗ ปรับ whitepoint หรือ gain ซ้ำเพื่อเปลี่ยนความสว่าง✓ ความสว่างปรับด้วย multiply ค่าเดียว
  • ✗ ทำ plate ให้เป็นกลางทั้งที่โจทย์ไม่ได้สั่ง✓ ปล่อย plate ตามที่ถ่ายมา แล้วจับคู่ CG เข้าหา plate

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

  • การแก้สีอยู่ใน linear และเป็นการคูณ
  • ค่าอ้างอิงมาจากพื้นผิวด้านที่ควรเป็นกลาง ไม่ใช่ไฮไลต์
  • ดำในส่วนมืดไม่ติดสีและไม่ติดลบ
  • ส่วนกลางของ CG ใกล้กับส่วนกลางที่ตรงกันใน plate
  • แสงผสมถูกแยกโซน ไม่ใช่คูณครั้งเดียวทั้งภาพ

5 เช็กตัวเอง

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

แก้สีอมฟ้าทั้งภาพใน linear ควรใช้อะไร

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

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

คำถามเพิ่ม

1. plate โดนคูณ (0.8, 1.0, 1.25) ค่า Multiply ที่หักล้างได้พอดีคือ

2. ใช้ Grade จับคู่ CG กับ plate ค่า whitepoint ควรมาจากไหน

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