이번 기본 턴테이블 포토그래메트리 시리즈 에피소드에서는 Blender에서 사진의 녹색 배경을 제거하고 Color Spill을 줄이는 방법을 살펴보겠습니다.
영상 자막 텍스트
안녕하세요, 여러분! 이번 기본 턴테이블 포토그래메트리 시리즈 에피소드에서는 Blender에서 사진의 녹색 배경을 제거하고 Color Spill을 줄이는 방법을 살펴보겠습니다.
이 과정이 끝나면 투명도를 가진 PNG 파일이 생성되며, Meshroom이 이를 활용하여 특징 추출 과정에서 관심 있는 객체만 집중적으로 분석할 수 있도록 해줍니다.
이 튜토리얼은 Blender 4.3을 사용하여 녹화되었지만, 사용된 Compositing 노드는 이전 여러 버전에서도 제공되었으며, 앞으로 출시될 버전에서도 계속 지원될 가능성이 높습니다.
모든 작업은 Compositor Editor에서 이루어지므로, 장면 내에 가상의 카메라는 필요하지 않습니다. 사실, 새 Compositing 설정에서 기본으로 포함된 Render Layers 노드도 삭제할 수 있습니다.

먼저, 프로젝트의 출력 형식을 설정해야 하며, 사진의 해상도 값을 입력해야 합니다. 제 경우에는 X 해상도가 4000, Y 해상도가 3000입니다.
Properties Editor의 Output 탭에서 출력 형식을 PNG로 설정해야 하며, RGBA를 선택하여 투명도를 유지하고, 압축 값을 낮게 설정해야 합니다.
같은 탭에서 처리된 파일이 저장될 디스크 경로도 지정해야 합니다.
마지막으로, 이미지를 프로젝트에 불러오기 전에 End Frame 값을 처리할 이미지 개수와 동일하게 설정해야 합니다. 제 경우에는 146입니다.

이미지와 관련하여, Blender는 폴더 내의 이미지가 순차적으로 번호가 매겨져 있으면 이를 자동으로 이미지 시퀀스로 인식합니다.
Windows 환경에서는 이 번호 매기기를 간단하게 수행할 수 있습니다. 원본 사진이 포함된 폴더에서 모든 파일을 선택한 후, 첫 번째 파일을 마우스 오른쪽 버튼으로 클릭하고 이름 바꾸기 옵션을 선택합니다. 그런 다음, 원하는 이름을 입력하고 Enter를 누르면 Windows가 자동으로 모든 파일 이름에 연속적인 숫자 접미사를 추가합니다.
이제 Blender의 Compositor Editor에서 첫 번째 파일을 드래그한 후, 노드 유형을 Image Sequence로 변경하면 됩니다.
Image 노드 내부에서 Frames 필드에 처리할 파일 개수를 입력합니다. 이 값은 이전에 Timeline의 End Frame 필드에 입력한 값과 동일해야 합니다.

Image 노드의 Image 출력을 Viewer 노드에 연결하면 Compositor Editor의 Backdrop에서 이미지를 확인할 수 있습니다.
사진을 촬영할 때 스마트폰을 회전시킨 경우가 있어서 일부 이미지는 뒤집혀 있을 수 있습니다. 이 문제는 Rotate 노드를 사용하여 쉽게 해결할 수 있으며, Degrees 필드를 애니메이션으로 설정하면 필요한 경우에만 회전이 적용됩니다. 그러나 이러한 회전 문제는 Meshroom에서는 문제가 되지 않으므로, 이 단계에서 굳이 수정할 필요는 없습니다.
Color Key 노드와 Color Spill 노드를 설정에 추가합니다.
Backdrop 미리보기 기능을 사용하여 Color Key 노드에서 사용할 녹색 톤을 선택할 수 있습니다. Color Key 노드의 Key Color 필드에서 기본 색상을 클릭한 후, Eyedropper 도구를 선택하고 사진에서 녹색 부분을 클릭합니다.

이제 Image 노드의 Image 출력을 Color Key 노드의 Image 입력에 연결합니다.
Color Key 노드의 Matte 출력을 Viewer 및 Composite 노드의 Alpha 입력에 연결해야 합니다. 이는 이미지의 투명도 마스크를 나타내는 중요한 요소입니다.
반면, Color Key 노드의 Image 출력은 Color Spill 노드에 연결해야 합니다. 이 노드는 녹색 배경에서 촬영된 객체에 생기는 녹색 반사를 제거하는 역할을 합니다. 이후, Color Spill 노드의 출력은 Composite 및 Viewer 노드의 Image 입력에 연결해야 합니다.

이 경우, Despill Channel은 당연히 Green으로 설정해야 하며, 알고리즘은 Simple 또는 Average 중에서 선택할 수 있습니다. 어느 옵션이 더 적절한지는 Backdrop 미리보기를 통해 확인하면서 결정하면 됩니다.
이제 Color Key 노드에서 Hue, Saturation, Value 채널의 허용 오차 값을 조정할 수 있습니다. 이 값들은 Key Color 필드에서 선택한 색상과 비교하여 픽셀 색상이 얼마나 벗어날 수 있는지를 결정합니다.

Blender에서 이 작업을 수행하는 흥미로운 점은, 노드 값들을 애니메이션화할 수 있다는 것입니다. 즉, 첫 번째 프레임에 적절한 값을 설정하고, 해당 값이 유효한 동안 유지하다가 특정 이미지에서 더 이상 적절하지 않으면 값을 조정할 수 있습니다.
하지만 주의해야 할 점이 있습니다. 설정한 값이 다른 이미지에서 잘 적용되지 않는다고 판단되면, 먼저 이전 프레임으로 돌아가서 해당 프레임에 키프레임을 삽입해야 합니다. 이렇게 하면 지금까지 적용된 값이 고정됩니다. 이후, 다음 프레임으로 이동하여 새로운 요구 사항에 맞춰 값을 조정하고, 변경된 값을 새로운 키프레임으로 저장하면 됩니다. 만약 키프레임을 삽입하지 않고 바로 값을 변경하면, Blender가 프레임 간의 값을 보간하면서 마스크에 부정적인 영향을 줄 수도 있습니다.
일반적으로 Hue 매개변수는 낮은 값을 사용하는 것이 좋습니다. 값이 너무 높으면 원래 유지해야 할 색상까지 제거될 위험이 있기 때문입니다. 따라서 기본적인 색조는 낮은 허용 오차로 유지하고, Saturation 및 Value 매개변수를 조정하는 것이 더 효과적입니다. 대부분의 경우, 그린 스크린의 조명이 고르지 않아 밝기 변화가 발생할 수 있지만, 색조 자체가 크게 변하지는 않습니다.
값을 조정할 때는 항상 관심 객체를 주의 깊게 살펴야 합니다. 원하지 않는 영역을 모두 제거하려고 하지만, 경우에 따라 일부 객체의 중요한 부분까지 실수로 제거될 수도 있기 때문입니다!
보다 복잡한 영역을 제거하려면 Box Mask 노드를 하나 이상 사용할 수 있으며, 이를 Color Key 노드의 Matte 출력과 순차적으로 연결하면 됩니다. Compositor Editor에는 다른 마스킹 도구도 있지만, 우리의 목적에는 두세 개의 Box Mask 노드만으로도 충분합니다.

Box Mask 노드는 직사각형 형태의 마스크를 생성하며, 입력 마스크에서 원하는 위치에 배치하고 회전할 수 있습니다. 위치, 크기, 회전값을 조정할 수 있는 다양한 매개변수를 제공합니다. 또한, 마스크의 적용 방식도 여러 가지가 있으며, 이번 튜토리얼에서는 Subtract 모드를 사용할 것입니다. 하지만 이 방식은 영향을 받는 영역을 투명하게 만드는 것이 아니라 검게 처리한다는 점을 기억해야 합니다.
이 문제를 해결하려면, Composite 및 Viewer 노드의 Image 입력 전에 Set Alpha 노드를 추가하면 됩니다. 먼저, Composite 및 Viewer 노드에서 Alpha 연결을 해제합니다. 그런 다음, Color Spill 노드의 Image 출력을 새 Set Alpha 노드의 Image 입력에 연결합니다. 마지막으로, Set Alpha 노드의 Alpha 입력을 설정의 마지막 Box Mask 노드의 출력에 연결하면 됩니다.

이제 Compositing 설정의 최종 결과로 넘어가 보겠습니다. 여기서 확인할 수 있듯이, 이 과정은 기본적으로 Color Key 노드의 허용 오차 값과 사용된 마스크들의 위치 및 크기에 대한 키프레임 조합으로 이루어져 있습니다.
마스크의 위치 및 크기 매개변수도 애니메이션화할 수 있기 때문에, 실제로 필요한 순간에만 적용되도록 조정할 수 있습니다. 이를 통해 다른 프레임에서 관심 객체를 가리는 실수를 방지할 수 있습니다.
Color Key 노드 값을 애니메이션화할 때의 주의사항과 마찬가지로, 마스크 위치를 변경하기 전에 반드시 키프레임을 삽입해야 합니다. 그렇지 않으면 Blender가 프레임 간 마스크의 위치를 보간하면서 원치 않는 변형이 발생할 수 있습니다.
Color Key 값과 마스크를 분석하고 조정하는 과정은 다소 시간이 걸릴 수 있지만, 한 번 정리된 이미지를 Meshroom에서 처리하면 원본 이미지보다 훨씬 효율적으로 작업할 수 있어, 결국 더 많은 시간을 절약하게 됩니다.
하지만 모든 원치 않는 요소를 100% 제거하지 못하더라도 큰 문제는 아닙니다. Meshroom은 일부 작은 아티팩트를 자동으로 노이즈로 인식하고 무시하기 때문입니다. 이 단계에서 가능한 한 정리하는 것이 좋지만, 불필요하게 너무 복잡하게 만들 필요는 없습니다.
Color Keying 및 마스크 설정이 여러 프레임에서 원하는 대로 적용되었는지 확인한 후, 이제 렌더링을 시작하여 Meshroom에서 사용할 이미지를 생성할 수 있습니다. 이 렌더링 과정은 완전한 3D 씬을 렌더링하는 것이 아니라 단순히 외부 이미지를 처리하는 것이기 때문에 오래 걸리지 않습니다. 생성된 이미지는 무료 패키지에도 포함된 파일과 동일하므로, 다음 튜토리얼에서 진행할 단계를 그대로 따라 할 수 있습니다. 이번 에피소드는 여기까지입니다! 다음 시간에 만나요!