หน้าแรก · Lab · Finishing & Optics

O4 Chromatic aberration

สีแดงกับน้ำเงินเหลื่อมกันที่ขอบภาพ

Finishing & Optics · ~5 นาที · ฟรี

1 อธิบาย

เลนส์หักเหแต่ละสีไม่เท่ากัน ที่ขอบภาพจึงเห็นขอบสีเหลื่อมกัน CG ที่ไม่มีเลยดูสะอาดเกิน ในแล็บนี้ใส่โดยขยายช่องแดงนิดเดียวและหดน้ำเงินนิดเดียวรอบกลางภาพ แล็บเริ่มที่แดง ×1.004 น้ำเงิน ×0.996 ซึ่งแรงกว่าเลนส์จริงเพื่อให้เห็นง่าย (งานจริงมักใกล้ 1.002 / 0.998) ส่วนเลนส์จริงสีไหนขยายหรือหดขึ้นกับเลนส์ ให้ดูจาก plate

ใส่ให้น้อยที่สุดที่ plate มี และวางหลัง glow ก่อน grain ตามลำดับเลนส์จริง

2 ลงมือใน mini compositor

SkyVFX mini compositor · O4640×360 · float · 1001

3 เจาะลึก

ทำไมเลนส์แยกสี

แก้วหักเหแสงแต่ละสีไม่เท่ากัน สีแดงกับสีน้ำเงินจึงตกบนเซนเซอร์ด้วยขนาดภาพที่ต่างกันนิดเดียว ตรงกลางภาพความต่างเป็นศูนย์ ยิ่งออกไปทางขอบยิ่งเหลื่อม จึงเลียนแบบได้ด้วยการ scale แต่ละช่องสีรอบจุดกลางภาพ

ค่าที่ใช้กันบ่อย: แดงราว 1.002 น้ำเงินราว 0.9982 เขียวคงเดิม บนภาพ 1920×1080 มุมภาพอยู่ห่างกลาง 1101 px แดงจะขยับออกราว 2.2 px น้ำเงินขยับเข้าราว 2.0 px รวมแล้วสองสีห่างกันราว 4 px ที่มุม และไม่ขยับเลยที่กลาง

ตำแหน่ง (1920×1080)แดง ×1.002น้ำเงิน ×0.9982
กลางภาพ0 px0 px
กลางขอบซ้าย/ขวา (960 px)ออก 1.9 pxเข้า 1.7 px
มุมภาพ (1101 px)ออก 2.2 pxเข้า 2.0 px

เปลี่ยนแค่สี ไม่เปลี่ยนความสว่าง

ถ้าแค่เลื่อนช่องแดงกับน้ำเงิน ความสว่างที่ขอบจะเปลี่ยนไปด้วย ขอบดูซ้อนเป็นสองเส้น วิธีที่สะอาดกว่าคือแปลงเป็น YCbCr แล้วเก็บ Y (ความสว่าง) ของต้นฉบับไว้ ใช้เฉพาะ CbCr (สี) จากภาพที่เลื่อนแล้ว ผลคือขอบมีแค่สีเหลื่อม ความคมและความสว่างเท่าเดิม

ใส่ mask กลางภาพ (radial) ให้กลางภาพไม่โดนเลย แล้ว mix ลง CA ที่ดีแทบไม่ถูกสังเกต แต่ถ้าปิดแล้วจะรู้สึกว่า CG สะอาดเกินไป

  1. 1แยกช่อง R G B
  2. 2scale R ขึ้น B ลง รอบกลาง
  3. 3Y เดิม + CbCr ใหม่
  4. 4mask กลางภาพ
  5. 5mix ลง

ห้องแล็บของเรา: แค่ scale แดงขึ้นและน้ำเงินลง ไม่ได้คืนความสว่าง และตั้งค่าแรงกว่าของจริงเพื่อให้เห็นง่าย

ดูจาก plate อย่าเดา

ซูมไปที่ขอบที่สว่างตัดกับมืดใกล้มุมภาพ เช่นขอบหลังคารถตัดฟ้าใน plate ทะเลทราย ดูว่าสีอะไรเหลื่อมออกและแรงแค่ไหน คู่สีที่เจอบ่อยคือม่วง/เขียว และแดง/ฟ้า ขึ้นกับเลนส์ ใช้คู่ที่ plate มี ไม่ใช่แดง/น้ำเงินทุกช็อต

เลนส์มุมกว้างมักมี CA มากกว่าเลนส์ tele และเลนส์ราคาแพงมักมีน้อยกว่า อย่าใส่ CA แรงในช็อต tele ที่ plate แทบไม่มี CA แรงเกินคือจุดที่บอกว่าเป็นงานมือใหม่ ส่วนจุดสว่างจ้าที่ล้นมักมีขอบม่วงของตัวเอง บางคนเพิ่ม CA อีกชั้นเฉพาะรอบไฮไลต์

วางไว้ตรงไหนในสาย

CA ผูกกับเฟรม รูปแบบขอบสีมีศูนย์กลางที่แกนเลนส์ ซึ่งขยับไปพร้อมกล้อง จึงวางหลัง camera shake เพื่อให้ขอบสีอยู่กลางเฟรมเสมอ หลักของทั้งสาย: effect ที่ผูกกับเฟรม เช่น CA, vignette และ grain อยู่หลัง shake ส่วน effect ที่ผูกกับของในฉาก เช่น flare ที่ตาม track ของแหล่งแสง อยู่ก่อน shake และ glow ทั้งภาพได้ผลแทบเท่ากันทั้งสองฝั่ง จึงวางไว้ก่อนเช่นกัน (ดูบท O5) และ CA วางก่อน halation และ grain เพราะสองอย่างนั้นเกิดที่ฟิล์มหรือเซนเซอร์ หลังแสงผ่านเลนส์แล้ว

  1. 1Camera shake
  2. 2Chromatic aberration
  3. 3Halation
  4. 4Grain

4 ในงานจริง

ทำใน Nuke

  1. TransformMasked จำกัดช่องเป็น red, scale ราว 1.002 ตรวจว่า center อยู่กลางเฟรม
  2. TransformMasked อีกตัวจำกัดเป็น blue, scale ราว 0.998
  3. Colorspace แปลงทั้งต้นฉบับและภาพที่เลื่อนเป็น YCbCr แล้ว copy เฉพาะช่องสีจากภาพที่เลื่อน กลับเป็น RGB
  4. Radial เป็น mask กลางภาพ แล้ว Keymix กับต้นฉบับ ปรับ mix ลง
  5. อย่าให้ alpha เปลี่ยน CA มีไว้สำหรับ rgb

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

  • ✗ ใส่ CA แรงจนเห็นขอบรุ้งชัดทั้งภาพ✓ ใช้ค่าเล็กมาก แล้ว mix ลง เทียบกับขอบจริงใน plate
  • ✗ เลื่อน (translate) ช่องสีแทนการ scale✓ การเลื่อนทำให้กลางภาพเหลื่อมด้วย ต้อง scale รอบกลางภาพ
  • ✗ CA ที่ทำให้ขอบสว่างขึ้นหรือดูซ้อน✓ เก็บ Y ของต้นฉบับไว้ เปลี่ยนแค่สี
  • ✗ ใส่ CA หลัง grain✓ CA เกิดในเลนส์ grain เกิดที่เซนเซอร์ CA ต้องมาก่อน

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

  • กลางภาพไม่มี CA มุมภาพมีมากที่สุด
  • คู่สีและความแรงตรงกับขอบจริงใน plate
  • ความสว่างและความคมของขอบไม่เปลี่ยน
  • อยู่หลัง shake ก่อน halation และ grain
  • alpha ไม่ถูกแตะ

5 เช็กตัวเอง

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

CA แบบ lateral ควรแรงที่สุดตรงไหนของภาพ

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

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

คำถามเพิ่ม

1. ภาพ 1920×1080 scale ช่องแดง 1.002 รอบกลางภาพ ที่กลางขอบซ้าย แดงขยับประมาณเท่าไร

2. ทำไมควรเก็บความสว่าง (Y) ของต้นฉบับไว้ตอนทำ CA

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