Authoring Configurations
OpenColorIO 설정 파일 문법
OpenColorIO는 주로 중앙 설정 파일인 **config.ocio**로 제어됩니다. 아래 내용은 OCIO 설정 파일의 문법을 설명하며, 사용할 수 있는 변환(transform)이나 선택적인 섹션에 대해 다룹니다.
이 페이지는 유용한 설정 파일을 작성하는 방법에 대한 실용적인 예제나 작업 흐름 내에서의 활용에 대해 다루지 않습니다. 실질적인 설정 예제 및 워크플로우 통합에 대한 정보는 Configurations 섹션을 참조하세요.
주요 내용:
- 설정 파일 작성 방법
- config.ocio 파일은 Python 또는 C++ API를 사용하여 생성하는 것이 권장됩니다.
- 텍스트 편집기로 YAML 파일을 수동으로 작성하는 것은 권장되지 않습니다.
- YAML 파일 수정 시 주의사항
- 만약 API 대신 YAML 파일을 직접 수정해야 할 경우, 수정 후 반드시 ociocheck 명령어를 사용해 문법의 정확성을 확인하세요.
오류 확인 방법
1. ociocheck 명령어 사용
- ociocheck는 OpenColorIO 설정 파일(config.ocio)의 유효성을 검사하는 커맨드라인 도구입니다.
- 이 도구는 YAML 문법 오류를 확인할 뿐만 아니라, OCIO에 특화된 다양한 유효성 검사를 수행합니다.
- YAML 파일을 수동으로 수정했거나 API 외부에서 생성한 설정 파일이 있을 경우, 오류를 방지하기 위해 반드시 **ociocheck**를 실행해야 합니다.
2. Config 클래스의 validate 메서드 사용
- OpenColorIO의 C++ 및 Python API에서 제공하는 validate 메서드를 사용하여 설정 파일을 검증할 수도 있습니다.
- 그러나 이 메서드는 **ociocheck**와 달리 역할(role) 검증 등의 특정 검사를 수행하지 않으므로, 한계가 있을 수 있습니다.
3. 추가 정보
- ociocheck 사용 방법 및 옵션에 대한 자세한 내용은 OpenColorIO 문서의 ociocheck 개요 섹션을 참고하세요
OCIO 설정 파일 섹션
OpenColorIO 설정 파일(config.ocio)은 다음과 같은 주요 섹션들로 구성됩니다:
1. Config Header
- 헤더는 설정 파일의 버전과 LUT 검색 경로를 포함합니다.
2. Environment
- 환경 변수를 정의하여 설정 파일에서 사용하는 컨텍스트 변수를 설정합니다.
3. Roles
- 역할(Roles)은 일반적인 작업에서 사용할 색상 공간을 정의합니다.
예: ACEScg, sRGB 등.
4. File & Viewing Rules
- 파일 및 뷰잉 규칙은 응용프로그램에서 기본값으로 사용할 규칙을 정의하여 사용자 경험을 개선합니다.
- 예: 특정 파일 형식에 적합한 기본 색상 공간 지정.
5. Displays & Views
- 색상 공간을 디스플레이 및 보기(View)에 맞게 표시하는 방법을 정의합니다.
- 예: HDR, SDR 디스플레이 설정.
6. Looks
- 색상에 크리에이티브 효과를 적용하거나 색상을 조정하는 변환(Transforms)을 정의합니다.
7. Colorspaces
- 씬 기반 색상 공간(Scene-referred) 인코딩을 정의합니다.
- 예: ACEScg, Linear Rec.709.
8. Display Colorspaces
- 디스플레이 기반 색상 공간(Display-referred) 인코딩을 정의합니다.
- 예: Rec.709, sRGB.
9. Named Transforms
- 특정 참조 공간과 고정 관계가 없는 변환(Transforms)을 제공합니다.
- 예: 유틸리티 곡선(Utility Curve) 변환.
추가 정보
- 사용 가능한 변환(Available Transforms) 컬렉션이 제공되어 설정 파일의 여러 섹션에서 활용할 수 있습니다.
- 각 섹션은 설정 파일에서 색상 관리 시스템의 작업 흐름을 최적화하기 위해 중요한 역할을 합니다.
Config header
OpenColorIO 설정 파일 요소
ocio_profile_version
- 필수 항목입니다.
- 설정 파일은 항상 ocio_profile_version으로 시작하며, 사용 중인 OCIO 설정 문법의 버전을 지정합니다.
- 지원되는 버전 문자열은 1 및 2입니다.
ocio_profile_version: 2
description
- 선택 항목으로, 설정 파일에 대한 간단한 설명을 작성합니다.
description: This is the OCIO config for show: foo.
name
- 선택 항목으로, 설정 파일의 고유 이름을 지정합니다.
- 미래 버전의 OCIO에서는 이 이름을 설정 파일에서 정의된 색상 공간의 일종의 "네임스페이스"로 사용할 가능성이 있습니다.
name: studio-config-v1.0.0_aces-v1.3_ocio-v2.1
search_path
- 선택 항목으로, 기본값은 빈 검색 경로입니다.
- LUT 또는 기타 파일을 찾기 위한 디렉터리 경로 목록을 설정합니다.
- 경로는 UNIX 환경의 $PATH 환경 변수와 유사하게 **콜론(:)**으로 구분됩니다.
예제 1: 단일 경로 (상대 경로 사용)
search_path: "luts"
예제 2: 복수 경로 (상대 및 절대 경로 혼합)
search_path: "/mnt/path/to/my/luts:luts"
예제 3: 여러 줄로 작성 (Windows 친화적)
search_path:
- luts1
- luts2
예제 4: 컨텍스트 변수 사용
- OCIO의 컨텍스트 변수로 유연한 경로 설정이 가능합니다.
- 예: 샷별 LUT 설정, 기본 경로를 백업으로 설정.
search_path: "/shots/show/$SHOT/cc/data:luts"
family_separator (선택 항목)
- 색상 공간 패밀리 문자열을 계층적 메뉴로 나누는 데 사용되는 구분 문자.
- 단일 문자만 사용할 수 있습니다.
- 구분 문자를 정의하지 않으면, 메뉴 헬퍼 API가 계층적 메뉴를 생성하지 않습니다.
family_separator: /
inactive_colorspaces 설정 가이드
inactive_colorspaces는 설정 파일에서 특정 색 공간(ColorSpace)을 비활성화하는 기능입니다.
이 설정을 사용하면 해당 색 공간이 애플리케이션의 UI 메뉴에서 숨겨지지만, 내부 변환(ColorSpaceTransforms)에서는 여전히 사용할 수 있습니다.
기본 개념
✅ 비활성화된 색 공간은 여전히 변환에 사용 가능하지만 UI에서 숨겨짐
✅ 이전 버전의 색 공간을 유지하면서도 사용자 실수를 방지 가능
✅ 환경 변수(OCIO_INACTIVE_COLORSPACES)로 동적으로 제어 가능
예제: inactive_colorspaces 설정
🔹 특정 색 공간 숨기기 (do_not_use_this_colorspace, prev_version_colorspace)
inactive_colorspaces: [ do_not_use_this_colorspace, prev_version_colorspace ]
✅ 결과:
- do_not_use_this_colorspace와 prev_version_colorspace가 UI에서 보이지 않음
- 하지만 내부적으로 변환 작업에는 사용할 수 있음
🔹 기존 색 공간을 유지하면서 새로운 색 공간만 표시하기
기존 설정에 새로운 색 공간을 추가했지만, 이전 버전은 숨기고 싶을 때
inactive_colorspaces: [ legacy_sRGB, old_ACEScg ]
✅ 결과:
- legacy_sRGB, old_ACEScg가 UI에서 숨겨짐
- 새로운 sRGB, ACEScg만 보이도록 설정
환경 변수(OCIO_INACTIVE_COLORSPACES)를 사용한 동적 변경
환경 변수를 사용하면 파일을 수정하지 않고도 동적으로 비활성화할 색 공간을 변경할 수 있습니다.
🔹 old_version, test_colorspace 비활성화하기
export OCIO_INACTIVE_COLORSPACES="old_version:test_colorspace"
✅ 결과:
- old_version, test_colorspace가 UI에서 사라짐
- 하지만 내부 변환 작업에는 계속 사용 가능
정리
✔ 이전 색 공간을 유지하면서도 UI에서 숨길 수 있음
✔ 사용자가 실수로 잘못된 색 공간을 선택하는 것을 방지 가능
✔ 환경 변수(OCIO_INACTIVE_COLORSPACES)를 사용하면 유연하게 관리 가능
💡 실제 프로덕션에서는 이전 색 공간을 유지하면서 새로운 파이프라인으로 전환할 때 유용하게 사용됩니다! 🚀
파일 규칙(file_rules)
File Rules란?
File Rules는 파일의 경로(Path)나 확장자(Extension) 등을 기반으로 색공간을 자동으로 할당하는 규칙입니다.
OCIO 설정 파일(config.ocio) 내에서 file_rules 섹션을 정의하여, 다양한 파일 유형에 따라 적절한 색공간을 적용할 수 있습니다.
파일 규칙들은 위에서 아래로(top-down) 평가되며, 먼저 매칭되는 규칙이 최종적으로 적용됩니다.
File Rules 예제
다음은 파일 규칙(File Rules)의 예제입니다.
file_rules:
- !<Rule> {name: LogC, extension: "*", pattern: "*LogC*", colorspace: ARRI LogC}
- !<Rule> {name: OpenEXR, extension: "exr", pattern: "*", colorspace: ACEScg}
- !<Rule> {name: TIFF, regex: ".*\\\\.TIF?F", colorspace: sRGB}
- !<Rule> {name: ColorSpaceNamePathSearch}
- !<Rule> {name: Default, colorspace: default}
위의 규칙을 하나씩 살펴보겠습니다.
1️⃣ LogC 파일을 자동으로 ARRI LogC 색공간에 매핑
- 파일 이름에 "LogC"가 포함된 모든 파일(LogC*)을 ARRI LogC 색공간으로 설정
2️⃣ OpenEXR 파일을 ACEScg 색공간으로 자동 매핑
- 확장자가 exr인 모든 파일(.exr)을 ACEScg 색공간으로 설정
3️⃣ TIFF 파일을 sRGB 색공간으로 자동 매핑
- 정규표현식(Regex)을 활용하여 .TIF 또는 .TIFF 확장자를 가진 파일을 sRGB 색공간으로 설정
4️⃣ ColorSpaceNamePathSearch
- 파일 경로에서 색공간 이름을 검색하는 OCIO v1 스타일 규칙
5️⃣ Default (기본 규칙)
- 위의 규칙들이 모두 일치하지 않는 경우 기본 색공간(default)을 적용
File Rules의 4가지 유형
File Rules에는 4가지 유형이 존재하며, 각각의 설정 방식이 다릅니다.
1) 기본 규칙(Basic Rules)
- Unix 스타일의 Glob 패턴을 사용하여 파일을 매칭
- 간단한 파일 이름과 확장자 필터링 가능
✅ 예제
- !<Rule> {name: OpenEXR, extension: "exr", pattern: "*", colorspace: ACES
- 확장자가 .exr인 모든 파일을 ACEScg 색공간으로 지정
2) 정규 표현식(RegEx Rules)
- 더 정교한 패턴 매칭이 가능
- regex 키를 사용하여 파일을 필터링
✅ 예제
- !<Rule> {name: TIFF, regex: ".*\\\\.TIF?F", colorspace: sRGB}
- .TIF 또는 .TIFF 확장자를 가진 파일을 sRGB 색공간으로 매핑
※ 정규 표현식에서는 백슬래시(\\)를 두 번(\\\\) 입력해야 정상적으로 인식됨
3) OCIO v1 스타일 규칙(ColorSpaceNamePathSearch)
- OCIO v1 방식으로 파일 경로에서 색공간을 추출하는 규칙
- 색공간 이름이 포함된 파일명을 찾을 때 사용
- 최대 1회만 사용할 수 있으며, 파일 규칙 리스트 내에서 다른 규칙과 우선순위를 비교할 수 있음
✅ 예제
- !<Rule> {name: ColorSpaceNamePathSearch}
- 파일 경로에서 색공간 이름을 찾아 자동 매핑
4) 기본 규칙(Default Rule)
- 위의 모든 규칙이 적용되지 않는 경우 마지막으로 적용되는 규칙
- 반드시 리스트의 마지막에 위치해야 함
✅ 예제
- !<Rule> {name: Default, colorspace: default}
- 아무 규칙에도 매칭되지 않는 파일은 default 색공간을 사용
File Rules 활용 팁
✅ 파일 규칙을 우선순위대로 정렬하라
- OCIO는 파일 규칙을 위에서 아래로 평가하므로, 더 구체적인 규칙을 상단에 배치하는 것이 중요합니다.
- 예를 들어, .exr 파일을 ACEScg로 매핑하는 규칙이 .exr을 sRGB로 매핑하는 규칙보다 위에 있어야 합니다.
✅ 정규표현식(Regex)을 활용하라
- 보다 정밀한 파일 매칭이 필요하다면 regex 키를 활용하세요.
- TIFF 파일을 sRGB로 변환하는 경우처럼, .TIF와 .TIFF를 동시에 처리하려면 정규 표현식을 사용해야 합니다.
✅ ColorSpaceNamePathSearch 규칙을 적절히 활용하라
- 파일 경로에서 색공간 정보를 자동으로 감지하는 기능을 사용하면 보다 유연한 워크플로우를 만들 수 있습니다.
✅ Default Rule을 반드시 추가하라
- 모든 파일이 특정 색공간에 매핑되도록 Default Rule을 반드시 추가하세요.
- 기본 색공간을 설정하지 않으면 OCIO가 예외를 발생시킬 수 있습니다.
File Rules API 변경 사항
- 이전에는 parseColorSpaceFromString API를 사용했지만, 현재는 getColorSpaceFromFilepath API로 대체되었습니다.
- strictparsing 옵션이 활성화된 경우, OCIO는 기본 규칙(Default Rule)과 일치하는지 확인한 후 사용자에게 알림을 제공할 수 있습니다.
Displays 설정
Displays(디스플레이) 섹션은 OCIO 설정에서 각 디스플레이 기기를 정의하는 부분입니다.
이 섹션에서는 작업용 모니터(sRGB), 상영관 프로젝터(DCIP3) 등 다양한 디스플레이 기기에 대해 설정할 수 있습니다.
또한, 각 디스플레이마다 여러 개의 View(뷰)를 설정하여 다양한 방식으로 이미지를 확인할 수 있습니다.
이 글에서는 Displays의 개념과 설정 방법을 예제와 함께 설명하겠습니다.
Displays란?
OCIO에서 Displays(디스플레이) 섹션은 사용할 디스플레이 장치를 정의하는 부분입니다.
예를 들어:
- sRGB 디스플레이 → 아티스트 작업용 모니터
- DCIP3 디스플레이 → 영화 상영관 프로젝터
각 디스플레이는 여러 개의 View(뷰)를 포함할 수 있습니다.
✅ View(뷰)란?
View는 디스플레이에서 이미지를 변환하여 보여주는 방법을 정의합니다.
예를 들어:
- Film → 영화 상영 결과를 시뮬레이션
- Log → Log 색공간을 그대로 보여줌 (블랙 레벨 확인 용도)
- Raw → 색 변환 없이 원본 그대로 표시 (기술 체크용)
기본 Displays 설정 예제
다음은 기본적인 Displays 설정 예제입니다.
displays:
DCIP3:
- !<View> {name: Film, colorspace: p3dci8}
- !<View> {name: Log, colorspace: lg10}
- !<View> {name: Raw, colorspace: nc10}
sRGB:
- !<View> {name: Film, colorspace: srgb8}
- !<View> {name: Log, colorspace: lg10}
- !<View> {name: Raw, colorspace: nc10}
✅ 설명:
- DCIP3 디스플레이와 sRGB 디스플레이를 정의
- 각 디스플레이는 Film, Log, Raw 3가지 View를 포함
- p3dci8, lg10, nc10, srgb8 등의 색공간을 사용
View Transform을 활용한 설정 예제
View Transform을 사용하면 보다 정교한 색 변환이 가능합니다.
이 방식에서는 Scene-Referenced → Display-Referenced 변환을 별도로 정의합니다.
displays:
DCIP3:
- !<View> {name: Film, view_transform: FilmView, display_colorspace: DCIP3}
view_transforms:
- !<ViewTransform>
name: FilmView
from_reference: <omitted for brevity>
display_colorspaces:
- !<ColorSpace>
name: DCIP3
from_display_reference: <omitted for brevity>
✅ 설명:
- FilmView라는 View Transform을 정의
- Film View는 FilmView 변환을 거친 후 DCIP3 색공간으로 변환
- display_colorspaces에서 DCIP3 색공간을 지정
View 속성 설명
각 View에는 여러 가지 속성을 설정할 수 있습니다.
속성명 | 설명 |
name | View의 이름 |
colorspace | 변환할 색공간 (단독 사용 가능) |
view_transform | Scene-Referenced → Display-Referenced 변환을 담당 |
display_colorspace | 최종 디스플레이 색공간 |
looks | Look Transform 적용 (예: +Look1 or -Look2) |
rule | Viewing Rule 적용 |
description | 설명 추가 |
✅ 주의:
- colorspace 또는 view_transform + display_colorspace 중 하나만 사용할 수 있음!
Displays 설정 시 고려할 점
✅ 각 디스플레이에 적절한 View를 제공해야 함
- sRGB 디스플레이와 DCIP3 프로젝터는 서로 다른 색공간을 가짐
- 따라서 각 디스플레이에 맞는 변환을 설정해야 함
✅ View Transform을 활용하면 더욱 정교한 색 변환 가능
- view_transform을 사용하면 보다 정확한 색공간 매핑 가능
✅ Look Transform을 활용하여 추가적인 색조정 가능
- looks: +FilmLook 같은 Look Transform을 추가하여 필름 룩 적용 가능
✅ active_displays 및 active_views를 활용하여 기본값 설정 가능
- 특정 디스플레이 및 View만 활성화할 수도 있음
결론
Displays 섹션은 OCIO 설정에서 사용자의 디스플레이 환경을 정의하는 중요한 부분입니다.
각 디스플레이에 적절한 View를 설정하여 다양한 색공간 변환을 관리할 수 있습니다.
✅ 기본적인 색공간 변환만 필요하다면 colorspace 키 사용
✅ 정확한 색 변환이 필요하다면 view_transform + display_colorspace 조합 활용
✅ looks, rule, description 등을 추가하여 더욱 세부적인 설정 가능
OCIO를 효율적으로 활용하려면 Displays 설정을 올바르게 구성하는 것이 필수적입니다! 🚀
view_transforms 설정
view_transforms는 OCIO의 기준 색 공간(Reference Spaces) 간 변환을 정의하는 설정입니다.
이 설정을 활용하면 씬-참조(Scene-Referred)와 디스플레이-참조(Display-Referred) 공간 간의 변환을 체계적으로 관리할 수 있습니다.
기본 개념
✅ 씬-참조(Scene-Referred) ↔ 디스플레이-참조(Display-Referred) 변환 정의
✅ HDR ↔ SDR 변환과 같은 디스플레이 색 공간 간 변환도 가능
✅ ACES 및 ITU 표준(OOTF)과 같은 컬러 렌더링 변환 개념을 포함
주요 키(Key) 설명
키 | 설명 |
name | 변환의 이름 |
description | 변환 설명 (선택 사항) |
family | 색 공간과 유사한 그룹화 정보 (UI에서 정리할 때 사용) |
categories | UI 필터링을 위한 카테고리 정보 |
from_scene_reference | 씬-참조 → 디스플레이-참조 변환 |
to_scene_reference | 디스플레이-참조 → 씬-참조 변환 |
from_display_reference | 디스플레이-참조 → 디스플레이-참조 변환 (HDR → SDR 변환 등에 사용) |
to_display_reference | from_display_reference 변환의 역변환 |
예제: view_transforms 설정
🔹 ACES 기반의 씬-참조 → 디스플레이-참조 변환
ACES 워크플로우에서 씬-참조된 ACEScg 색 공간을 디스플레이-참조 sRGB로 변환하는 예제
view_transforms:
- !<ViewTransform>
name: ACES-Display
description: "ACEScg to Display"
from_scene_reference: !<ColorSpaceTransform> {src: ACEScg, dst: sRGB}
✅ 결과:
- 씬-참조(ACEScg) → 디스플레이-참조(sRGB) 변환 정의
🔹 HDR → SDR 변환 (Rec.2100 PQ → Rec.709 SDR)
HDR에서 SDR로 변환할 때 디스플레이-참조 공간 내에서 변환 수행
view_transforms:
- !<ViewTransform>
name: HDR-to-SDR
description: "HDR Rec.2100 PQ to SDR Rec.709"
from_display_reference: !<ColorSpaceTransform> {src: Rec2100-PQ, dst: Rec709}
to_display_reference: !<ColorSpaceTransform> {src: Rec709, dst: Rec2100-PQ}
✅ 결과:
- from_display_reference: HDR(PQ) → SDR(Rec.709) 변환
- to_display_reference: SDR(Rec.709) → HDR(PQ) 역변환
🔹 씬-참조 ↔ 디스플레이-참조 변환 + HDR 조정 포함
ACES 워크플로우에서 HDR 조정이 포함된 변환을 정의
view_transforms:
- !<ViewTransform>
name: ACES-HDR
description: "ACES to HDR Display"
from_scene_reference: !<ColorSpaceTransform> {src: ACEScg, dst: Rec2100-PQ}
to_scene_reference: !<ColorSpaceTransform> {src: Rec2100-PQ, dst: ACEScg}
✅ 결과:
- 씬-참조(ACEScg) ↔ 디스플레이-참조(Rec.2100 PQ) 변환 가능
정리
✔ 씬-참조 & 디스플레이-참조 변환을 체계적으로 관리 가능
✔ ACES 및 HDR 변환을 포함한 다양한 워크플로우 지원
✔ HDR → SDR 변환과 같은 특수한 색 공간 매핑도 정의 가능
💡 OCIO의 view_transforms 설정을 활용하면 VFX 및 색 보정(Color Grading) 파이프라인에서 표준화된 컬러 매핑을 쉽게 구성할 수 있습니다! 🚀
View
View의 정의
뷰(View)는 참조 색상 공간(reference space)에서 디스플레이로 변환 방법을 정의합니다.
뷰는 다음 두 가지 방식으로 정의될 수 있습니다.
1. 단순 색상 공간 변환
뷰를 참조 색상 공간에서 디스플레이로 직접 변환하는 색상 공간으로 정의합니다.
- !<View> {name: Film, colorspace: p3dci8}
2. 뷰 변환 + 디스플레이 색상 공간
뷰 변환(View Transform)과 디스플레이 색상 공간(Display Color Space)을 결합하여 정의합니다.
displays:
DCIP3:
- !<View> {name: Film, view_transform: FilmView, display_colorspace: DCIP3}
view_transforms:
- !<ViewTransform>
name: FilmView
from_reference: <변환 정의 생략>
display_colorspaces:
- !<ColorSpace>
name: DCIP3
from_display_reference: <변환 정의 생략>
뷰(View)의 주요 키
- name
- 뷰의 이름.
- colorspace
- 참조 공간에서 디스플레이로 변환하는 색상 공간.
- view_transform
- 참조 공간에서 **디스플레이 참조 공간(display-referred reference space)**으로 변환하는 변환 정의.
- display_colorspace
- 디스플레이 참조 공간에서 최종 디스플레이로 변환하는 색상 공간.
- looks
- 추가적인 룩 변환을 적용.
- '+': 정방향 적용.
- '-': 역방향 적용.
- 추가적인 룩 변환을 적용.
- rule
- 뷰와 연관된 뷰잉 규칙(viewing rules).
- description
- 뷰에 대한 설명.
주의 사항
- 키 사용 제한
- colorspace 또는 view_transform + display_colorspace 조합만 사용 가능.
- 그 외의 조합은 허용되지 않음.
- 활성 디스플레이/뷰
- active_displays와 active_views가 정의되지 않으면 첫 번째 디스플레이와 첫 번째 뷰가 기본값으로 사용됨.
뷰(View) 정의 방법
뷰는 두 가지 방식으로 정의될 수 있습니다.
- 단일 색상 공간 변환
- 참조 색상 공간에서 디스플레이로 직접 변환을 수행합니다.
- 위 예제처럼 colorspace 키만 사용합니다.
- !<View> {name: Film, colorspace: srgb8}
- View Transform + Display Color Space 조합
- View Transform: 씬-참조(reference) 색상 공간에서 디스플레이-참조(display) 색상 공간으로 변환합니다.
- Display Color Space: 디스플레이-참조 색상 공간에서 디스플레이로 변환합니다.
- 예제:
displays:
DCIP3:
- !<View> {name: Film, view_transform: FilmView, display_colorspace: DCIP3}
view_transforms:
- !<ViewTransform>
name: FilmView
from_reference: <omitted for brevity>
display_colorspaces:
- !<ColorSpace>
name: DCIP3
from_display_reference: <omitted for brevity>
뷰(View) 속성
뷰는 다음과 같은 키를 포함할 수 있습니다.
- name: 뷰의 이름.
- colorspace: 참조(reference) 색상 공간에서 디스플레이로 직접 변환에 사용되는 색상 공간.
- view_transform: 씬-참조에서 디스플레이-참조로 변환을 정의합니다.
- display_colorspace: 디스플레이-참조에서 디스플레이로 변환하는 데 사용되는 색상 공간.
- looks: Look Transforms를 지정합니다.
- +: 정방향 적용.
- -: 역방향 적용.
- rule: 뷰잉 규칙(Viewing Rule)을 정의합니다.
- description: 뷰에 대한 설명 문자열.
사용 규칙
- 뷰 정의 방식 제한
- 뷰는 colorspace를 사용하거나, view_transform과 display_colorspace의 조합을 사용해야 합니다.
- 두 방식의 혼용은 불가능합니다.
- 기본 디스플레이와 뷰
- active_displays와 active_views 섹션이 정의되지 않은 경우,
- 첫 번째 디스플레이와 첫 번째 뷰가 기본값으로 사용됩니다.
- active_displays와 active_views 섹션이 정의되지 않은 경우,
Shared Views 설정
Shared Views(공유 뷰) 기능은 여러 개의 Display에서 동일한 View를 공유할 수 있도록 설정하는 기능입니다.
이 기능을 활용하면 중복 코드 작성을 줄이고, 설정 파일을 더욱 효율적으로 관리할 수 있습니다.
이 글에서는 Shared Views의 개념과 사용 방법을 예제와 함께 설명하겠습니다.
Shared Views란?
OCIO에서 View(뷰)는 특정 색공간을 정의하여 디스플레이에서 사용할 수 있도록 하는 설정입니다.
보통 각 디스플레이(Display) 마다 별도의 View를 정의해야 하지만, Shared Views를 사용하면 한 번의 정의로 여러 개의 Display에서 재사용할 수 있습니다.
이를 통해 설정의 중복을 줄이고 유지보수를 쉽게 할 수 있습니다.
Shared Views 예제
다음은 Shared Views를 활용한 예제입니다.
✅ 1) Shared Views 사용 예제
아래처럼 설정하면 Log와 Raw 뷰를 공유하여 여러 디스플레이에서 재사용할 수 있습니다.
shared_views:
- !<View> {name: Log, colorspace: lg10}
- !<View> {name: Raw, colorspace: nc10}
displays:
DCIP3:
- !<View> {name: Film, colorspace: p3dci8}
- !<Views> [ Log, Raw ] # Log와 Raw 뷰를 공유하여 사용
sRGB:
- !<View> {name: Film, colorspace: srgb8}
- !<Views> [ Log, Raw ] # 동일한 Log와 Raw 뷰를 사용
위의 설정은 아래와 동일한 효과를 가집니다.
displays:
DCIP3:
- !<View> {name: Film, colorspace: p3dci8}
- !<View> {name: Log, colorspace: lg10}
- !<View> {name: Raw, colorspace: nc10}
sRGB:
- !<View> {name: Film, colorspace: srgb8}
- !<View> {name: Log, colorspace: lg10}
- !<View> {name: Raw, colorspace: nc10}
✅ Shared Views를 사용하면 설정을 한 곳에서 정의하고, 여러 Display에서 쉽게 재사용할 수 있습니다!
✅ 2) <USE_DISPLAY_NAME> 활용 예제
특정 디스플레이에 따라 display_colorspace가 자동으로 변경되도록 설정할 수도 있습니다.
shared_views:
- !<View> {name: ACES, view_transform: ACES-sdr-video,
display_colorspace: <USE_DISPLAY_NAME>} # 디스플레이에 따라 색공간 자동 설정
- !<View> {name: Log, colorspace: lg10}
- !<View> {name: Raw, colorspace: nc10}
displays:
sRGB:
- !<Views> [ ACES, Log, Raw ]
Rec709:
- !<Views> [ ACES, Log, Raw ]
display_colorspaces:
- !<ColorSpace>
name: sRGB
from_display_reference: <omitted for brevity>
- !<ColorSpace>
name: Rec709
from_display_reference: <omitted for brevity>
✅ 설명:
- ACES 뷰에서 display_colorspace: <USE_DISPLAY_NAME>를 사용하면
- sRGB 디스플레이에서 ACES 뷰는 sRGB 색공간을 사용
- Rec709 디스플레이에서 ACES 뷰는 Rec709 색공간을 사용
- 즉, 하나의 설정으로 각 디스플레이에 적합한 색공간을 자동으로 할당할 수 있습니다.
Shared Views의 장점
✅ 코드 중복 제거
- 같은 View를 여러 디스플레이에서 사용할 때 중복 정의할 필요 없음
✅ 설정 변경이 쉬움
- 하나의 View만 수정하면 모든 디스플레이에 적용 가능
✅ 디스플레이별 자동 색공간 매핑 가능
- <USE_DISPLAY_NAME>을 사용하면 디스플레이별 색공간을 자동으로 설정 가능
✅ OCIO API에서 일반 View처럼 동작
- Application 개발자는 Shared Views를 따로 신경 쓸 필요 없음
- API가 Shared Views를 일반 View처럼 처리
Shared Views 활용 팁
🔹 재사용할 뷰는 Shared Views에 정의하라
- 여러 디스플레이에서 같은 View를 사용한다면 공유 뷰(shared_views)로 정의하는 것이 효율적입니다.
🔹 <USE_DISPLAY_NAME>를 적극 활용하라
- 디스플레이마다 다른 색공간을 사용해야 한다면 <USE_DISPLAY_NAME>을 사용하세요.
🔹 필요한 View만 활성화하라
- 특정 View만 활성화하려면 active_views를 활용하여 필요한 View만 표시할 수 있습니다.
정리
Shared Views는 여러 디스플레이에서 공통으로 사용하는 View를 한 번 정의하여 재사용하는 기능입니다.
이를 활용하면 설정의 중복을 줄이고, 유지보수가 편리해지며, <USE_DISPLAY_NAME>을 활용하면 자동화된 색공간 설정도 가능합니다.
OCIO 설정을 보다 체계적으로 관리하려면 Shared Views를 적극적으로 활용하세요! 🚀
active_displays 설정
- active_displays는 UI에서 보이는 디스플레이 장치를 선택하고 순서를 조정하는 기능입니다.
기본적으로 모든 디스플레이가 표시되며, displays 섹션의 순서를 따릅니다.
하지만 특정 디스플레이만 보이도록 설정하거나, 순서를 변경할 수도 있습니다.
기본 개념
✅ 모든 디스플레이가 기본적으로 활성화됨
✅ 표시할 디스플레이를 선택하여 UI를 깔끔하게 정리할 수 있음
✅ 환경 변수(OCIO_ACTIVE_DISPLAYS)를 사용하여 동적으로 변경 가능
예제: active_displays 설정
🔹 기본 displays 설정 예제
displays:
DCIP3:
- !<View> {name: Film, colorspace: p3dci8}
- !<View> {name: Log, colorspace: lg10}
- !<View> {name: Raw, colorspace: nc10}
sRGB:
- !<View> {name: Film, colorspace: srgb8}
- !<View> {name: Log, colorspace: lg10}
- !<View> {name: Raw, colorspace: nc10}
위와 같은 설정이 있을 때, 모든 디스플레이(sRGB, DCIP3)가 보이게 됩니다.
🔹 특정 디스플레이만 활성화 (sRGB 먼저 보이도록 설정)
active_displays: [sRGB, DCIP3]
✅ 결과:
- sRGB가 UI에서 먼저 보이고, 그다음 DCIP3가 보임
🔹 특정 디스플레이만 보이도록 설정 (DCIP3만 표시)
active_displays: [DCIP3]
✅ 결과:
- DCIP3만 보이고, sRGB는 UI에서 숨겨짐
환경 변수(OCIO_ACTIVE_DISPLAYS)를 사용한 동적 변경
환경 변수를 사용하면 시스템별로 다른 디스플레이 설정을 적용할 수 있습니다.
🔹 sRGB만 활성화
export OCIO_ACTIVE_DISPLAYS="sRGB"
✅ 결과:
- UI에서 sRGB만 보이고 DCIP3는 숨겨짐
🔹 리뷰 머신에서 DCIP3만 활성화
export OCIO_ACTIVE_DISPLAYS="DCIP3"
✅ 결과:
- 리뷰용 DCI P3 프로젝터에서 DCIP3만 보이도록 설정
🔹 여러 개의 디스플레이 활성화 (sRGB와 DCIP3 모두 표시)
export OCIO_ACTIVE_DISPLAYS="DCIP3:sRGB"
✅ 결과:
- DCIP3와 sRGB 모두 UI에 표시됨
정리
✔ active_displays를 사용하면 UI에서 보이는 디스플레이를 정리할 수 있음
✔ 환경 변수(OCIO_ACTIVE_DISPLAYS)를 활용하면 시스템별로 다르게 설정 가능
✔ 리뷰용 시스템과 작업용 시스템을 유연하게 구성 가능
💡 실제 프로덕션 환경에서는 OCIO_ACTIVE_DISPLAYS를 사용하여 리뷰 환경과 아티스트 환경을 분리하는 것이 일반적입니다! 🚀
active_views 설정
active_views는 UI에서 보이는 뷰(View)를 선택하고 순서를 조정하는 기능입니다.
기본적으로 모든 뷰가 표시되며, displays 섹션의 순서를 따릅니다.
하지만 특정 뷰만 보이도록 설정하거나, 순서를 변경할 수도 있습니다.
기본 개념
✅ 모든 뷰(View)가 기본적으로 활성화됨
✅ 표시할 뷰를 선택하여 UI를 깔끔하게 정리할 수 있음
✅ 환경 변수(OCIO_ACTIVE_VIEWS)를 사용하여 동적으로 변경 가능
예제: active_views 설정
🔹 기본 displays 및 views 설정 예제
displays:
DCIP3:
- !<View> {name: Film, colorspace: p3dci8}
- !<View> {name: Log, colorspace: lg10}
- !<View> {name: Raw, colorspace: nc10}
sRGB:
- !<View> {name: Film, colorspace: srgb8}
- !<View> {name: Log, colorspace: lg10}
- !<View> {name: Raw, colorspace: nc10}
위와 같은 설정이 있을 때, 모든 뷰(Film, Log, Raw)가 보이게 됩니다.
🔹 특정 뷰만 활성화 (Film과 Log만 표시)
active_views: [Film, Log]
✅ 결과:
- Raw는 UI에서 숨겨지고, Film과 Log만 보임
🔹 특정 뷰만 보이도록 설정 (Log만 표시)
active_views:
✅ 결과:
- Film과 Raw는 숨겨지고 Log만 보임
환경 변수(OCIO_ACTIVE_VIEWS)를 사용한 동적 변경
환경 변수를 사용하면 시스템별로 다른 뷰(View) 설정을 적용할 수 있습니다.
🔹 Film, Log, Raw 뷰만 활성화
export OCIO_ACTIVE_VIEWS="Film:Log:Raw
✅ 결과:
- Film, Log, Raw가 UI에 표시됨
- 다른 뷰는 숨겨짐
🔹 특정 뷰(Log와 Raw)만 활성화
export OCIO_ACTIVE_VIEWS="Log:Raw"
✅ 결과:
- Film은 UI에서 숨겨지고 Log와 Raw만 보임
결론
✔ active_views를 사용하면 UI에서 보이는 뷰(View)를 정리할 수 있음
✔ 환경 변수(OCIO_ACTIVE_VIEWS)를 활용하면 시스템별로 다르게 설정 가능
✔ 뷰를 제한하면 아티스트가 불필요한 설정을 볼 필요 없이 작업할 수 있음
💡 실제 프로덕션 환경에서는 리뷰 환경과 아티스트 작업 환경을 구분하기 위해 OCIO_ACTIVE_VIEWS를 활용하는 것이 일반적입니다! 🚀
looks 설정
looks는 특정한 색 변환(Color Transform)을 적용하여 뷰잉 환경에서 컬러 그레이딩 효과를 미리보기할 수 있도록 도와줍니다.
예를 들어, DI(디지털 인터미디에이트) 과정의 "뷰티 패스" 색보정을 가정하여 특정 룩을 적용할 수 있습니다.
기본 개념
✅ 색공간 변환과 유사하지만 특정한 "룩(감성 보정)"을 위한 기능
✅ 씬-참조 공간에서 특정 컬러 그레이딩을 적용하고 변환 가능
✅ LUT(Look-Up Table), ASC CDL(색보정 표준) 등을 이용하여 설정 가능
✅ 특정 "SEQ(시퀀스)" 및 "SHOT(샷)"에 맞는 LUT 자동 적용 가능
주요 키(Key) 설명
키 | 설명 |
name | 룩(look)의 이름 |
process_space | 색 변환이 적용될 기준 색공간 |
transform | 적용할 색 변환 (CDL, LUT 등) |
inverse_transform | 역변환 (3D LUT 등 역변환이 어려운 경우 명시적으로 정의 필요) |
예제: looks 설정
🔹 기본적인 ASC CDL 색 변환 적용 (뷰티 패스 예제)
CDL(Color Decision List) 기반으로 컬러 보정을 수행하는 기본적인 "뷰티" 룩 적용
looks:
- !<Look>
name: beauty
process_space: lnf
transform: !<CDLTransform> {slope: [1, 2, 1]}
✅ 결과:
- 씬-참조 공간 lnf에서 초록색이 강조된 색보정 적용
- ASC CDL 표준에 따라 Slope(기울기) 값 적용
🔹 샷별 LUT 적용 (시퀀스 & 샷에 맞는 LUT 자동 매핑)
각 시퀀스 & 샷에 따라 자동으로 LUT(색 보정 파일)를 불러오는 설정
looks:
- !<Look>
name: neutral
process_space: lg10
transform: !<FileTransform> {src: 'neutral-${SHOT}-${SEQ}.csp', interpolation: linear }
inverse_transform: !<FileTransform> {src: 'neutral-${SHOT}-${SEQ}-reverse.csp', interpolation: linear }
✅ 결과:
- 샷 정보(SEQ, SHOT)에 따라 LUT 자동 적용
- 예를 들어, SEQ=ab, SHOT=1234일 경우 neutral-ab-1234.csp LUT 사용
- 3D LUT의 경우 역변환(inverse_transform)을 따로 정의하여 적용 가능
🔹 여러 변환을 그룹으로 묶어 적용
CDL + LUT를 조합하여 색 변환을 수행하는 설정
looks:
- !<Look>
name: beauty
process_space: lnf
transform: !<GroupTransform>
children:
- !<CDLTransform> {slope: [1, 2, 1]}
- !<FileTransform> {src: beauty.spi1d, interpolation: nearest}
✅ 결과:
- CDL 색 변환 + LUT 파일을 적용한 색 보정 수행
정리
✔ 씬-참조 공간에서 특정한 컬러 그레이딩을 미리 적용 가능
✔ 샷별 LUT를 자동 적용하여, 프로젝트 파이프라인에서 색 보정을 체계적으로 운영 가능
✔ CDL 및 LUT를 조합하여 더욱 정밀한 색 변환 적용 가능
💡 OCIO의 looks 설정을 활용하면 다양한 색 보정 스타일을 프로덕션에서 체계적으로 관리할 수 있습니다! 🚀
Colorspace 설정
📌 Colorspace란?
OCIO 설정 파일에서 colorspaces 섹션은 씬-참조(scene-referred) 색 공간을 정의하는 부분입니다.
각 색 공간은 다른 색 공간을 참조하거나 변환을 정의할 수 있으며, OCIO를 지원하는 모든 애플리케이션에서 사용될 수 있습니다.
🛠 Colorspace의 주요 키(Key)
색 공간을 정의할 때 사용할 수 있는 주요 키는 다음과 같습니다.
키 | 설명 |
name | 색 공간의 이름 |
bitdepth | 비트 깊이 (예: 8ui, 16ui, 32f 등) |
description | 색 공간에 대한 설명 |
to_scene_reference | 기준 색 공간(scene reference space)으로 변환하는 변환(transform) |
from_scene_reference | 기준 색 공간에서 변환(transform)하는 방식 |
🔹 OCIO v1에서는 to_reference, from_reference 키가 사용되었으나, OCIO v2에서는 to_scene_reference, from_scene_reference로 대체되었습니다.
🎨 Colorspace 설정 예제
다음은 기본적인 colorspaces 설정 예제입니다.
colorspaces:
- !<ColorSpace>
name: lnf
bitdepth: 32f
description: |
lnf : Linear Show Space (기준 색 공간)
- !<ColorSpace>
name: lg16
bitdepth: 16ui
description: |
lg16 : 필름 로그 변환
to_scene_reference: !<FileTransform> {src: lg16_to_lnf.spi1d, interpolation: nearest}
✅ 설명
- lnf (Linear Float)는 기준 색 공간(reference colorspace)으로 설정됩니다.
- lg16 (16-bit Log) 색 공간은 lg16_to_lnf.spi1d LUT를 사용하여 lnf로 변환됩니다.
- OCIO는 lg16_to_lnf.spi1d LUT가 가역적(invertible)이라고 판단하여, 반대 방향 변환(lnf → lg16)도 자동으로 지원합니다.
이 설정을 통해, lg16 → lnf 변환 후, 다른 색 공간으로 변환하는 과정이 가능해집니다.
📺 디스플레이 색 공간(sRGB) 추가
디스플레이 장치에서 사용할 색 공간을 추가해 보겠습니다.
- !<ColorSpace>
name: srgb8
bitdepth: 8ui
description: |
srgb8 : sRGB 표준 디스플레이 공간
from_scene_reference: !<FileTransform> {src: srgb8.spi3d, interpolation: linear}
✅ 설명
- srgb8.spi3d는 lnf → sRGB 변환을 수행하는 3D LUT입니다.
- 3D LUT는 일반적으로 가역적이지 않기 때문에, to_scene_reference 키 없이 "디스플레이 전용" 색 공간으로 사용됩니다.
만약 sRGB → lnf 변환도 가능해야 한다면, to_scene_reference를 추가하여 양방향 변환을 지원할 수도 있습니다.
- !<ColorSpace>
name: srgb8
bitdepth: 8ui
description: |
srgb8 : sRGB 표준 디스플레이 공간
from_scene_reference: !<FileTransform> {src: lnf_to_srgb8.spi3d, interpolation: linear}
to_scene_reference: !<FileTransform> {src: srgb8_to_lnf.spi3d, interpolation: linear}
🔄 GroupTransform을 활용한 복합 변환
복잡한 변환이 필요한 경우, GroupTransform을 사용하여 여러 개의 변환 단계를 조합할 수 있습니다.
- !<ColorSpace>
name: srgb8
bitdepth: 8ui
description: |
srgb8 : sRGB 표준 디스플레이 공간
from_scene_reference: !<GroupTransform>
children:
- !<ColorSpaceTransform> {src: lnf, dst: lg16}
- !<FileTransform> {src: lg16_to_srgb8.spi3d, interpolation: linear}
✅ 설명
- lnf → lg16 변환(ColorSpaceTransform)
- lg16 → sRGB 변환(FileTransform, 3D LUT 사용)
이렇게 하면, lnf → sRGB 변환을 수행할 때 먼저 로그 변환(lg16)을 거친 후 LUT를 적용하도록 설정할 수 있습니다.
🏗 OCIO 내부 변환 과정
예제 설정을 기준으로, OCIO가 내부적으로 변환을 어떻게 적용하는지 살펴보겠습니다.
🔹 lnf → srgb8 변환 과정
- lnf → lg16 변환 (ColorSpaceTransform)
- lg16 → srgb8 변환 (FileTransform, lg16_to_srgb8.spi3d LUT)
🔹 lg16 → srgb8 변환 과정
- lg16 → lnf 변환 (to_scene_reference 사용, lg16.spi1d LUT 적용)
- lnf → srgb8 변환 (from_scene_reference 사용)
🔥 OCIO 변환 최적화
OCIO는 내부적으로 불필요한 변환을 자동으로 제거하는 최적화 기능을 제공합니다.
예를 들어, lg16 → lnf → lg16 → srgb8 순서의 변환이 있다면 중복되는 변환을 제거하여 최적화합니다.
📌 결과적으로 변환 과정이 lg16 → srgb8로 단순화됨!
✅ 정리
OCIO colorspaces 섹션에서 중요한 개념을 정리하면 다음과 같습니다.
- 기준 색 공간(Reference Colorspace)
- 모든 색 공간 변환은 하나의 기준 색 공간을 중심으로 정의됨 (lnf 사용 예제)
- 색 공간 변환 정의 방법
- to_scene_reference: 기준 색 공간으로 변환
- from_scene_reference: 기준 색 공간에서 변환
- GroupTransform을 활용한 복합 변환
- ColorSpaceTransform과 FileTransform을 조합하여 여러 변환을 한 번에 수행 가능
- OCIO의 자동 최적화 기능
- 불필요한 변환 단계를 제거하여 성능 최적화
🎯 컬러스페이스 주요 속성
1️⃣ encoding (색상 인코딩 방식)
컬러스페이스가 어떤 방식으로 색상을 수치적으로 표현하는지 정의합니다. 이는 색 보정, 합성, 키잉, 트래킹 등의 작업에 영향을 미칩니다.
값 설명 예시
scene-linear | 씬 기반 인코딩, 숫자가 씬 조도의 비율과 직접적으로 연관됨 | ACES2065-1, ACEScg |
display-linear | 디스플레이 기반 인코딩, 숫자가 디스플레이 밝기에 비례 | CIE XYZ |
log | 씬 조도의 로그 변환 기반 인코딩 | ACEScct, LogC, S-Log3 |
sdr-video | SDR(표준 동적 범위) 영상 신호 기반 인코딩 | Rec.709, sRGB |
hdr-video | HDR(고동적 범위) 영상 신호 기반 인코딩 | Rec.2100 PQ, Rec.2100 HLG |
data | 색상이 아닌 데이터 채널 | 알파, 노멀맵, 깊이(Depth) |
2️⃣ bitdepth (비트 깊이)
컬러스페이스의 적절한 비트 깊이를 설정하여 애플리케이션이 자동으로 해당 비트 심도를 사용할 수 있도록 합니다.
값 설명
8ui | 8비트 정수(unsigned integer) |
10ui | 10비트 정수 |
12ui | 12비트 정수 |
14ui | 14비트 정수 |
16ui | 16비트 정수 |
32ui | 32비트 정수 |
16f | 16비트 부동소수점(float) |
32f | 32비트 부동소수점 |
예시:
- !<ColorSpace>
name: srgb8
bitdepth: 8ui
encoding: sdr-video
from_scene_reference: [...]
3️⃣ isdata (비색상 데이터 여부)
해당 컬러스페이스가 **색상이 아닌 데이터(예: 노멀맵, Z-depth, 알파 채널)**를 저장하는 데 사용되는지 여부를 나타냅니다.
예시 (비색상 데이터 컬러스페이스 설정):
- !<ColorSpace>
name: ncf
family: nc
bitdepth: 32f
description: |
ncf : Non-color 데이터 (깊이, 노멀맵 등 저장용)
isdata: true
allocation: uniform
4️⃣ equalitygroup (동일 그룹)
컬러스페이스 간 변환이 필요 없는 경우, 같은 equalitygroup으로 지정하면 변환을 생략할 수 있습니다.
예를 들어, lg10과 lg16은 비트 깊이만 다를 뿐 동일한 컬러스페이스이므로 동일 그룹으로 설정하면 변환이 생략됩니다.
예시:
- !<ColorSpace>
name: lg16
equalitygroup: lg
bitdepth: 16ui
to_scene_reference: !<FileTransform> {src: lg16.spi1d, interpolation: nearest}
- !<ColorSpace>
name: lg10
equalitygroup: lg
bitdepth: 10ui
to_scene_reference: !<FileTransform> {src: lg10.spi1d, interpolation: nearest}
❗ 서로 다른 컬러스페이스를 동일 그룹으로 지정하면 안 됩니다.
5️⃣ family (UI 그룹화)
컬러스페이스를 논리적으로 그룹화하여 UI에서 정리된 형태로 표시할 수 있습니다.
예시:
colorspaces:
- !<ColorSpace>
name: ACEScct
family: Log/ACES
- !<ColorSpace>
name: Rec.709
family: Video/Broadcast/SDR
이렇게 설정하면 Log/ACES, Video/Broadcast/SDR 등의 그룹으로 표시됩니다.
6️⃣ aliases (별칭 설정)
컬러스페이스의 대체 이름을 지정할 수 있습니다. 이를 통해 짧은 이름을 사용하거나, 이전 버전과의 호환성을 유지할 수 있습니다.
예시:
- !<ColorSpace>
name: ACEScg
aliases: [ACES_CG, ACES_CG_V1]
7️⃣ display_colorspaces (디스플레이 컬러스페이스)
디스플레이 기반 컬러스페이스를 정의하며, to_display_reference 및 from_display_reference를 사용하여 변환을 설정합니다.
예시:
display_colorspaces:
- !<ColorSpace>
name: sRGB
description: |
sRGB 모니터 (EOTF 적용)
encoding: sdr-video
from_display_reference: !<GroupTransform>
children:
- !<BuiltinTransform> {style: "DISPLAY - CIE-XYZ-D65_to_sRGB"}
- !<RangeTransform> {min_in_value: 0., min_out_value: 0., max_in_value: 1., max_out_value: 1.}
디스플레이 컬러스페이스(Display Colorspaces)
컬러스페이스(ColorSpaces)는 색상 데이터를 해석하고 변환하는 기준을 정의하는 중요한 개념입니다. OpenColorIO(OCIO)에서 컬러스페이스는 씬 기반(scene-referred) 컬러스페이스와 디스플레이 기반(display-referred) 컬러스페이스로 나뉩니다.
이번 글에서는 디스플레이 컬러스페이스(Display Colorspaces)에 대해 알아보고, OpenColorIO 설정 파일에서 이를 어떻게 정의하는지 살펴보겠습니다.
디스플레이 컬러스페이스란?
디스플레이 컬러스페이스는 디스플레이(모니터, TV, 프로젝터 등)에서 보이는 색을 정의하는 컬러스페이스입니다. 일반적인 컬러스페이스와 유사하지만, 기준이 씬 기반이 아닌 디스플레이 기반이라는 차이가 있습니다.
즉, 씬 컬러스페이스에서 디스플레이 컬러스페이스로 변환(transform)될 때 적용되는 색 변환을 정의합니다.
OCIO 설정에서 디스플레이 컬러스페이스는 display_colorspaces 섹션에서 정의됩니다.
디스플레이 컬러스페이스 설정 방법
OCIO 설정 파일(예: config.ocio)에서 display_colorspaces 섹션을 사용하여 디스플레이 컬러스페이스를 정의할 수 있습니다. 일반 컬러스페이스(colorspaces)와 비슷하지만, 컬러 변환을 설정하는 키값이 다릅니다.
✅ 일반 컬러스페이스와의 차이점
컬러스페이스 유형 변환 키값
일반 컬러스페이스 | to_scene_reference, from_scene_reference |
디스플레이 컬러스페이스 | to_display_reference, from_display_reference |
즉, 디스플레이 컬러스페이스는 씬 기준(scene-referred)이 아닌 디스플레이 기준(display-referred)으로 변환됩니다.
📌 예제: sRGB 디스플레이 컬러스페이스
display_colorspaces:
- !<ColorSpace>
name: sRGB
family:
description: |
sRGB 모니터 (비선형 감마 보정 EOTF 적용)
isdata: false
categories: [ file-io ]
encoding: sdr-video
from_display_reference: !<GroupTransform>
children:
- !<BuiltinTransform> {style: "DISPLAY - CIE-XYZ-D65_to_sRGB"}
- !<RangeTransform> {min_in_value: 0., min_out_value: 0., max_in_value: 1., max_out_value: 1.}
위 예제에서는 sRGB 디스플레이 컬러스페이스를 설정하고 있습니다.
- name: sRGB → 컬러스페이스의 이름
- description → 해당 컬러스페이스의 설명
- encoding: sdr-video → 표준 다이나믹 레인지(SDR) 비디오 컬러스페이스
- from_display_reference → 디스플레이 기준에서 변환될 때 적용될 변환 설정
- BuiltinTransform을 이용해 CIE-XYZ-D65를 sRGB로 변환
- RangeTransform을 사용해 색상의 최소/최대 값을 0~1 범위로 정리
이렇게 설정하면 씬 기반의 컬러스페이스를 디스플레이 기준의 sRGB 컬러스페이스로 변환할 수 있습니다.
디스플레이 컬러스페이스를 활용하는 이유
디스플레이 컬러스페이스를 사용하면 다양한 디스플레이 환경에서 정확한 색 표현이 가능합니다. 예를 들어:
- sRGB, Rec.709, Rec.2020, HDR PQ, HLG 등 다양한 디스플레이 표준을 지원
- 씬 컬러스페이스(예: ACEScg)에서 디스플레이 컬러스페이스로 정확한 변환 가능
- OCIO를 지원하는 Nuke, Blender, Resolve 등의 프로그램에서 컬러 매니지먼트 활용
특히 HDR과 SDR을 혼합하여 작업할 때 디스플레이 컬러스페이스를 정확하게 설정하는 것이 중요합니다.
정리
디스플레이 컬러스페이스는 OCIO에서 디스플레이 기반의 색 변환을 정의하는 핵심 요소입니다. 이를 활용하면 씬 컬러스페이스에서 디스플레이 컬러스페이스로의 변환을 정확하고 일관되게 수행할 수 있습니다.
📌 핵심 요약
- 디스플레이 컬러스페이스는 디스플레이 환경에서의 색 표현을 정의하는 컬러스페이스
- 씬 컬러스페이스와 다르게 to_display_reference, from_display_reference를 사용
- OCIO를 통해 다양한 디스플레이 표준(sRGB, Rec.709, HDR 등)을 설정 가능
- 정확한 컬러 매니지먼트를 위해 필수적인 개념
OCIO 설정을 다룰 때 디스플레이 컬러스페이스를 적절히 구성하면, 더욱 정밀한 컬러 워크플로우를 구축할 수 있습니다. 🎨
Named Transforms: 유틸리티 변환의 활용
Named Transform이란?
OpenColorIO(OCIO)에서 Named Transform은 참조 공간(reference space)이나 프로세스 공간(process space)에 종속되지 않는 독립적인 변환(transform)입니다. 일반적인 컬러스페이스 변환과 달리, 고정된 색 공간 간 변환이 아닌 특정 기능을 수행하는 변환을 정의하는 데 사용됩니다.
예를 들어, 단순한 LUT1D(1D 룩업 테이블)를 적용하는 "유틸리티 커브(Utility Curve)" 변환을 정의할 때 유용합니다.
Named Transform이 필요한 이유
보통 OCIO에서는 컬러스페이스 변환을 사용하지만, Named Transform을 활용하면 다음과 같은 장점이 있습니다.
✅ 독립적 변환 적용 가능
- 특정 색 공간을 참조하지 않고 변환을 적용할 수 있어 유연성이 높습니다.
✅ 유틸리티 기능 구현
- 특정 LUT 적용이나 감마 보정 등, 기존 컬러스페이스 변환과 별개로 유용한 기능을 수행할 수 있습니다.
✅ 레거시 워크플로우 지원
- 과거 색 관리 방식(예: RGB 프라이머리를 무시하고 1D 변환만 수행하는 방식)을 재현하는 데 사용할 수 있습니다.
- 다만, OCIO 구성(config) 작성자는 가능하면 Named Transform 대신 일반적인 OCIO 컬러스페이스를 활용하는 것이 권장됩니다.
Named Transform 설정 방법
Named Transform은 다음과 같은 주요 속성을 가집니다.
속성 | 설명 |
name | 변환의 이름 |
aliases | 별칭(다른 이름으로 호출 가능) |
description | 변환에 대한 설명 |
family | UI에서 그룹화할 때 사용 |
categories | 특정 애플리케이션에서 필터링할 때 사용 |
encoding | 색상 인코딩 방식(예: log, scene-linear) |
transform | 적용할 변환(LUT, 매트릭스 변환 등) |
inverse_transform | 역변환(선택 사항) |
Named Transform 예제
아래 예제는 Cineon Log 색상을 선형 공간으로 변환하는 Named Transform을 정의한 것입니다.
named_transforms:
- !<NamedTransform>
name: Utility Curve -- Cineon Log to Lin
transform: !<FileTransform> {src: logtolin_curve.spi1d}
📌 설명
- "Utility Curve -- Cineon Log to Lin" 이라는 이름의 변환을 정의합니다.
- logtolin_curve.spi1d 파일을 참조하여 LUT 기반의 변환을 수행합니다.
- 특정 컬러스페이스 간 변환이 아닌, 독립적인 LUT 적용을 목적으로 합니다.
Named Transform 활용 사례
✔ 단순한 감마 조정 LUT 적용
✔ 기존 컬러스페이스 변환과 독립적인 유틸리티 변환 제공
✔ 렌더링 과정에서 특정 톤매핑을 적용하거나 색 보정 LUT을 손쉽게 적용하는 용도
결론: 언제 Named Transform을 사용할까?
🎯 컬러스페이스를 정의하지 않고 특정 LUT만 적용해야 할 때
🎯 특정 레거시 워크플로우를 지원해야 할 때
🎯 단순한 감마 변환이나 보정 LUT을 추가하고 싶을 때
하지만, 가능하면 Named Transform보다는 일반적인 컬러스페이스 변환을 활용하는 것이 권장됩니다.
OCIO 컬러스페이스를 통해 정확한 색 변환을 수행하는 것이 색 관리의 일관성을 유지하는 데 더욱 유리하기 때문입니다.