합성 툴
언젠간 내가 다 채워넣는다
1. Merge모드 싹 다 정리
a. atop : A가 위로 가지만, 이미지의 바운딩박스는 B로 한정됨
b. average : (A+B)/2, 보통 이미지가 어두워짐 (안겹치는 부분도 나눗셈을 해서 그런듯, 겹치는 부분 또한 1+1이 아니면 낮아질테니)
c. color-burn : A의 휘도에 기반하여 B가 어두워짐 <-> color-dodge : A의 휘도에 기반하여 B가 밝아짐
d. copy : A만 보여줌 (대신 mix와 mask를 통해 B를 보여주는 활용이 가능)
e. difference : abs(A-B), 두개의 굉장히 비슷한 레이어를 비교할 때 도움이 됨
f. disjoint-over, conjoint-over : over모드와 비슷한데, 실제로 사용하면서 차이를 느껴봐야 할듯. 일단 생략
g. exclusion : A+B-2AB, difference와 비슷
h. from : B-A
i. geometric : 2AB/(A+B), average와 비슷
j. hypot : sqrt(A^2+B^2), plus와 screen과 비슷, plus보다 밝진 않지만 screen보다 밝다. ("useful for adding reflection")
k. in : A,B가 겹치는 부분에 한정하여 B의 알파에 기반해 A만을 보여줌
l. mask : in의 반대
m. matte : premultiplied over, use unmultiplied image when using this operation
n. max : max(A,B)
o. multiply : A에 어두운 이미지를 두고 밝은 이미지의 B와 합성할 때 유용함. 예를 들어 연기가 있는 하얀 뒷배경을 합성할 때
p. out : B의 알파에 기반하여 A의 이미지를 보여줌(matte처리할 때 유용), in이랑 다른 점은 겹치지 않는 부분도 보여준다는 점
q. over : A+B(1-a), 가장 기초가 되는 병합. 그냥 위에 얹음
r. overlay : A가 B를 밝혀줌
s. plus : A+B, 이것을 이용하면 pixel값이 1을 넘길 수 있다는 것에 주의. 레이저빔 등을 합성할 때 유용
t. screen : if A or B <= 1? A+B-AB : max(A,B), plus와 비슷
u. stencil : out과 반대, A의 알파에 기반하여 B만을 보여줌(matte처리할 때 유용)
v. under : over의 반대, B가 앞으로 오고 A가 뒤로감
w. xor : 교집합을 빼고 나머지 이미지를 둘 다 보여줌
2. Gamma, lift, gain의 차이점
y = ax^b + c ( a:gain, b:gamma, c:offset )
lift : dark-tone에 더 많은 영향
gamma : mid-tone에 더 많은 영향
gain : highlight에 더 많은 영향
3. comp위주로 제작된 이펙트 사례들 사진으로 자세히 정리(thunder light, lens flare, 아지랑이 distortion 등등)
4. 배경합성(트래커)
[팁]
- Shuffle노드의 Node탭에서 [value in1]을 치면 선택된 aovs의 이름이 나옴
- Light-pass는 plus로 병합시킨다
- diffuse와 reflection등등..도 plus로 병합시킨다
- albedo와 direct diffuse를 divide시키면, displacement같은 것들이 아닌 순수색만 추출할 수 있음
divde시킨것과 albedo를 다시 mutiply시키면 diffuse direct로 복구시킬 수 있음
이 과정에서 albedo레이어만을 이용하여 key작업을 한 후 여러 작업을 한 다음 다시 합치는 마법 같은 행위가 가능.
대신 그림자는 바꾸지 못한다. 그림자는 shadow-pass를 뽑아서 따로 관리
- Light-pass aov에서 beauty pass와 개별의 light-pass를 병합시킬때 from operation을 쓰면, beauty에서 그 light만을 없앨 수 있음. 그리하여 따로 수정 후 다시 plus모드로 병합 가능
- Overlay를 하면 매트페인팅을 할 때 원본의 질감을 가지고올 수 있다
- Tracker는 한 개만 사용하면 T, 두 개 이상을 사용해야 R,S를 계산할 수 있다. 4포인트 트래킹으로 perspective를 변경할 수 있다
- 같은 라이트라도 범위를 짜내면서 여러번 plus
- 내보낼 때 색공간은 Output - sRGB로 하면 뷰어화면과 똑같이 보내진다. (물론, sRGB로 작업했을 시)
[Colorspace 이론]
* 색공간은 색상을 어떻게 수학적으로 수치화 시킬지에 대한 시스템이다.
* sRGB는 CRT모니터가 사용되는 시점에서 나왔다. 짧게 말하면 옛날 방식. 색영역(color-gamut)이 제한되어 있다는 것이 가장 큰 단점이다(= 현실적이지 않다.)
* ACES는 무엇인가
ACES(Academy Color Encoding System)는 특히 미디어산업에서 자주 쓰이는 Color Encoding System이다. sRGB또한 색공간 중 하나이고 Rec. 709도 마찬가지. 최근의 카메라들은 sRGB보다 훨씬 많은 데이터를 저장할 수 있는데, 이것을 raw file로 저장한다면 넓은 범위의 색으로 작업을 할 수 있다. 문제는 각기 다른 기종에서 캡쳐된 raw file들은 서로 호환이 되지 않기 때문에 통일된 색 공간인 ACES로 변환을 하는 것. 각기 다른 커브의 변환방법에 따라 ACEScc, ACEScct 등등도 존재한다.
현대의 그래픽은 카메라 footage로만 구성되지 않고 CGI와 합쳐진다. CG그래픽의 경우 대부분이 선형이기 때문에 CGI에 알맞는 변환법인 ACEScg또한 파생됐다. 넷상에서 보이는 이미지(raw file이 아닌 것들)는 대부분 sRGB 색공간을 가지고 있기 때문에 CG작업에 앞서서 색공간을 sRGB에서 ACEScg로 변환해주어야한다.

- ACES는 "photo-realistic"한 이미지를 만들어내기 위하여 탄생됐다.
- ACES는 sRGB보다 더 넓은 색영역(gamut)을 가지고있다.
- 후디니에서 렌더링된 이미지는 gamma 1.0의 linear이다. 합성툴로 가져와서 감마조정을 하고, 최종 아웃풋을 ACEScg로 내보내는 것이 국룰인듯
- openEXR(linear) <-> JPEG(sRGB, non-linear)
- 8bit 이미지인 png나 jpeg는 자동으로 2.2 gamma correction이 baked-in되지만, openEXR은 gamma correction이 적용되지 않은 linear이미지로 export됨.
- 8bit의 이미지에서 감마보정을 하는 이유는 주어진 bit depth에서 비선형커브를 적용하여 인간의 시각에 최대한 좋은 화질을 보여주려 하는 것
- 후디니 MPlay는 2.2 감마보정이 이루어진 상태이다. 따라서 색공간 변환이 안된 OpenEXR raw file로 렌더링 된 이미지를 확인한다면 MPlay랑은 다르게 보임.
- 색상을 다루는 Texture맵은 Utility - sRGB - Texture에서, 이 외 roughness, metallic, normal 등은 Utility - Raw에서부터 변환시킨다
* Colorspace의 종류
1. Linear colorspace : 선형공간, 실사를 모방. 만약 A가 B보다 2배 밝다면 brigtness도 x2임
렌더링된 exr은 99.999999% 선형공간이다
2. Logarithmic colorspace : 로그공간, 최대한 많은 데이터를 담기 위하여 휘도값을 매우 압축시킴 . 주로 하이엔드 카메라
3. Viewer colorspace(뷰포트 색공간) : artistic choice에 의해 실사와 관계 없이 변형된 색공간(ex. LUT), 선형이 아니기 때문에 연산에 주의해야함
* Nuke에서의 colorspace conversion
뉴크 자체의 색공간보다는 ACEScg로 변환하여 작업해야함!
1. Read 노드 -> 색공간을 선형으로 변형하여 작업에 수월하도록 함. 불러오는 순간 선형 색공간으로 자동변화됨
read노드의 Colorspace는 어느 색공간에서 왔는가이다. 예를 들어 카메라인지, 혹은 디지털렌더링인지 등등..
2. Write 노드 -> 영상을 본래의 색공간으로 되돌림
write노드의 Colorspace는 어느 색공간으로 돌려보낼지이다.
3. Viewer conversion -> 선형 색공간에 추가시킨 LUT (ex. sRGB rec.709)
viewr에서 보이는 색변형은 post-process의 개념이고, 실제 픽셀값에 영향을 미치지 않는다
* 유의할 점
- input curve와, output curve는 서로의 역이라고 보면 된다. 곱셈하면 선형이 됨
- colorspace노드의 in, out은 read노드와 write노드의 colorspace탭과 정확히 같은 기능을 함. (불러와서 선형으로 변환하고, 선형에서 본래의 색공간으로 변형)
- ACES 색변형은 ocioColorspace노드로 한다
[Material AOVs]
albedo, diffuse, reflect, refract, sss, emission, volume, transmission, coat
[라이트 매칭]
1. 빛의 방향
- 주변 물체의 그림자 방향으로 파악을 한다.
2. 그림자의 퀄리티
2-a. 광원의 크기 (ex. point light <-> distance light); 포인트라이트는 굉장히 날카로운 그림자가 나오고, 광원이 커질수록 그림자의 그라디언트가 강해진다
2-b. 광원과의 거리 ; 가까울수록 그림자가 길어지고, 멀어질수록 그림자가 짧아진다
3. 빛의 강도
- 이건 특정 light-pass의 그냥 gain이나 gamma값을 올리면 됨. 다만 밝은 날의 햇빛이면 그림자가 매우 짙을 것이고, 흐린날의 햇빛이면 빛이 산란, 분산되기 때문에 indirect의 영향으로 그림자가 옅어질것임
참고 : https://garagefarm.net/blog/what-is-color-space-and-why-you-should-use-aces
[활용 가능성이 높은 노드]
lightwrap : bg의 색상을 fg에 적용한다
edgeblur : 말 그대로 외곽선을 블러처리한다
keyer
keylight
premultiply
[포스트 작업]
film grain
lens flare, lens distortion
motion blur
sharpen
vignette