이번에 V-ray5에서 ACEScg 대한 내용이 있어서 검색을 통해 알아봤다.
ACES(Academy Color Encoding System)
아카데미 후원으로 개발된 것으로 컬러관리 및 공유 시스템이다.
https://www.oscars.org/science-technology/sci-tech-projects/aces
현재는 넷플릭스, HBO, 많은 스튜디오가 ACES와 함께 작업하도록 요구한다고 한다.
그중에 하나로 CG/FX 관련 아티스트의 작업 파이프라인으로 사용되고 있는 것이 ACEScg이다.
ACES는 sRGB보다 넓은 색 영역과 높은 dynamic range가 특징이다. 그만큼 색정보가 많다는 게 장점이다.
여기서 또 나오는 단어가 OCIO이다
OCIO(OpenColorIO)는 Sony Imageworks가 개발한 색상 관리 설루션이다. ACES와 호환되어 같이 사용된다.
ACES가 소스라면 OCIO는 변환장치로 이해하면 된다.
색 관리(color management)에 대한 전문적인 지식과 이해가 없기에 단순히 Vray라는 렌더러 툴에서 어떻게 사용하는가에 대한 내용만 다룬다,
1. 변환장치
* Vray렌더러 설정에서 settings> color management > rendering RGB primaries : ACEScg로 설정한다.
색상이 IDT/렌더링 공간을 통해서 변환된다. 이렇게 설정하면 vray 내부 구성요소(VraySun/Sky, temperature color, vraymtl 등)에도 영향을 미친다.
( 맥스 스크립트 : vr.options_rgbcolorspace=2 )
* 'Auto RGB primaries for vraybitmap textures'에 체크한다.
이 기능은 vraybitmap의 RGB primaries가 default 상태일 때는 매번 텍스쳐의 이름(태그)에서 color space를 파악하고 이미지를 가져온다. 옵션이 활성화 되어 있지 않으면 텍스쳐의 이름(태그)가 있더라도 비트맵 텍스쳐에서 색상변환을 수행하지 않도록 V-Ray에 지시한다.
( 맥스 스크립트 : vr.options_useColorSpaceForBitmaps=true )
2. 텍스쳐, color 설정 (입력)
렌더링에 사용되는 텍스쳐 색공간을 ACEScg 색공간으로 바꾸는데 인식해줘야 할 절차가 있다.
(vraycolor map에도 아래와 같은 자체 컨트롤이 존재한다.)
1) RGB color space
텍스쳐 비트맵이 어느 색 공간에 있다는 것을 알려주어서 ACEScg 색 공간으로 변환을 하게 된다.
비트맵이 문자열(태그) 로 되어 있는 경우 'Default' 상태면 자동 인식하게 되지만, 문자열(태그) 가 없는 경우 수동으로 설정 해주어야 한다.
■ 'Auto RGB primaries for vraybitmap textures'에 비체크 또는 파일명에 접두사가 없는 경우 수동으로 조절하기
Default : 'Auto RGB primaries for vraybitmap textures'가 체크시에는 문자열(태그)로 판단 하지만, 비체크시에는 문자열(태그)이 있어도 변환을 하지 않는다.
sRGB Primaries : _srgb , _lin_srgb
( sRGB Primaries를 선택하면 로드된 이미지는 sRGB로 간주하고 기본적으로 vray에 이러한 맵이 ACEScg에 대한 변환이 필요하다고 말한다. '_lin_sgb'는 통상 linear sRGB 로 인코딩된 8bit 이미지를 의미하지만 Albedo에 사용되어지는 HDR, EXR 같은 감마 보정이 안들어간 이미지를 말하기도 한다.)
ACES Primaries : _acescg (외부에서 ACEScg로 작성된 파일이라 변환이 필요 없는 경우)
RAW : _raw ( Iinear 렌더링 과정에서 데이터로만 사용되는 맵들이라 변환이 필요 없다. )
■ 'Auto RGB primaries for vraybitmap textures'에 체크 시 default 상태일 때는 파일 이름 문자열로 자동으로 색공간을 파악한다.
이때 텍스쳐 파일은 용도에 따라서 미리 '_lin_srgb' , '_srgb' , '_acescg' 등으로 명명 되어 있어야 한다.
ex)
texture01_lin_srgb.exr
look_srgb.png
texture03_srgb.jpg
_srgb: 8~16 bit 이미지 jpg, png 일 때 (일반적으로 Albedo/Diffuse/Base color map이 된다.)
_raw: 변환이 불필요한 데이터 맵 (displacement, roughness, Metallic, normal, opacity, bump map 등)
_lin_srgb: HDR, EXR , 16~32bit 리니어 이미지(감마 무보정 PNG, TIFF 등) 일 때 ( Diffuse/ /SSS/translucency/textured lights 등 색상맵으로서 사용되는 경우에 해당.)
_acescg: ACES로 변환된 텍스쳐를 가져올 때
*여기서 파일명 문자열에 _raw와 _lin_sgb가 붙어 있어도 주의가 필요하다.
_raw는 bump 맵에 사용될 경우 예전처럼 OCIO 노드 연결 없는 상태와 같다. (none)
_lin_srgb는 Albedo map에 사용되는 경우 ACEScg 색공간 변환이 필요하다. 그래서 예전 같으면 OCIO 노드를 연결이 필요하다. (OcioColorSpace =sRGB Primaries로 설정 하고 bump로 사용할 때는 OcioColorSpace = RAW를 따라야 한다.)
2) Color space transfer function
3ds max 내부에서는 리니어로 작업이 이루어지기 때문에 비트맵의 색공간(Gamma)에 따라 선형화 하는 작업이 필요하다.
비트맵의 인코딩에 따라 감마 2.2 으로 저장된 파일인 경우 그의 역수(1/2.2) 또는 0.4545를 사용하여 감마 보정을 제거 할 수 있다. RAW의 경우 그대로 사용한다.
( 3ds max에서는 감마2.2 와 sRGB는 동일한 것으로 보고 작업하지만 실제로는 미미한 차이가 있다. sRGB로 인코딩 경우 정확히 하려면 sRGB 역 행렬 계산이 필요하다.)
문자열(태그)가 있다면 'Auto' 상태로 설정하면 된다, 태그가 없거나 맥스가 비트맵 파일 유형을 파악을 못하는 경우 수동으로 설정해주어야 한다, 'From 3ds max' 는 3dsmax의 gamma override 방식을 따른다.
None - 보정이 적용되지 않는다.
inverse gamma - 이미지의 감마 보정 값이다. 예를 들어 비트맵이 2.2 감마 보정을 사용하여 디스크에 저장된 경우 렌더링에서 해당 보정을 제거하려면 0.4545를 입력해야 한다.
sRGB - 로드된 이미지가 sRGB 전송 함수에서 고려됩니다;
From 3ds max - 감마는 3ds Max 감마 설정(사용자 지정 -> 환경설정 -> 감마 및 LUT)에서 제어된다.
Auto - 색상 전송 함수를 자동으로 결정한다. 비트맵 파일 이름에 "_srgb" 문자열이 포함된 경우 전송 함수는 sRGB가 된다. 비트맵 파일 이름에 "_lin_srgb" 또는 "raw" 문자열이 포함된 경우 보정이 적용되지 않는다. 색상 구성 요소당 8비트, 색상 구성 요소가 3개 또는 4개(예: png, jpg, 기타)이고 접미사가 없는 비트맵 파일의 경우 전송 함수는 sRGB이며 다른 모든 경우에는 보정이 적용되지 않는다.
출처: https://docs.chaos.com/display/VMAX/VRayBitmap
일반적으로 평균값을 가진 감마 2.2의 jpg는 선형화하고, 무보정 감마 이미지와 HDRI는 그대로 사용해서 맥스 내부에서 리니어로 사용 하지만 가져오는 특정 데이터 맵들과 ACEScg 이미지 파일은 inverse gamma= 1.0 (또는 none type)이어야 한다.
예를 들어
_srgb 를 albedo에 사용하는 경우
color space transfer function = inverse gamma= 0.4545 or From 3ds max / RGB color space = sRGB
_lin_srgb 를 albedo에 사용하는 경우
( Dome light 또는 vray light, self illumination 에 연결해서 사용되는 HDRI 텍스쳐등도 포함)
color space transfer function = inverse gamma= 1.0 or none / RGB color space = sRGB
_raw 를 bump, normal등 에 사용하는 경우
color space transfer function = inverse gamma= 1.0 or none / RGB color space = RAW
<그림1>
<그림1>은 sRGB.EXR 소스파일과 ACEcg로 만들어진 소스파일을 각각 사용하여 RGB Primaries 상태에 맞게 설정 했을때 두 샘플 색상은 동일한 결과를 보여주고 있다.
소스 다운로드 :
---------------------------------------------------------------------------------------------
* V-ray Asset Browser의 소스들은 모두 문자열이 명명되어 있기 때문에 수동으로 안 해도 된다.
* V-ray 5 이전 버전에서는 OcioColorSpace를 vraycolor에서 UI를 보이게 하기 위해 환경변수를 사용할 수 있다.
( ACEScg ColorSpace 기능들은 숨겨져 있을 뿐 Vray next sp3부터 지원되는 것 같다.)
변수 : VRAY_SHOW_COLOR_SPACE_UI
변숫값 : 1
---------------------------------------------------------------------------------------------
3. 렌더러 color mapping
이미지는 선형공간에서 렌더링 되고 선형(Linear)결과여야 한다.
그래서 렌더 설정> vray 탭> color mapping : Reinhard의 Burn value 1.0 또는 Linear Multiply 유형으로 사용한다.
(Reinhard는 Exponential와 Linear multiply의 blend 이기 때문에 Reinhard의 Burn value 1.0 은 Linear Multiply 모드와 같다. )
4. VFB (출력)
vray 내부에서 선형 결과를 통해 나온 ACEScg 결과를 보기 위해서 디스플레이 설정이 필요하다.
이 단계는 VFB에서만 보는 모습을 말한다. 타 프로그램으로 전송 시 타 프로그램에서 ACEScg를 지원을 안 하면 VFB에서 보는 모습과 다르게 보인다.
출력에는 두 가지 방법이 있다.
1. ACEScg 특성상 16비트 이상 리니어로 출력하는 것이다. (EXR, HDR)
이 방법이 권장되며 단점은 타 편집 프로그램에서 ACEScg가 지원이 되어야만 한다.
Display Correction으로 VFB의 보는 방식을 OCIO로 선택한다.
여기서 처음에 말했듯이 OCIO가 필요하다.
* 다운로드 : https://github.com/colour-science/OpenColorIO-Configs (오픈소스이며 현재 1.2까지 나와 있다.)
OCIO file로 'config.ocio' 해당 파일 경로를 지정해준다.
Input Colorspace : ACES-ACEScg ----> 입력파일에 변환이 사용되는 색상 공간을 지정
Display Device : ACES ----> 디스플레이에 색상 공간이 표시되는 방식
View Transform : sRGB ----> 렌더링 공간의 장면 참조 색상을 미리보기용 디스플레이 참조 색상로의 변환
이렇게 하면 결과물을 ACES 프로파일로 보는 모습과 같다.
-------------------------------------------------------------------
참고)
'config.ocio'를 직접 불러와서 사용해도 되지만 시스템 환경변수 등록하면 맥스를 실행할 때마다 불러올 필요가 없다.
변수 값(v)에는 해당 파일 경로를 입력해준다.
변수 이름 : OCIO
변수 값(v) :........................\aces_1.0.3\config.ocio
----------------------------------------------------------------------
2. VFB에서 보는 장면 그대로 저장하는 방법
VFB > image 메뉴에서 클립보드로 복사하여 저장하기 (CTrl+V)를 사용한다.
또는 OCIO 하단에 'save in image'를 체크하고 EXR (multi-channel .exr 제외), tiff 또는 jpg로 출력 (Gamma Override=1) 한다.
(EXR은 추후 포토샵에서 노출 조정이 필요하다, 8bit jpg에서는 색 영역 많은 부분의 정보들이 손실될 수 있다.)
=======================================================================
※ 포토샵에서의 작업 (ACES 색공간 파일 불러오기)
포토샵에서는 리니어 32bit 작업에 제한적이다. 그리고 EXR, HDR 파일을 불러오기 위해서는 플러그인이 필요하다.
다운로드: www.exr-io.com/
다음 세 가지 방법이 있다.
- 3)번을 추천하며 1)번과 2)번은 기록상 남겨두기 위한 것입니다.
1) LUT를 활용하는 방법 ( ACES Central의 Alex Fry 씨가 제안한 방법이다.)
출처:
https://community.acescentral.com/t/aces-photoshop-friendly-workflows/1369/30
편집 (edit) > 프로필 할당(Assign Profile) - ACES CG Linear를 적용한다.
ACES CG Linear ICC 파일은 Mac에서만 있는 것 같다. Win에서는 사용하기 위해서는 다운로드하여 설치를 해야 한다.
(ACES CG Linear ICC 파일을 오른 클릭후 '프로필 설치'
또는 C:\Windows\System32\spool\drivers\color 해당 경로 폴더안에 넣는다. )
다운로드 : https://github.com/liuziangexit/EmbedICCProfile/tree/master/icc-profile
Layer -> New Adjustment Layer -> Color Lookup -> Load 3D LUT에서 ACEScg_Photoshop_SceneLinear_to_DisplayLinear_Transform_DimSurround.csp LUT 파일을 불러온다.
다운로드 : https://github.com/alexfry/PureNukeACES
레이어에서 조정 레이어만 지우고 ACEScg_EXR 상태로 타 프로그램 전송도 가능하다.
2) 플러그인을 이용하는 방법 ( ACES Central Central의 Christophe Brejon 씨가 제안한 방법이다.)
출처:
https://community.acescentral.com/t/aces-photoshop-friendly-workflows/1369/9
다운로드 :
PS: fnordware.blogspot.com/2017/02/opencolorio-for-photoshop.html
AE: http://fnordware.blogspot.com/2012/05/opencolorio-for-after-effects.html
압출을 풀어 OpenColorIO PS.8bf를 포토샵 plugin 폴더에 넣는다.
필터 메뉴> OpenColorIO을 사용한다. VFB 프리뷰에서 했던 것처럼 같은 환경을 만들기 위해 OCIO에서 'config.ocio'를 불러와야 한다. 역시 설정 조건은 VFB Display Correction과 같게 설정한다.
Layer -> New Adjustment Layer -> Level에 0.45 값을 넣어준다.
포토샵은 32bit에서는 제한적이기 때문에 레이어를 합치고 16bit 모드로 바꾸어 편집하면 된다.
3) 1과 2를 혼합하는 방법 ---- 가장 추천.
출처:
필터 메뉴> OpenColorIO 의 Export 를 사용하여 아래 내용 2가지를 '.csp' 파일로 저장한다.
주의) 저장 파일만 사용하기 위한 목적이라서 'OK' 버튼은 누르지 않도록 한다.
Input Space: ACES- ACEScg , Output space : Output-sRGB
Input Space: Utility- sRGB-Texture , Output space : Utility- Linear-sRGB
Layer -> New Adjustment Layer -> Color Lookup -> Load 3D LUT로 각각의 csp 파일을 불러와서 레이어에 적용한다.
적용 순서에 주의 하고 , ACES 변환 레이어는 다른 컬러 보정보다 항상 스택 상위에 있어야 한다.
전체 레이어 스택을 합쳐주어 8bit/16bit 에서 수정하거나 레이어만 제거 또는 비활성해주면 원본(RAW)을 유지하여 타 프로그램에 보낼때 유용하다.
ACES 워크플로우로 VFB 프리뷰 장면을 그대로 가져온 것이고 (ctrl+v)
다른 하나는 일반적인 리니어 워크플로우로 8bit sRGB jpg로 저장해서 불러온 것이고
나머지는 ACES_EXR을 위와 같은 절차로 만들어진 결과물이다. sRGB 결과물보다 색이 진하며 깊이감이 있어 보인다.
참고:
https://chrisbrejon.com/cg-cinematography/chapter-1-5-academy-color-encoding-system-aces/
https://docs.arnoldrenderer.com/display/A5AFMUG/ACES+Workflow
https://docs.sharktacos.com/photography/color-grade.html
https://www.youtube.com/channel/UCPkb3MXNE-IwdOJl9MHRA0Q
https://www.toadstorm.com/blog/?p=694
========================================================================
추가:
사용자들 요청에 의해 최근에 ACEScg 워크플로우가 vray5 카오스 자습서에 게시 되었습니다.
*3ds max :
docs.chaosgroup.com/display/VMAX/ACEScg+Workflow+Setup
참고로 차이점이 있는데
맥스 헬퍼에 사용되는 예제 마지막 사진에는 다음과 같이 되어 있습니다. 마야 헬퍼나 시네마4D 버젼용 vray 카오스 공식 영상을 보면 제가 본문에 서술한 내용과 같습니다.
INPUT_COLORSPACE=ACEScg
DISPLAY_DEVICE=sRGB
VIEW_TRANSFORM=ACES 1.0 - SDR Video
*Maya :
docs.chaosgroup.com/display/VMAYA/ACEScg+Workflow+Setup
*Shaderball Scene Sample File (3DS Max 2019-2022, V-Ray 5)
Muhammed_Hamed 씨가 Shaderball ACES 관련 맥스파일을 게재 하였습니다.
*3ds max 2024 , Vray 6
3ds max 2024의 새로운 Color management 의 기능으로 일부 과정이 단순화가 되었음.
1. Vray렌더러 설정에서 settings> color management 가 비활성화 되고 max의 Color management 를 따르게 된다. ( Color management 에서 Advanced 로 개별관리가 가능함)
2. 비트맵 파일명에 문자열(태그) 가 있는 경우 (주의 , 특정 노드 연결에서 형식이 바뀔 수 있다는 점 )
RGB color space > RGB primaries : default ,
color space transfer function : Auto 또는 From max 3ds max
3. config.ocio 을 별도로 다운로드 설치 할 필요가 없고 맥스 내장으로 VFB 에서 Display Correction의 OCIO 가 자동 설정된다.
참고 : https://youtu.be/QuJe2j7SHZ0
'Renderer > Vray' 카테고리의 다른 글
3ds Max 2021 에서 Unwrap Editor가 충돌 (0) | 2020.08.14 |
---|---|
V-Ray Material Library 경로 설정 (0) | 2020.08.08 |
vray 잠금 속성 접근 (0) | 2020.07.10 |
Vray Physical Camera (0) | 2020.05.31 |
Matte Reflection 의문 (0) | 2020.03.17 |
댓글