본문 바로가기
RV

Open RV 자동 색상 및 보기 관리 (레퍼런스 매뉴얼 12장 요약)

by 르면가게 2025. 2. 9.

🔹 Open RV 색상 관리 개요

RV에서 색상 관리는 다음 세 가지 핵심 요소로 구성됩니다.

  1. 입력 색상 공간 감지 – 이미지 속성이나 파일명을 분석하여 색상 공간 결정
  2. 작업 색상 공간 변환 – 선형 공간으로 변환 (예: sRGB, Cineon Log 등)
  3. 출력 디스플레이 변환 – 디스플레이 장치에 맞게 최적화

RV의 자동 색상 관리 기능

  • 이미지 파일 속성, 파일명, 외부 메타데이터를 기반으로 색상 공간 자동 설정
  • 내부 변환 기능(예: sRGB, Gamma, Cineon Log) 활용
  • 3D LUT 및 CDL(Color Decision List) 파일을 적용하여 사용자 정의 색상 관리 가능

1️⃣ 자동 색상 관리를 위한 source-group-complete 이벤트

RV는 미디어가 추가될 때 source-group-complete 이벤트를 생성하며, 이를 통해 자동으로 색상 관리를 수행할 수 있습니다.

🔹 source-group-complete 이벤트 활용

  • 새로운 미디어가 추가될 때 자동으로 색상 설정을 적용 가능
  • 특정 사용자 또는 환경에 맞는 색상 설정을 커스터마이징 가능

기본 동작 (RV 내부 sourceSetup() 함수)

def sourceSetup(event):
    args = event.contents().split(";;")
    group = args[0]
    fileSource = groupMemberOfType(group, "RVFileSource")

    if fileSource:
        fileNames = commands.getStringProperty(f"{fileSource}.media.movie", 0, 1000)
        fileName = fileNames[0]
        ext = fileName.split('.')[-1].upper()

        # 파일 확장자 기반 색상 공간 설정
        if ext in ['JPEG', 'JPG', 'MOV', 'MP4']:
            setFileColorSpace(fileSource, "sRGB")
        elif ext == 'EXR':
            setFileColorSpace(fileSource, "Linear")
        elif ext == 'DPX':
            setFileColorSpace(fileSource, "Cineon Log")

event.bind("source-group-complete", sourceSetup)

기본 설정

  • JPEG, MOV, MP4 → sRGB로 변환
  • EXR → 선형(Linear) 공간 유지
  • DPX → Cineon Log 변환

2️⃣ LUT 및 CDL을 활용한 색상 변환

🔹 3D LUT 및 채널 LUT 적용

RV에서는 LUT를 적용하여 색상 보정을 수행할 수 있습니다.

readLUT("my_lut.cube", "#RVDisplayColor", True)

적용 대상

  • 파일 LUT (#RVDisplayColor 노드 사용)
  • 개별 채널 LUT (#RVLookLUT 노드 사용)

🔹 CDL(Color Decision List) 적용

CDL 파일을 사용하여 색상 보정 값을 적용할 수도 있습니다.

readCDL("color_adjustments.ccc", "#RVLookLUT", True)

CDL 적용 방법

  • RVColor 또는 RVLookLUT 노드에 적용 가능
  • .cc, .ccc, .cdl 파일 지원

3️⃣ 사용자 정의 색상 관리 패키지 만들기

🔹 Python을 활용한 자동 색상 관리 패키지

RV에서는 Python을 사용하여 맞춤형 색상 관리 패키지를 만들 수 있습니다.

색상 자동 설정 패키지 예제 (custom_color.py)

from rv import rvtypes, commands

class CustomColorManagementMode(rvtypes.MinorMode):
    def sourceSetup(self, event):
        args = event.contents().split(";;")
        group = args[0]
        fileSource = commands.groupMemberOfType(group, "RVFileSource")

        if fileSource:
            fileNames = commands.getStringProperty(f"{fileSource}.media.movie", 0, 1000)
            fileName = fileNames[0]
            ext = fileName.split('.')[-1].upper()

            # 사용자 정의 색상 관리 규칙
            color_map = {
                "JPG": "sRGB",
                "PNG": "sRGB",
                "DPX": "Cineon Log",
                "EXR": "Linear"
            }
            if ext in color_map:
                commands.setStringProperty(f"{fileSource}.color.colorSpace", [color_map[ext]], True)

        event.reject()

    def __init__(self):
        rvtypes.MinorMode.__init__(self)
        self.init("Custom Color Setup",
                  None,
                  None,
                  [("source-group-complete", self.sourceSetup, "Custom Color Management")])

def createMode():
    return CustomColorManagementMode()

이 패키지는

  • 미디어 추가 시 자동으로 색상 공간 설정
  • DPX는 Cineon Log, EXR은 Linear, JPG 및 PNG는 sRGB로 설정
  • 필요에 따라 새로운 색상 공간 규칙을 추가 가능

4️⃣ 환경 변수 및 명령줄을 활용한 색상 설정

RV는 환경 변수 또는 명령줄 옵션을 사용하여 색상 공간을 설정할 수도 있습니다.

🔹 환경 변수 활용

export RV_OVERRIDE_TRANSFER_JPG="sRGB"
export RV_OVERRIDE_TRANSFER_EXR="Linear"
export RV_OVERRIDE_TRANSFER_DPX="Cineon Log"

위 설정을 적용하면

  • 모든 JPG 파일 → sRGB 변환
  • 모든 EXR 파일 → Linear 변환
  • 모든 DPX 파일 → Cineon Log 변환

🔹 RV 실행 시 명령줄 옵션 추가

rv -flags RV_OVERRIDE_TRANSFER_JPG=sRGB RV_OVERRIDE_TRANSFER_EXR=Linear my_image.jpg

명령줄에서도 동일한 색상 변환 규칙을 적용 가능


🔹 마무리

✅ RV의 자동 색상 관리 기능을 활용하면 다음과 같은 작업이 가능

  1. 입력 이미지의 색상 공간 자동 감지 및 변환
  2. 3D LUT, CDL을 활용한 색상 보정 적용
  3. Python 기반 패키지를 만들어 사용자 정의 색상 관리 구현
  4. 환경 변수 및 명령줄 옵션을 사용하여 글로벌 색상 설정 가능

🚀 이제 RV의 자동 색상 관리 기능을 활용하여 작업 환경을 최적화해 보세요! 🎯

 

https://aswf-openrv.readthedocs.io/en/latest/rv-manuals/rv-reference-manual/rv-reference-manual-chapter-twelve.html