1 อธิบาย
ประกายไฟชุดนี้เป็น element แสง ค่าที่แกนสูงถึงราว 62 (เกิน 1 ไปมาก) และ alpha เป็น 0 เหมือน element ไฟจริง แสงในโลกจริงบวกกัน ใช้ plus จะได้ค่าแสงครบ
screen ใน Nuke ใช้สูตร A + B − AB เฉพาะตอนค่าอยู่ระหว่าง 0 ถึง 1 ถ้าเกิน 1 จะคืนค่า max(A, B) ส่วนที่เป็นแสงสว่างจึงไม่ถูกบวกกับ plate ลองชี้อ่านค่าที่ขอบฟุ้งของประกายไฟ รอบ ๆ แกน
plus: A + B · screen (Nuke): A + B − AB if A, B in 0–1, else max(A, B)2 ลงมือใน mini compositor
โจทย์: เปลี่ยน operation ให้แสงบวกเข้ากับ plate เต็ม ๆ
ลองลด gain ของ Viewer ลงเหลือประมาณ 0.1 จะเห็นว่าค่าแสงหายไปตรงไหน
3 เจาะลึก
แสงมีแต่บวก
ไฟสองดวงส่องผนังเดียวกัน ความสว่างที่ได้คือผลรวม ประกายไฟ ไฟ glow แสงแฟลร์ และ light group จาก CG จึงใช้ plus = A + B ซึ่งเก็บพลังงานแสงไว้ครบ
plus สลับลำดับได้ A + B = B + A จะต่อ element แสงหลายตัวเรียงแบบไหนผลก็เท่ากัน
screen ทำอะไรกับค่า HDR
ตัวเลขด้านล่างวัดจาก Nuke จริง พอค่าใดค่าหนึ่งเกิน 1 screen จะคืนแค่ค่าที่มากกว่า แสงของ plate ใต้ประกายไฟหายไปทั้งก้อน
| A (แสง) | B (plate) | plus | screen |
|---|---|---|---|
| 0.8 | 0.6 | 1.4 | 0.92 |
| 2.0 | 0.5 | 2.5 | 2.0 |
| 1.5 | 1.2 | 2.7 | 1.5 |
overlay, soft-light, color-dodge ก็พังเมื่อเกิน 1 เหมือนกัน อย่าใช้กับภาพ linear
คุมความแรงของแสง
แสงแรงเกิน ให้ลดที่สายของมันก่อน merge ด้วย Grade (multiply) ซึ่งเปลี่ยนสีได้ด้วย หรือใช้ช่อง mix ของ Merge: ผลคือ B + mix·(ผลของ op − B) สำหรับ plus ที่ mix 0.5 ได้ B + 0.5·A
อย่าลดแสงด้วยการเปลี่ยนเป็น screen เพราะมันไม่ได้แค่ลด แต่ตัดพลังงานทิ้ง
- 1Read sparks
- 2Grade (multiply, สี)
- 3Merge plus (A)
- 4plate (B)
แสง หรือ สสาร
ถามตัวเองก่อน merge: element นี้ปล่อยแสง หรือบังแสง ถ้าปล่อยแสงใช้ plus ถ้าบังแสง เช่น ควัน ฝุ่น หิมะ ต้อง over พร้อม alpha จริง
| element | Merge | เหตุผล |
|---|---|---|
| ประกายไฟ, glow | plus | แสงล้วน |
| light group จาก CG | plus | รวมกันได้เป็น beauty |
| ควัน, ฝุ่น | over | บังพื้นหลัง |
| หิมะ | over | เป็นของทึบ ไม่ใช่แสง |
4 ในงานจริง
ทำใน Nuke
- Read sparks (EXR, linear, alpha 0) → Grade (multiply คุมความแรงและสี)
- Merge operation plus: sparks เข้า A plate เข้า B
- มีแสงหลายชั้น: ต่อ Merge plus เรียงกันได้เลย ลำดับไม่สำคัญ
- ลดความแรงด้วย Grade multiply หรือ mix ของ Merge ไม่ใช่ screen
- เช็กด้วย Viewer gain ประมาณ 0.1 แกนแสงยังต้องสว่างกว่า plate
พลาดบ่อย → แก้ยังไง
- ✗ ใช้ screen กับประกายไฟ HDR✓ เกิน 1 จะได้ max(A, B) แสงหาย ใช้ plus
- ✗ เซฟ element แสงเป็น PNG/JPG 8-bit✓ ไฟล์ 8-bit ตัดที่ 1 แกนแสงแบน ใช้ EXR float
- ✗ plus ควันเข้าไป✓ ควันจะเรืองเหมือนแสง ใช้ over กับ alpha
- ✗ เปิด (un)premult by ใน Grade ของประกายไฟที่ alpha เป็น 0✓ ใน Nuke พิกเซล alpha 0 จะกลายเป็น 0 ทุกช่อง ประกายไฟหายหมด ให้ปิดช่องนี้ (ดู F4)
เช็กก่อนส่งช็อต
- element แสงทุกตัวเข้าด้วย plus
- ไม่มี screen, overlay, soft-light บนค่าเกิน 1
- element แสงเป็น float ไม่ถูกตัดที่ 1
- ลด gain ของ Viewer แล้วแกนแสงยังอยู่
5 เช็กตัวเอง
element ไฟ/ประกายที่ alpha = 0 ถ้าใช้ Merge over จะได้ผลเหมือนอะไร
🔒 ตอบคำถามด้านบนก่อน แล้วการ์ดนี้จะเปิด
1. ใน Nuke ใช้ screen กับ A = 2.0 และ B = 0.5 ได้เท่าไร
2. ประกายไฟแรงเกินไป ควรแก้ที่ไหน
ตัวเลขมาจากไหน: สูตร Merge, Grade, Premult, Unpremult ในห้องนี้ตรงกับ Nuke 17.0v2 ครบ 109 กรณีทดสอบ (เทียบตัวเลขจาก Nuke จริง) ส่วน Blur และ Transform เป็นแบบง่าย ใกล้เคียงแต่ไม่เท่า Nuke เป๊ะ ภาพทั้งหมดเรนเดอร์จาก Blender จากฉากของเราเอง: วางฉากด้วยโค้ด ภูเขาเป็น terrain ที่สร้างใน Gaea 2.3 (Community, build แบบ headless) ท้องฟ้าเป็น HDRI CC0 จาก Poly Haven หินและหญ้าแห้งจาก Poly Haven (CC0) texture ทรายและหินผาจาก Quixel และหุ่นบน rig จาก Mixamo (Quixel และ Mixamo ใช้ในเรนเดอร์เท่านั้น ไม่มีไฟล์ต้นฉบับแจก)