หน้าแรก · Lab · Camera & Lens Lab

L6 Vignette: ขอบภาพมืด

เลนส์จริงให้แสงที่มุมน้อยกว่ากลางภาพ

Camera & Lens Lab · ~4 นาที · ฟรี

1 อธิบาย

เลนส์จริงส่งแสงไปที่มุมภาพน้อยกว่ากลาง (vignette) CG ไม่มีเอง ถ้า plate มี vignette แต่ CG ไม่มี CG ที่อยู่ใกล้มุมจะดูสว่างเกิน

vignette เป็นการคูณ ใส่กับ CG ให้เท่ากับ plate หรือใส่ทั้งภาพตอนท้าย อย่าใส่ซ้ำกับ plate ที่มีอยู่แล้ว

2 ลงมือใน mini compositor

SkyVFX mini compositor · L6640×360 · float · 1001

3 เจาะลึก

Vignette คือการคูณที่เปลี่ยนตามตำแหน่ง

กลางภาพคูณ 1 มุมภาพคูณน้อยกว่า 1 ในห้องทดลองของเรา มุมถูกคูณด้วย (1 − amount) ส่วน softness กำหนดว่าความมืดเริ่มไกลจากมุมแค่ไหน ตารางแปลง amount เป็น stop ให้เห็นภาพ

amountมุมคูณด้วยเท่ากับ
0.20.8−0.32 stop
0.30.7−0.51 stop
0.50.5−1 stop
0.750.25−2 stop

ทำไม CG ต้องมี และทำไมมันขยับ

vignette ติดอยู่กับเฟรม ไม่ได้ติดกับฉาก ถ้าหุ่นยนต์เดินจากกลางภาพไปทางมุม plate รอบตัวมันจะมืดลงเรื่อย ๆ Grade ที่จับคู่ไว้ตอนหุ่นอยู่กลางภาพจะสว่างเกินเมื่อหุ่นถึงมุม

เพราะเป็นการคูณ ดำก็ลดลงตามด้วย ดำที่ sample ไว้กลางภาพจึงใช้กับมุมภาพไม่ได้ ถ้าแมทช์ดำ ให้ sample ใกล้ตำแหน่งที่ CG อยู่จริง

วางไว้ตรงไหนใน script

มีสองทางที่ถูก ทางแรก ใส่ vignette ให้ CG อย่างเดียวให้เท่ากับ plate ก่อน merge ทางที่สอง หาร vignette ออกจาก plate ตอนต้น comp ทั้งหมดในภาพที่สว่างเท่ากันทั้งเฟรม แล้วคูณ vignette กลับทั้งภาพตอนท้าย คล้ายการ undistort แล้ว redistort

ทั้งสองทาง vignette อยู่หลัง lens distortion และก่อน grain เพราะ grain เกิดที่ฟิล์มหรือเซนเซอร์ ไม่ได้ถูกเลนส์ทำให้มืด

  1. 1Redistort CG
  2. 2Vignette ที่ CG
  3. 3Merge over plate
  4. 4Grain
  5. 5Write

วัด vignette ของ plate

วิธีที่แม่นคือใช้ภาพพื้นผิวเรียบสม่ำเสมอที่ถ่ายด้วยเลนส์และค่า aperture เดียวกัน เช่นผนังเรียบหรือ lens grid แล้วหารค่าที่มุมด้วยค่าที่กลาง ได้ตัวคูณของมุมโดยตรง

ท้องฟ้าใน plate ทะเลทรายใช้ได้แค่ประมาณ เพราะท้องฟ้าจริงไม่ได้สว่างเท่ากันทั้งผืน ใกล้ขอบฟ้ามักสว่างกว่า และ vignette มักแรงสุดตอนเปิด aperture กว้าง พอหรี่ลงจะอ่อนลง

มุม ÷ กลาง = ตัวคูณของมุม

4 ในงานจริง

ทำใน Nuke

  1. Radial ขนาดใหญ่และนุ่ม → ใช้เป็น mask (กลับด้าน) ของ Grade หรือ Multiply ที่ลดความสว่าง
  2. ใส่ให้ CG ก่อน Merge โดยใช้ตัวคูณที่วัดจาก plate
  3. หรือ: Merge divide เอา vignette ออกจาก plate ตอนต้น แล้ว Merge multiply กลับตอนท้าย
  4. ลำดับ: CG → LensDistortion (redistort) → vignette ที่ CG → Merge over plate → Grain → Write (ถ้าหาร vignette ออกจาก plate ไว้แล้ว ค่อยใส่ vignette ทั้งภาพหลัง Merge แล้วจึง Grain)

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

  • ✗ ใส่ vignette ทั้งภาพตอนท้าย ทั้งที่ plate มีอยู่แล้ว✓ ใส่ให้ CG อย่างเดียว หรือหารออกจาก plate ก่อนแล้วค่อยใส่กลับ
  • ✗ จับคู่ Grade ของ CG ที่เฟรมเดียวตอนหุ่นอยู่กลางภาพ✓ เช็กหลายเฟรมโดยเฉพาะตอนหุ่นใกล้มุม หรือใส่ vignette ที่ติดกับเฟรมให้ CG
  • ✗ ใส่ vignette หลัง grain✓ vignette ก่อน grain ไม่งั้น grain ที่มุมจะจางลงผิดธรรมชาติ
  • ✗ วัด vignette จากท้องฟ้าแล้วเชื่อเป๊ะ✓ ใช้พื้นผิวเรียบหรือ lens grid ถ้ามี ท้องฟ้าเป็นแค่ค่าประมาณ

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

  • มุมภาพของ plate ไม่โดน vignette ซ้ำสองรอบ
  • CG ใกล้มุมมืดลงเท่ากับ plate รอบ ๆ
  • เช็กหลายเฟรมเมื่อ CG เคลื่อนผ่านเฟรม
  • ลำดับ: distortion → vignette → grain

5 เช็กตัวเอง

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

plate มี vignette อยู่แล้ว ควรทำยังไงกับ CG

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

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

คำถามเพิ่ม

1. ในห้องทดลอง ตั้ง amount = 0.5 มุมภาพมืดลงกี่ stop

2. หุ่นยนต์เดินจากกลางภาพไปมุม Grade ที่จับคู่ไว้ตอนต้นกลายเป็นสว่างเกิน สาเหตุน่าจะเป็นอะไร

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