หน้าแรก · Lab · ระบบสีแบบ 3D

CS2 Linear กับ sRGB ในลูกบาศก์

พิกเซลเดียวกัน พิกัดต่างกัน ดูโทนมืดถูกยืด

ระบบสีแบบ 3D · ~6 นาที · ฟรี

1 อธิบาย

ลูกบาศก์ไม่ได้บอกว่าตัวเลขบนแกนหมายถึงอะไร ถ้าแกนเป็นค่า linear (ปริมาณแสง) plate ของเราจะกองอยู่ใกล้มุมดำ ครึ่งหนึ่งของพิกเซลอยู่ต่ำกว่าราว 0.14 ของแกนเทา

เปลี่ยนพิกัดเป็น sRGB หรือ LogC3 แล้วกลุ่มจุดเดิมจะยืดขึ้น โทนมืดได้พื้นที่มากขึ้น บันได stop สีฟ้าบอกว่าแต่ละแบบแบ่งพื้นที่ให้แต่ละ stop เท่าไหร่

2 ลงมือลอง

โจทย์: เลือกพิกัดที่ยกพิกเซลครึ่งหนึ่งของ plate ให้สูงอย่างน้อย 1/3 ของแกนเทา

ลองทั้ง sRGB และ LogC3 แล้วเปิด Comp + sparks ดูว่าแบบไหนเก็บ sparks ไว้ในลูกบาศก์ได้

SkyVFX Lab · CS2interactive · 1001

3 เจาะลึก

บันได stop ในสามพิกัด

ใน linear แต่ละ stop ที่ต่ำลงได้พื้นที่ครึ่งหนึ่งของขั้นบน หกขั้นใต้เทากลางจึงเบียดกันอยู่ในราว 0.18 แรกของแกน sRGB ยืดโทนมืดออก ส่วน LogC3 ให้แต่ละ stop ใกล้เคียงกัน (ราว 0.07 ต่อ stop รอบเทากลาง)

stop จากเทากลางlinearsRGBLogC3
−40.0110.1080.153
−20.0450.2350.257
00.1800.4610.391
+10.3600.6340.463
+20.7200.8650.536

เลือกพิกัดตามงาน

คณิตของแสง (merge, blur, defocus, motion blur) ต้องทำใน linear เพราะเป็นการบวกและเฉลี่ยปริมาณแสง ส่วนงานที่อยากให้ทุก stop ถูกปฏิบัติเท่ากัน เช่น grade ไฟที่สว่างมาก ๆ หรือการ blur ที่ไม่อยากให้จุดสว่างกระจายแรง มักทำใน log แล้วแปลงกลับ

  1. 1linear: คณิตแสง
  2. 2log: grade/กรองค่า HDR
  3. 3sRGB: แค่ตอนดู

sparks ทำให้เห็นเพดาน

ค่า sparks สูงสุดในจุดที่สุ่มมาราว 60 ในช่องแดง ใน sRGB จะเป็นราว 5.7 ซึ่งหลุดลูกบาศก์ไปไกล ใน LogC3 อยู่ที่ราว 1.01 คือเกือบพอดีกล่อง นี่คือเหตุผลที่ log ใช้เก็บช่วงแสงกว้าง ๆ ได้

ตัวเลขเดิม แค่เปลี่ยนไม้บรรทัดที่ใช้วัด

4 ในงานจริง

ทำใน Nuke

  1. Colorspace: แปลง linear → sRGB หรือ linear → AlexaV3LogC ในสาขาที่ใช้ดูหรือใช้ทำงานเฉพาะจุด
  2. Log2Lin หรือ OCIOColorSpace: เข้าไป log แล้วกลับออกมาให้ตรงคู่กันเสมอ
  3. PositionToPoints: ต่อจาก Colorspace คนละแบบ เพื่อเทียบกลุ่มจุดใน 3D Viewer
  4. 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 เช็กตัวเอง

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

ในพิกัด 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