1 อธิบาย
ลูกบาศก์ไม่ได้บอกว่าตัวเลขบนแกนหมายถึงอะไร ถ้าแกนเป็นค่า linear (ปริมาณแสง) plate ของเราจะกองอยู่ใกล้มุมดำ ครึ่งหนึ่งของพิกเซลอยู่ต่ำกว่าราว 0.14 ของแกนเทา
เปลี่ยนพิกัดเป็น sRGB หรือ LogC3 แล้วกลุ่มจุดเดิมจะยืดขึ้น โทนมืดได้พื้นที่มากขึ้น บันได stop สีฟ้าบอกว่าแต่ละแบบแบ่งพื้นที่ให้แต่ละ stop เท่าไหร่
2 ลงมือลอง
โจทย์: เลือกพิกัดที่ยกพิกเซลครึ่งหนึ่งของ plate ให้สูงอย่างน้อย 1/3 ของแกนเทา
ลองทั้ง sRGB และ LogC3 แล้วเปิด Comp + sparks ดูว่าแบบไหนเก็บ sparks ไว้ในลูกบาศก์ได้
3 เจาะลึก
บันได stop ในสามพิกัด
ใน linear แต่ละ stop ที่ต่ำลงได้พื้นที่ครึ่งหนึ่งของขั้นบน หกขั้นใต้เทากลางจึงเบียดกันอยู่ในราว 0.18 แรกของแกน sRGB ยืดโทนมืดออก ส่วน LogC3 ให้แต่ละ stop ใกล้เคียงกัน (ราว 0.07 ต่อ stop รอบเทากลาง)
| stop จากเทากลาง | linear | sRGB | LogC3 |
|---|---|---|---|
| −4 | 0.011 | 0.108 | 0.153 |
| −2 | 0.045 | 0.235 | 0.257 |
| 0 | 0.180 | 0.461 | 0.391 |
| +1 | 0.360 | 0.634 | 0.463 |
| +2 | 0.720 | 0.865 | 0.536 |
เลือกพิกัดตามงาน
คณิตของแสง (merge, blur, defocus, motion blur) ต้องทำใน linear เพราะเป็นการบวกและเฉลี่ยปริมาณแสง ส่วนงานที่อยากให้ทุก stop ถูกปฏิบัติเท่ากัน เช่น grade ไฟที่สว่างมาก ๆ หรือการ blur ที่ไม่อยากให้จุดสว่างกระจายแรง มักทำใน log แล้วแปลงกลับ
- 1linear: คณิตแสง
- 2log: grade/กรองค่า HDR
- 3sRGB: แค่ตอนดู
sparks ทำให้เห็นเพดาน
ค่า sparks สูงสุดในจุดที่สุ่มมาราว 60 ในช่องแดง ใน sRGB จะเป็นราว 5.7 ซึ่งหลุดลูกบาศก์ไปไกล ใน LogC3 อยู่ที่ราว 1.01 คือเกือบพอดีกล่อง นี่คือเหตุผลที่ log ใช้เก็บช่วงแสงกว้าง ๆ ได้
ตัวเลขเดิม แค่เปลี่ยนไม้บรรทัดที่ใช้วัด
4 ในงานจริง
ทำใน Nuke
- Colorspace: แปลง linear → sRGB หรือ linear → AlexaV3LogC ในสาขาที่ใช้ดูหรือใช้ทำงานเฉพาะจุด
- Log2Lin หรือ OCIOColorSpace: เข้าไป log แล้วกลับออกมาให้ตรงคู่กันเสมอ
- PositionToPoints: ต่อจาก Colorspace คนละแบบ เพื่อเทียบกลุ่มจุดใน 3D Viewer
- Viewer: ค่าที่ sample ได้เป็นค่าใน graph เสมอ ไม่ว่า Viewer จะแสดงด้วย view แบบไหน
พลาดบ่อย → แก้ยังไง
- ✗ blur หรือ defocus ภาพที่แปลงเป็น sRGB ไว้กลาง graph✓ ทำใน linear ถ้าตั้งใจใช้ log ให้แปลงเข้าและออกเป็นคู่
- ✗ แปลงเข้า log แต่ลืมแปลงกลับ✓ วาง node เข้าและออกคู่กันใน backdrop เดียว แล้วเช็กด้วย difference ว่าวนกลับได้ค่าเดิม
- ✗ คิดว่าภาพ linear ที่ดูมืดคือภาพผิด✓ ดูผ่าน view ที่ถูก ค่าที่มืดในลูกบาศก์ linear คือปกติ
เช็กก่อนส่งช็อต
- merge, blur, defocus ทำใน linear
- ทุกการเข้า log มีการออกที่ตรงคู่
- ไม่มี Colorspace ที่ใช้ "ดู" ค้างอยู่ในสาย comp
5 เช็กตัวเอง
ในพิกัด LogC3 บันได stop รอบเทากลางเว้นระยะยังไง
🔒 ตอบคำถามด้านบนก่อน แล้วการ์ดนี้จะเปิด
1. ใน linear ครึ่งหนึ่งของพิกเซล plate อยู่ต่ำกว่าราว 0.14 แปลว่า plate มืดเกินไปไหม
2. อยากเบลอไฟระเบิดที่ค่าสูงมากโดยไม่ให้จุดสว่างกระจายแรง ทำยังไงดี
ตัวเลขมาจากไหน: สูตรสีมาจาก src/figures/colormath.ts (sRGB IEC 61966-2-1, ARRI LogC3 EI 800, primaries ของ sRGB/P3/Rec.2020/ACES AP1 และ Bradford ซึ่งตรวจกับตัวเลขอ้างอิงแล้ว) ความสูงบนแกนเทา = ค่าเฉลี่ยของสามช่องหลังแปลง วัดจาก 25,680 พิกเซลของ plate: median linear 0.140, sRGB 0.406, LogC3 0.363 ค่า sparks สูงสุดในจุดชุดนี้ (~60 ในช่องแดง) เป็น LogC3 ได้ราว 1.01