หน้าแรก · Lab · Integration

I6 ประกอบ AOV กลับเป็น beauty

ในห้องนี้: diffuse + glossy + emission = beauty

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

1 อธิบาย

Render pass (AOV) แยกแสงออกเป็นส่วน ๆ ใน Blender: diffuse = (direct + indirect) × color, glossy แบบเดียวกัน แล้วบวก emission เมื่อ plus กลับครบจะได้ beauty (ในห้องนี้ต่างกันเฉลี่ยแค่ 0.0002)

ข้อดี: grade ส่วนเดียวได้ เช่นลด spec โดยไม่แตะ diffuse ในห้องนี้ alpha อยู่กับ diffuse เพื่อให้ plus แล้ว alpha ไม่ซ้อน

2 ลงมือใน mini compositor

โจทย์: ต่อ emission เข้า Merge ตัวที่สองให้ได้ beauty ครบ

ลากจากจุดล่างของ "Read emission" ไปจุด A ของ "Merge plus 2"

SkyVFX mini compositor · I6640×360 · float · 1001

3 เจาะลึก

แสงบวกกัน เท็กซ์เจอร์คูณ

beauty คือผลรวมของแสงทุกส่วน แสงตรง (direct) กับแสงสะท้อน (indirect) ของชนิดเดียวกันบวกกัน แล้วคูณกับสีของวัสดุ (albedo หรือ Col) จากนั้นบวกทุกชนิดรวมกับ emission

Blender Cycles ให้ pass ชิ้นเล็กสุด เช่น Diff = DiffCol × (DiffDir + DiffInd) และ Gloss = GlossCol × (GlossDir + GlossInd) แล้ว beauty ≈ Diff + Gloss + Trans + Emit + Env (+ Volume ถ้ามี)

  1. 1Shuffle แต่ละ pass
  2. 2Dir + Ind
  3. 3× Col
  4. 4Plus ทุกชนิด
  5. 5เทียบกับ beauty

พิสูจน์ว่า rebuild = beauty ก่อน

ก่อน grade อะไร ให้ Merge แบบ difference ระหว่างผลรวมกับ beauty แล้วยก gain ของ viewer ต้องดำทั้งภาพ ถ้าไม่ดำ แปลว่ามี pass หาย เช่น emission หรือแสงที่ไม่ได้อยู่ในกลุ่มไหน

ส่วนที่ขาดเก็บเป็น leftover = beauty − ผลรวม แล้วบวกกลับให้ตรง 1:1 แต่ระวังกับ pass ที่ denoise แยกกันทีละ pass เพราะผลรวมของ pass ที่ denoise แยก ไม่เท่ากับ beauty ที่ denoise leftover จะกลายเป็นรอยด่าง

ใช้แค่ pass ที่ยังไม่ grade ในการเช็ก difference

Grade ทีละ pass แบบ lighter

unpremult ทุก channel ก่อน grade แล้ว copy alpha เดิมกลับและ premult ตอนท้าย (render บางตัว เช่น Blender อาจเก็บ pass แสงไม่เหมือนกับ pass สี ให้ลอง over ผลรวมบนพื้นเทากลางแล้วดูขอบก่อน) ใช้การคูณเป็นหลัก ปรับความแรงเป็น stop: gain = 2^stop (+1 stop = ×2, −1 stop = ×0.5) การคูณสลับลำดับได้และย้อนกลับได้ จึงส่งค่ากลับไปให้ lighter ปรับไฟใน 3D ได้

อย่าใส่ lift หรือ offset ในแต่ละ pass เพราะเมื่อบวกกัน N pass ค่าที่ยกจะซ้อนกัน N เท่า ถ้าต้องยกดำ ทำครั้งเดียวหลังรวมแล้ว และอย่าใช้ lift ติดลบเพื่อทำให้มืด เพราะจะบี้ส่วนมืด (เหลือ 0 เมื่อเปิด black_clamp ซึ่งเปิดอยู่เป็นค่าเริ่มต้น หรือติดลบถ้าปิด) และเพราะ lift หมุนรอบ 1 ค่าที่เกิน 1 จะถูกดันสูงขึ้น

  1. 1Unpremult (all)
  2. 2Grade คูณ / stop
  3. 3Copy alpha
  4. 4Premult

หารลงจาก pass ใหญ่ที่เชื่อได้

หารเพื่อแยก ปรับ แล้วคูณกลับ: raw = diffuse ÷ albedo ปรับ albedo คือเปลี่ยนวัสดุ ปรับ raw คือเปลี่ยนแสง บางครั้ง pass ชิ้นเล็กคูณกันแล้วไม่ตรงกับ pass ใหญ่ ให้เริ่มจาก pass ที่เชื่อได้ เช่น diffuse = beauty − ทุกอย่างที่ไม่ใช่ diffuse แล้วหาร-คูณกับมัน ผลจะตัดกันพอดี

Merge แบบ divide ใน Nuke ปลอดภัย (ทดสอบแล้ว) ถ้าตัวหารเป็น 0 หรือติดลบ มันคืนค่า A เดิม ไม่เกิด NaN ข้อควรระวัง: ตอนส่งการแก้แบบอัตราส่วน จุดที่ beauty เป็น 0 หรือติดลบ ผลจะเป็น AOVcomp เอง ไม่ใช่ 1 ให้เช็กบริเวณดำก่อนคูณเข้ากับ light group comp ส่วน Expression ที่เขียน r/0 เองจะได้ inf, -inf หรือ NaN (กรณี 0/0) ต้องกันด้วยเงื่อนไข

Light group และการใช้คู่กับ AOV

light group แต่ละกลุ่มคือ beauty ย่อยของไฟดวงนั้น plus ทุกกลุ่มรวมกันก็ได้ beauty เช่นกัน ห้ามบวก light group เข้ากับ material AOV เพราะแต่ละชุดรวมเป็น beauty ได้เองอยู่แล้ว

ถ้าแก้ทั้งสองชุด ให้ส่งการแก้ของชุด AOV ไปเป็นอัตราส่วน: final = LGcomp × (AOVcomp ÷ beauty) ห้ามใช้การลบ เพราะถ้าทั้งสองชุดทำให้มืด แสงจะถูกลบซ้ำสองครั้งจนติดลบ และ denoise เฉพาะ pass ที่ noise เยอะ (indirect, SSS, transmission) pass direct มักสะอาดอยู่แล้ว

ส่งการแก้แบบผล
อัตราส่วน (หาร แล้วคูณ)ไม่ติดลบ สลับลำดับได้
ลบ แล้วบวกมืดซ้ำสองชั้น ค่าติดลบ สีเพี้ยน

4 ในงานจริง

ทำใน Nuke

  1. Unpremult (channels: all) ที่ต้น tree, Shuffle แต่ละ pass ออกมา
  2. Merge (plus) Dir + Ind → Merge (multiply) กับ Col ต่อชนิด → Merge (plus) ทุกชนิดรวมกับ Emit/Env
  3. Merge (difference) กับ beauty แล้วยก viewer gain ต้องดำ
  4. Grade หรือ Exposure (โหมด stops) บน pass เดียว ใช้ multiply/gain เป็นหลัก
  5. Copy alpha เดิมกลับ → Premult
  6. ใช้ทั้งสองชุด: Merge (divide) A = AOV comp, B = beauty แล้ว Merge (multiply) เข้ากับ light group comp

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

  • ✗ เริ่ม grade โดยไม่เช็กว่า rebuild เท่ากับ beauty✓ difference ต้องดำก่อน ค่อยแตะสี
  • ✗ บวก light group เข้ากับ material AOV✓ แต่ละชุดรวมเป็น beauty เอง ใช้ชุดเดียว หรือเชื่อมด้วยอัตราส่วน
  • ✗ ใส่ lift ในทุก pass✓ grade แต่ละ pass ด้วยการคูณ ยกดำครั้งเดียวหลังรวม
  • ✗ Unpremult แค่ rgb แล้ว grade AOV✓ ตั้ง Unpremult เป็น all ไม่อย่างนั้น AOV ยัง premult อยู่และขอบเพี้ยน
  • ✗ ส่งการแก้จาก AOV ไป light group ด้วยการลบ✓ ใช้ LGcomp × (AOVcomp ÷ beauty)

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

  • difference ระหว่าง rebuild กับ beauty ดำทั้งภาพก่อน grade
  • grade แต่ละ pass ด้วยการคูณ เป็น stop
  • Unpremult เป็น all และ premult ครั้งเดียวตอนท้าย
  • ไม่มีค่าติดลบหรือ NaN หลังรวม
  • ถ้าใช้ light group กับ AOV คู่กัน ส่งการแก้เป็นอัตราส่วน

5 เช็กตัวเอง

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

จะลด spec ของหุ่นอย่างเดียว ทำที่ไหน

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

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

คำถามเพิ่ม

1. difference ระหว่างผลรวม pass กับ beauty ไม่ดำ ควรทำอะไรก่อน

2. แก้ทั้งชุด light group และชุด material AOV แล้ว จะรวมผลอย่างไร

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