본문 바로가기
vfxai 잡학지식 vfxai 잡학지식

누크 Merge screen과 plus: 리니어에서 screen이 깨지는 이유

vfx 잡학지식 읽는 시간 약 8분 조회 2

Merge 노드의 screen으로 불꽃이나 발광 패스를 겹쳤는데, EXR의 밝은 부분이 기대만큼 더해지지 않을 때가 있습니다. 1보다 큰 리니어 값이나 음수 값도 같은 screen 공식으로 계산될까요?

Viewer의 노출이나 색공간을 먼저 의심하기 쉽지만, 결과는 노드가 받은 숫자와 연산 설정에도 달려 있습니다. 같은 A와 B를 넣어 screen과 plus가 어느 지점에서 갈라지는지 차례로 확인해 보겠습니다.

1. Merge 노드의 같은 픽셀과 채널에서 비교해야 합니다

Merge 노드의 screen과 plus는 이미지 전체의 밝기를 한꺼번에 비교하는 이름이 아닙니다. 한 픽셀의 채널값 A와 B로 새 값을 계산하는 연산입니다.

빨강 채널에서 나온 결과와 초록 채널에서 나온 결과는 서로 다를 수 있습니다. 따라서 같은 프레임, 같은 픽셀, 같은 채널의 입력값을 비교하세요.

뷰어에서 불꽃이 얼마나 밝아 보이는지만 보면 숫자 계산과 표시 변환이 섞일 수 있습니다. 화면의 모양만 보지 말고 입력과 출력의 수치도 함께 확인하세요.

2. 리니어의 1.0은 화면의 흰색과 같지 않습니다

리니어 HDR 작업에서는 채널값이 1.0보다 클 수 있습니다. Foundry는 plus 결과가 1.0을 넘을 수 있다고 설명합니다. 그러므로 값이 1을 넘었다고 이미지가 이미 흰색으로 잘렸다고 단정하면 안 됩니다.

반대로 화면에서 흰색으로 보여도 원래 픽셀값이 정확히 1.0이라는 뜻은 아닙니다. Viewer는 작업 색공간의 값을 디스플레이용으로 변환해 보여 줄 수 있으므로, 화면의 흰색만으로 Merge 수식을 판단하지 마세요. Viewer 변환과 Grade 값의 차이는 누크 뷰어 변환과 Grade 노드의 자리 글에서 확인할 수 있습니다.

Merge 노드에는 Video colorspace 설정도 있습니다. Foundry 문서상 기본값은 꺼짐이며, 켜면 합성 전에 Project Settings의 8-bit 색공간으로 변환하고 결과를 다시 리니어로 바꿉니다. 이 옵션이 켜져 있다면 리니어 값끼리 그대로 계산한다고 가정하지 마세요.

3. plus는 음수 입력도 그대로 더합니다

plus는 A와 B의 합입니다. A가 −0.2이고 B가 0.6이면 결과는 0.4입니다. A가 −0.2이고 B가 −0.5라면 결과는 −0.7입니다.

실제 파일에서 음수 채널값을 발견했다면, 그 값이 생긴 원인은 파일과 앞단 노드를 따로 살펴야 합니다. 이 글의 비교는 입력값을 넣어 연산 결과를 확인할 뿐, 음수값의 원인을 진단하지는 않습니다.

그렇다면 screen도 음수와 1 초과 값을 그대로 더할까요? 아니면 값의 크기에 따라 결과가 다른 쪽으로 바뀔까요?

4. 수식보다 먼저 Merge 설정 세 가지를 확인합니다

Merge의 기본 operation은 over입니다. 두 연산을 비교하려면 같은 A와 B 입력을 유지한 채 operation만 screen과 plus로 바꾸어야 합니다.

Video colorspace가 켜져 있는지도 확인하세요. 켜져 있으면 합성 전에 설정된 8-bit 색공간으로 변환한 뒤 다시 리니어로 돌아옵니다. 이 비교는 RGB 채널 수치에 집중하므로 alpha, mask, mix는 계산하지 않습니다.

Foundry 문서는 대부분의 Merge 연산에서 premultiplied 입력을 기대한다고 설명합니다. 예외인 matte 연산은 unpremultiplied 입력을 사용합니다. 가장자리에서 예상과 다르게 보인다면 입력의 premultiplication과 alpha도 함께 확인하세요. Unpremult가 필요한 경우는 별도로 정리했습니다.

이제 목표와 입력값을 분리했으니, 결과를 가르는 정확한 경계를 확인할 차례입니다.

5. Merge 노드에서 무엇을 더하려는지에 따라 operation을 고릅니다

광도나 발광값을 리니어에서 누적하려면 plus를 비교하세요. A+B가 그대로 출력되어 1보다 큰 값도 남길 수 있습니다.

Foundry는 plus를 레이저 빔 합성의 예로 들지만 matte를 합치는 데는 권하지 않습니다. 반면 screen은 matte 결합과 레이저 빔에 사용할 수 있다고 설명합니다. 데이터가 광도인지 matte인지 먼저 구분하세요.

전경을 배경 위에 올리는 일반적인 합성이 목적이라면 기본 연산인 over를 사용하세요. 밝기를 더하는 일과 알파로 전경을 합성하는 일은 같은 문제가 아닙니다.

6. 실제 합성에서 비교할 순서

  1. 같은 두 입력으로 Merge를 두 개 준비하거나 operation을 번갈아 바꾸세요. 한 번에 바꾸는 설정은 operation 하나로 제한합니다.
  2. 같은 프레임, 같은 픽셀, 같은 RGB 채널의 A·B 입력값과 Merge 출력값을 비교하세요. Viewer의 색만으로 1.0 경계를 판정하지 마세요.
  3. Video colorspace 설정을 확인하세요. 켜져 있으면 합성 전후의 색공간 변환을 고려해야 합니다.
  4. 가장자리 결과가 다르면 alpha, premultiplication, mask, mix 설정도 확인하세요. 이 글의 체험 도구는 이 설정을 계산하지 않습니다.

체험 도구는 Foundry 문서 수식을 따라 단일 채널 숫자를 계산합니다. Nuke에서 직접 실행한 결과가 아니므로, 실제 comp와 다르면 입력값과 노드 설정을 먼저 대조하세요.

그렇다면 A=1.2, B=0.6일 때 screen 결과도 1.8처럼 더해질까요? 공식의 경계에서 답이 갈립니다.

7. screen은 두 입력이 모두 0과 1 사이일 때만 screen 공식을 씁니다

Foundry Nuke 17.1v2의 Merge 노드 문서에서 A와 B가 모두 0보다 크고 1보다 작을 때의 screen 결과는 A + B − A×B입니다. 둘 중 하나라도 그 범위를 벗어나면 screen은 max(A,B)를 반환합니다.

경계값 0과 1도 엄격한 범위 안에 들지 않습니다. A=0.6, B=0.8이면 screen은 0.6+0.8−0.48, 즉 0.92입니다. A=1.2, B=0.6이면 screen 공식 대신 더 큰 입력값 1.2를 반환합니다.

plus는 두 경우 모두 A+B입니다. 따라서 첫 예시의 plus 결과는 1.4이고, 두 번째 예시에서는 1.8입니다. 리니어 HDR에서 screen이 깨진 듯 보이는 이유는 오류라기보다, 값이 범위를 벗어나 max 가지를 타기 때문입니다.

ABscreenplusscreen 쪽 계산
0.60.80.921.40.6+0.8−0.48
1.20.61.21.8max(1.2,0.6)
−0.20.60.60.4max(−0.2,0.6)
−0.2−0.5−0.2−0.7max(−0.2,−0.5)
00.70.70.7max(0,0.7)
10.411.4max(1,0.4)

A와 B를 넣고 결과를 비교하세요

한 픽셀의 한 채널 값으로 계산합니다. 입력 범위는 -2부터 4까지이며, 결과 눈금은 -4부터 8까지입니다. 입력 범위를 벗어나면 수치를 계산하지 않습니다.

screen 조건을 계산합니다.
screen 결과0.92
plus 결과1.4

눈금은 리니어 수치의 위치를 보여 주는 단순 그래프입니다. Nuke Viewer의 표시 변환이나 모니터 밝기를 재현하지 않습니다.

이 체험은 Foundry Nuke Merge 문서의 수식을 계산합니다. Nuke에서 실행한 결과는 아닙니다. Alpha, premultiplication, mask, mix, Viewer 변환은 계산하지 않습니다.

공식 문서

확인한 기준은 Nuke 17.1v2 공식 문서입니다. 아래 링크에서 operation 설명을 다시 볼 수 있습니다.

한 줄 정리

리니어 HDR의 Merge 노드에서 screen이 멈춘 것처럼 보이면 오류보다 먼저 A와 B가 모두 0과 1 사이인지, 아니면 max(A,B) 가지로 계산됐는지 확인하세요.

vfx 잡학지식

함께 보면 좋은 글

댓글 0

첫 댓글을 남겨보세요.