1 อธิบาย
light group คือหุ่นยนต์ทั้งตัวที่ถูกส่องด้วยไฟดวงเดียว เอาทุก group มา plus กันจะได้ beauty กลับมา (ใน render float ของเราต่างกันมากสุด 0.000004) จึงปรับไฟแต่ละดวงใน comp ได้โดยไม่ต้อง render ใหม่
เลื่อน slider exposure ของ key, fill, rim และ emission (หน่วยเป็น stop) แล้วดูลูกบอลเทาสองลูกใต้ภาพ ลูก CG ต้องเหมือนลูก plate ทั้งด้านโดนแดด ด้านเงา และขอบหลัง readout บอกว่าแต่ละด้านยังห่างเท่าไร และ view “Σ − beauty ×50” บอกว่าผลรวมครบหรือไม่
beauty = Σ light groups · gain = 2^stops2 ลงมือลอง
โจทย์: ปรับ light group ให้ลูก CG ตรงกับลูก plate ด้านโดนแดด ด้านเงา และขอบหลังห่างไม่เกิน 8% และ rim ต่ำกว่าหรือเท่ากับ −4 stops (ที่ −6 คือปิด)
ตอนเริ่ม ด้านโดนแดดห่างราว 11% ด้านเงาราว 135% ด้านโดนแดดขึ้นกับ key มากที่สุด ส่วนด้านเงาได้แสงจาก fill (ท้องฟ้า) แก้ทีละด้าน แล้วถามตัวเองว่าใน plate มีอะไรส่องขอบด้านหลังบ้าง
3 เจาะลึก
light group คือ beauty ย่อส่วน
แต่ละ light group คือหุ่นยนต์ทั้งตัวที่ถูกส่องด้วยไฟดวงเดียว ข้างในมีทุกอย่างที่ไฟดวงนั้นสร้าง ทั้ง diffuse, spec และส่วนอื่น ปรับ group ไหน ทุก material ที่ไฟดวงนั้นส่องก็เปลี่ยนตาม
ใน Blender Cycles ไฟ วัตถุที่เปล่งแสง และ world ต่างก็ได้ light group ของตัวเอง และแต่ละ group ออกมาเป็น pass แยก หุ่นยนต์ของเรามีสี่ group
| Group | ไฟ | ต้นแสงใน plate |
|---|---|---|
| key | ดวงอาทิตย์ | มี ดวงอาทิตย์ของ plate |
| fill | ท้องฟ้า | มี ท้องฟ้าของ plate |
| rim | ไฟเสริมด้านหลังหุ่นยนต์ | ไม่มี |
| emission | visor และปลายเสาอากาศ | ตัวหุ่นยนต์เอง |
เช็กผลรวมก่อนปรับ
การ rebuild จาก light group ง่ายมาก แค่ shuffle แต่ละ group ออกมาแล้ว plus รวมกัน ไม่ต้องคูณหรือหาร จากนั้นเทียบกับ beauty อะไรที่ไม่อยู่ใน group เช่นไฟที่ลืมใส่ หรือ emission ที่ไม่มี group จะหายจากผลรวมและโผล่ใน difference
ใน render float ของเราที่ปิด denoise ผลรวมสี่ group ลบ beauty ต่างกันมากสุด 0.000004 ส่วน readout ใน figure คำนวณจากข้อมูล half-float ที่ส่งมาที่เบราว์เซอร์ จึงเห็นค่ามากกว่านี้เล็กน้อย จำไว้ว่า material AOV กับ light group ต่างก็ rebuild beauty ได้ครบในตัวเอง ห้ามบวกชุดหนึ่งเข้ากับอีกชุด
- 1Shuffle แต่ละ group
- 2Plus รวมกัน
- 3Difference กับ beauty
- 4ดัน gain ของ viewer
- 5ต้องเกือบดำ
stop และ multiply เท่านั้น
gain = 2^stops: +1 stop คือ ×2, −1 stop คือ ×0.5, +3 stop คือ ×8 exposure กับ multiply สีคือสิ่งที่ lighter ใช้ตั้งไฟอยู่แล้ว ค่าที่ปรับใน comp จึงส่งกลับไปให้ lighting ได้ และผลรวมยังสะอาด
lift กับ offset บวกค่าเข้าไปแทนการคูณ ใส่ offset ทั้งสี่ group ผลรวมจะได้ offset สี่เท่า ดำยกขึ้นทั้งภาพ ถ้าติดลบก็กดโทนมืดจนแบน (เป็น 0 เมื่อ black clamp ของ Grade เปิดอยู่ตามค่า default และต่ำกว่า 0 เมื่อปิด) ส่วน gamma ไม่เป็นเส้นตรง ผลรวมของ group ที่ปรับแล้วจึงไม่เท่ากับภาพรวมที่ปรับ ถ้าช็อตต้องยก lift ให้ทำครั้งเดียวหลัง rebuild
| การปรับ | ผลรวมยังสะอาด | ส่งกลับให้ lighting ได้ |
|---|---|---|
| Exposure (stop) | ได้ | ได้ |
| Multiply สี | ได้ | ได้ |
| Lift / offset | ไม่ได้ | ไม่ได้ |
| Gamma | ไม่ได้ | ไม่ได้ |
เทียบกับแสงของ plate ไม่ใช่ตามใจ
ลูก plate คือลูกบอลเทา albedo 18% ที่ render ในแสงอาทิตย์และท้องฟ้าของ plate เอง เป็น reference แบบที่ถ่ายไว้ในกองถ่าย ลูก CG ผ่าน slider ชุดเดียวกับหุ่นยนต์ เมื่อสองลูกตรงกัน แสงบนหุ่นยนต์ก็ตรงกับ plate ด้วย key คุมด้านสว่างเป็นหลัก ด้านเงาได้แสงจากท้องฟ้าคือ fill
rim ไม่มีต้นแสงใน plate จะสวยแค่ไหนก็ต้องเอาออก ไฟ CG ดวงไหนที่ plate ไม่มีอะไรสร้างได้ก็เช่นกัน
mute ไฟที่ไม่ใช้แทนการลบ จนกว่า look จะ final
4 ในงานจริง
ทำใน Nuke
- Shuffle2: ดึง light group แต่ละ layer ออกมาเป็น rgba ทีละ group
- Merge2 (plus) รวมทุก group แล้ว Merge2 (difference) กับ beauty ดัน gain ของ viewer ต้องเกือบดำทั้งภาพ
- EXPTool (Exposure) บนแต่ละ group เปลี่ยน mode เป็น Stops ก่อน เพราะเปิดมาเป็น Densities
- Multiply สำหรับสีของแต่ละ group หรือใช้ Grade โดยปรับแค่ multiply/gain และปล่อย lift กับ offset ไว้ค่าเดิม
- Copy alpha ของ beauty กลับมาที่ภาพที่ rebuild แล้ว Merge2 (over) ลงบน plate
พลาดบ่อย → แก้ยังไง
- ✗ บวก material AOV เข้ากับ light group ในผลรวมเดียว✓ เลือกชุดเดียว แต่ละชุด rebuild beauty ได้ครบในตัวเอง บวกกันแสงจะเป็นสองเท่า
- ✗ ลด light group ด้วย lift หรือ offset ติดลบ✓ ใช้ stop ติดลบหรือ multiply ต่ำกว่า 1 ผลรวมจะลงตัวและไม่ติดลบ
- ✗ เก็บไฟ CG ที่ plate ไม่มีต้นแสงไว้เพราะดูสวย✓ ถ้าไม่มีอะไรใน plate สร้างแสงนั้นได้ ให้ mute ทิ้ง
- ✗ ปรับ group เลยโดยไม่เช็กว่า Σ groups = beauty✓ ดู difference ก่อน ถ้ามี emission หรือไฟที่ไม่อยู่ใน group ต้องเอาเข้ามาใน rebuild
- ✗ ปล่อย Exposure node ไว้ที่ Densities✓ เปลี่ยน mode เป็น Stops ให้ค่าตรงกับ stop ของ lighter
เช็กก่อนส่งช็อต
- Σ groups − beauty เกือบดำเมื่อดัน gain ของ viewer
- บน group มีแค่ Exposure (Stops) และ multiply
- ไฟทุกดวงที่เหลือมีต้นแสงใน plate
- ลูกเทา CG ตรงกับ reference ทั้งด้านสว่างและด้านเงา
- จดค่า stop และสีของแต่ละ group ไว้ส่งกลับให้ lighting
5 เช็กตัวเอง
fill group แรงไป จะลดอย่างไรให้ rebuild ยังสะอาด
🔒 ตอบคำถามด้านบนก่อน แล้วการ์ดนี้จะเปิด
1. view Σ groups − beauty มีรูป visor และปลายเสาอากาศสว่างขึ้นมา หมายความว่าอะไร
2. lighter บอกให้เพิ่ม key +1 stop คุณใส่ 1 ใน Exposure แต่ภาพไม่สว่างขึ้นสองเท่า น่าจะเป็นเพราะอะไร
ตัวเลขมาจากไหน: ภาพทั้งหมด render ด้วย Blender 5.2 Cycles จากฉากทะเลทรายและหุ่นยนต์ของเราเอง (tools/assets/passes_cg.py) แล้วคำนวณในเบราว์เซอร์ ปิด denoise เพื่อให้ light group บวกกันได้ตรง (ต่างกันมากสุด 0.000004) ลูก plate คือลูกบอลเทา albedo 18% ที่ render แยกในแดดและท้องฟ้าของ plate เอง แสงแบบที่ส่งมา (key ต่ำไป fill สูงไป มี rim) เราตั้งขึ้นเองสำหรับแบบฝึกนี้ readout Σ − beauty ใน figure คำนวณจากข้อมูล half-float ที่ส่งมาที่เบราว์เซอร์ จึงเห็นค่ามากกว่านี้เล็กน้อย ลูกสองลูกเป็น render คนละครั้งที่มี noise ของตัวเอง เกณฑ์ (8%) จึงคิดจาก error ที่เหลืออยู่เมื่อแก้ถูกพอดี Exposure ในนี้คือ gain = 2^stops แบบเดียวกับ Exposure ของ Nuke ใน mode Stops