หน้าแรก · Lab · Integration

I3 Light wrap

ให้แสงพื้นหลังไหลเข้ามาที่ขอบ CG นิดเดียว

Integration · ~7 นาที · ฟรี

1 อธิบาย

กล้องจริงมีแสงจากพื้นหลังสว่าง ๆ ไหลข้ามขอบวัตถุเล็กน้อย CG ที่ตัดคมเกินจึงดูเหมือนแปะ light wrap เอาพื้นหลังที่เบลอมาบวกเข้าที่ขอบด้านในของ CG

กราฟนี้สร้าง wrap จาก node ปกติ: เบลอ plate → ตัดด้วย alpha ที่เบลอ (stencil) → เก็บแค่ส่วนในตัว (mask) → plus ทีละนิด ลองดูทีละ node

2 ลงมือใน mini compositor

SkyVFX mini compositor · I3640×360 · float · 1001

3 เจาะลึก

ทำไมขอบ CG ดูเหมือนตัดแปะ

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

Light wrap จำลองเรื่องนี้ โดยให้พื้นหลังที่ blur แล้วซึมเข้ามาที่ขอบด้านในของหุ่นยนต์ เฉพาะตรงขอบ และเบามาก ๆ

สร้างทีละชิ้น

ชิ้นแรกคือแสง ได้จากพื้นหลัง blur หนัก ๆ จนเหลือแค่สีกับความสว่างคร่าว ๆ ระวังอย่าให้ขอบดำนอกเฟรมถูก blur ดึงเข้ามา ชิ้นที่สองคือแถบขอบ ได้จาก alpha ของหุ่นยนต์คูณกับ (1 − alpha ที่ blur) จะได้แถบบาง ๆ อยู่ด้านในขอบพอดี

เอาแสงคูณกับแถบขอบ แล้ว plus ลงบนภาพ comp ใน rgb เท่านั้น ไม่แตะ alpha และลด mix ลงจนแทบไม่เห็น ถ้าดูออกว่ามี light wrap แปลว่าแรงไป

  1. 1BG blur หนัก
  2. 2แถบขอบจาก alpha
  3. 3คูณกัน
  4. 4Plus rgb, mix ต่ำ

ทำไมต้อง plus และต้องเบา

light wrap คือแสงที่เพิ่มเข้ามา จึงใช้ plus แสงบวกกันได้ตรง ๆ ส่วน screen จะตัดค่าที่เกิน 1 (ถ้ามีค่าหนึ่งเกิน 1 มันคืนแค่ค่าที่มากกว่า) จึงไม่เหมาะกับท้องฟ้าหรือประกายไฟ HDR

บ่อยครั้งใช้สองชั้น ชั้นกว้างจาง ๆ กับชั้นแคบชิดขอบ แต่ละชั้นเบามาก ตรงไหนที่พื้นหลังมืด light wrap แทบไม่มีอะไร ซึ่งถูกต้องแล้ว

ปิด-เปิด light wrap สลับดู ควรรู้สึกว่าขอบ "เข้าที่" ไม่ใช่ "เรืองแสง"

เมื่อไรไม่ควรใช้ light wrap

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

4 ในงานจริง

ทำใน Nuke

  1. Blur พื้นหลังขนาดใหญ่ ให้ bbox อยู่ในเฟรม ไม่ดึงดำจากนอกเฟรม
  2. Blur alpha ของหุ่นยนต์ → Merge (stencil) alpha ที่ blur ออกจาก alpha เดิม ได้แถบขอบด้านใน
  3. Merge (mask) ให้ BG ที่ blur เหลือเฉพาะในแถบขอบ
  4. Merge (plus) ลงบน comp ตั้ง output เป็น rgb และลด mix ลงมาก
  5. Nuke มีโหนด LightWrap สำเร็จรูปด้วย ลองต่อเองสักครั้งก่อน จะเข้าใจว่าแต่ละปุ่มทำอะไร

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

  • ✗ light wrap กินเข้าไปทั้งตัวหุ่นยนต์✓ จำกัดด้วยแถบขอบบาง ๆ ด้านใน และลด blur ของ alpha
  • ✗ ใช้ screen รวม wrap บนพื้นหลัง HDR✓ ใช้ plus แล้วคุมความแรงด้วย mix
  • ✗ ปล่อยให้ wrap ไปแก้ alpha ด้วย✓ ตั้ง Merge ให้ output แค่ rgb
  • ✗ ใช้ wrap แทน glow ของแสงจ้า✓ แสงจ้าให้ใช้ glow ทับทั้งภาพ wrap ไว้สำหรับความฟุ้งเล็ก ๆ ที่ขอบ

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

  • wrap อยู่เฉพาะขอบด้านใน ไม่ล้นออกนอกตัว
  • สีของ wrap มาจากพื้นหลังตรงนั้นจริง
  • ตรงที่พื้นหลังมืด wrap แทบไม่มี
  • ไม่มีขอบดำจากนอกเฟรมถูก blur เข้ามา
  • ปิด-เปิดแล้วรู้สึกต่าง แต่ชี้ไม่ได้ว่าตรงไหน

5 เช็กตัวเอง

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

light wrap ที่ดีควรเห็นชัดแค่ไหน

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

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

คำถามเพิ่ม

1. light wrap ควรอยู่ตรงไหนของภาพ

2. รวม light wrap ลง comp ด้วย Merge แบบไหน

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