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

CS4 สายพานสี ACES/OCIO

แปลงเข้า → ทำงานใน ACEScg → แปลงออก แล้วซ่อมขั้นที่พัง

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

1 อธิบาย

pipeline แบบ ACES ตั้งสีสามจุด: input transform ตอนอ่านไฟล์ (บอกว่าไฟล์มาจากไหน), working space ที่ใช้คำนวณ (ACEScg) และ view/output transform ตอนดูหรือส่งงาน ระหว่างทางทุกอย่างเป็น linear ACEScg

ช็อตนี้ตั้งผิดทั้งสามขั้น ตอนเริ่มชาร์ตสีดู "ปกติ" เพราะความผิดสองอย่างหักล้างกัน พอซ่อม view ชาร์ตจะอิ่มเกินทันที นั่นคือกับดัก texture ที่แปลงแค่ gamma

2 ลงมือลอง

โจทย์: ตั้งทั้งสามขั้นให้ภาพตรงกับภาพอ้างอิง

เลื่อน wipe เทียบภาพของเรา (ซ้าย) กับภาพอ้างอิง (ขวา)

SkyVFX Lab · CS4interactive · 1001

3 เจาะลึก

สามจุดที่ต้องตั้งสี

ฟุตเทจควรถูกแปลงแค่สองครั้ง: ครั้งเดียวขาเข้าไปยัง working space และครั้งเดียวขาออกต่อหนึ่งงานส่ง ทุกอย่างระหว่างนั้นอยู่ใน ACEScg แบบ linear ส่วนการดูบนจอเป็นแค่ "แว่น" ที่ไม่แตะข้อมูล

  1. 1Input transform (Read)
  2. 2ACEScg: comp
  3. 3View (Viewer)
  4. 4Output (Write)

เลือก input transform ให้ตรงไฟล์

ถามก่อนว่าไฟล์นี้ "เป็น" อะไร ไม่ใช่อยากให้ "ดู" เป็นอะไร ไฟล์จาก render เป็น ACEScg อยู่แล้วก็ระบุ ACEScg ไฟล์ linear ที่ primaries เป็น Rec.709 ต้องแปลง primaries ภาพถ่าย sRGB ต้องถอดเส้นโค้งและแปลง primaries ส่วนแผนที่ข้อมูลอย่าง normal หรือ roughness ต้องเป็น Raw

ไฟล์input transform
EXR จาก render ที่เป็น ACEScgACEScg
EXR linear, primaries Rec.709Linear Rec.709 (sRGB)
PNG/JPEG ภาพสีsRGB Texture
ฟุตเทจกล้อง logIDT ของกล้องรุ่นนั้น
normal, roughness, maskRaw

ความผิดที่หักล้างกัน

ในรูปนี้ ตอนเริ่มชาร์ตแปลงแค่เส้นโค้งและ view ก็ใส่แค่เส้นโค้ง sRGB ทั้งคู่ "ลืม" primaries เหมือนกัน ชาร์ตเลยดูถูกต้อง พอเปลี่ยน view เป็น ACES 2.0 SDR (ซึ่งแปลง AP1 → Rec.709 อยู่ข้างใน) ชาร์ตก็อิ่มเกินทันที ช่องแดง 214, 38, 46 ออกมาเป็น 193, 0, 42 แทนที่จะเป็น 166, 25, 31 งานจริงก็เจอแบบนี้: ทุกอย่างดูดีจนเปลี่ยนไปใช้ config ที่ถูก

ซ่อม pipeline จากปลายทาง (view) ก่อน แล้วค่อยไล่ขาเข้าทีละตัว

ไฟล์รีวิวกับไฟล์ส่งต่อ

EXR ที่ส่งต่อให้แผนกอื่นต้องเป็น scene-linear ไม่ใส่ view transform ส่วนไฟล์รีวิวอย่าง MOV หรือ JPEG ต้องใส่ output transform ของจอที่ใช้ดู ทุกคนในทีมต้องใช้ config และเวอร์ชัน ACES เดียวกัน ไม่งั้นจะเห็นสีไม่ตรงกัน

4 ในงานจริง

ทำใน Nuke

  1. Project Settings > Color: color management = OCIO, เลือก config ACES ให้ตรงทีม, working space = ACEScg
  2. Read: ตั้ง input transform ให้ตรงกับไฟล์จริงทุกตัว ค่าที่ Nuke เดาให้ต้องเช็กเสมอ
  3. OCIOColorSpace: แปลงระหว่างพื้นที่สีกลาง graph เมื่อจำเป็น (เช่นเข้า log แล้วออก)
  4. Viewer: เลือก display/view ให้ตรงจอของคุณ ค่าในภาพไม่เปลี่ยน
  5. Write: EXR ส่งต่อเป็น ACEScg ไม่ใส่ view ส่วน MOV รีวิวใส่ output transform ของจอ
  6. OCIODisplay: ใช้ใส่ display/view ลงในสาขาที่จะ render ไฟล์รีวิว

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

  • ✗ texture สีตั้งเป็น "แปลงแค่ gamma"✓ ใช้ sRGB Texture (เส้นโค้ง + primaries)
  • ✗ อ่าน EXR linear ด้วย sRGB อีกรอบ✓ ภาพจะมืดและคอนทราสต์จัด ตั้งเป็น linear ตาม primaries ที่ render มา
  • ✗ อบ view transform ลง EXR ที่ส่งต่อ✓ ปลายทางจะใส่ view ซ้ำ ภาพเพี้ยน ส่ง scene-linear เสมอ
  • ✗ คนในทีมใช้ config หรือเวอร์ชัน ACES ต่างกัน✓ ล็อก config ของโชว์ไว้ที่เดียวและให้ทุกคนชี้ไปที่นั่น

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

  • ทุก Read มี input transform ที่ตั้งใจเลือก
  • texture ข้อมูลเป็น Raw ทั้งหมด
  • Viewer ใช้ display/view เดียวกับทีม
  • EXR ส่งต่อเป็น scene-linear ไม่มี view อบอยู่
  • ไฟล์รีวิวมี output transform ของจอที่ใช้ดู

5 เช็กตัวเอง

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

texture สี (albedo) ที่เซฟเป็น PNG sRGB เข้ามาใน comp ACEScg ต้องทำยังไง

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

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

คำถามเพิ่ม

1. ภาพ comp ดูถูกบนเครื่องคุณ แต่เพื่อนเปิดแล้วสีต่าง ควรเช็กอะไรก่อน

2. roughness map ควรใช้ input transform แบบไหน

ตัวเลขมาจากไหน: สูตรสีมาจาก src/figures/colormath.ts (sRGB IEC 61966-2-1, ARRI LogC3 EI 800, primaries ของ sRGB/P3/Rec.2020/ACES AP1 และ Bradford ซึ่งตรวจกับตัวเลขอ้างอิงแล้ว) การแปลงขาเข้าและ working space เป็นเมทริกซ์จริง (sRGB/Rec.709 → AP1 พร้อม Bradford D65 → ขาว ACES) ตรงกับค่าใน ACES studio config v4.0.0 (Linear Rec.709 (sRGB) → ACEScg และ sRGB Encoded Rec.709 (sRGB) หรือชื่อเดิม Utility - sRGB - Texture) ส่วน view เป็นผลลัพธ์ ACES 2.0 จริงจาก OCIO 2.6: sRGB - Display / ACES 2.0 - SDR 100 nits (Rec.709) อบเป็น LUT 33³ บนกริด ACEScct (ต่างจากค่าจริงของ OCIO ไม่เกินราว 0.02 ในสีทดสอบ จุดที่ต่างมากสุดคือสีสดที่สว่างมาก) สีในชาร์ตเราตั้งเอง ชื่อตัวเลือกย่อมาจากชื่อใน OCIO config