Combining Input Image and Custom Color
목표
이 섹션에서는 앞서 배운 내용을 결합하여 입력 이미지를 받아 이를 사용자가 정의한 색상 값과 곱해 새로운 출력을 생성하는 Blink 스크립트를 만들어 보겠습니다.
Custom_ColorMult 코드
kernel Custom_ColorMult : ImageComputationKernel<ePixelWise>
{
Image<eRead, eAccessPoint, eEdgeClamped> src; // 입력 이미지, 가장자리를 클램핑
Image<eWrite> dst; // 출력 이미지
param:
float4 color; // 색상 파라미터
void define() {
defineParam(color, "Custom color", float4(0.0f, 1.0f, 0.0f, 0.0f)); // 기본값: 녹색
}
void process() {
dst() = src() * color; // 입력값과 색상을 곱하여 출력
}
};
코드 분석
입력 이미지 정의
- src는 입력 이미지입니다.
- eEdgeClamped를 사용하여 가장자리의 픽셀 값이 반복되도록 설정했습니다.
- eEdgeNone를 사용하면 가장자리 픽셀 값이 비어 있게 됩니다.
Image<eRead, eAccessPoint, eEdgeClamped> src;
출력 이미지 정의
- dst는 출력 이미지입니다.
Image<eWrite> dst;
색상 파라미터 설정
- 기본값으로 녹색(float4(0.0f, 1.0f, 0.0f, 0.0f))을 정의했습니다.
defineParam(color, "Custom color", float4(0.0f, 1.0f, 0.0f, 0.0f));
프로세스 정의
- 입력 이미지(src)와 사용자가 정의한 색상(color)을 곱한 결과를 출력 이미지(dst)로 설정했습니다.
- 곱셈() 대신 덧셈(`+`), 뺄셈(), 나눗셈(/) 등 다양한 연산도 가능합니다.
dst() = src() * color;
결과
이 코드는 입력 이미지(예: 체커보드)를 녹색 값으로 곱하여 출력합니다.
체커보드 노드를 Blink 노드에 연결하면 녹색과 곱해진 결과를 확인할 수 있습니다.
Boolean 기반 Switch 노드
목표
입력 이미지와 사용자 정의 색상 중 하나를 선택적으로 출력하는 Switch 노드를 생성하겠습니다.
Boolean 값(True/False)에 따라 조건부로 두 가지 값을 출력합니다.
Switch_Node 코드
kernel Switch_Node : ImageComputationKernel<ePixelWise>
{
Image<eRead, eAccessPoint, eEdgeClamped> src; // 입력 이미지
Image<eWrite> dst; // 출력 이미지
param:
float4 color; // 색상 파라미터
bool switch_input; // 스위치 파라미터 (True/False)
void define() {
defineParam(color, "Custom color", float4(1.0f, 0.0f, 0.0f, 0.0f)); // 기본값: 빨간색
defineParam(switch_input, "Use Input?", true); // 기본값: True
}
void process() {
dst() = switch_input ? src() : color; // 조건에 따라 입력 또는 색상 출력
}
};
코드 분석
Boolean 스위치 정의
- switch_input는 사용자 정의 Boolean 값으로, True일 경우 입력 이미지를 출력하고 False일 경우 색상을 출력합니다.
bool switch_input;
조건부 연산
- 삼항 조건 연산자를 사용했습니다:
- switch_input이 True일 경우 src()를 출력.
- False일 경우 color를 출력.
dst() = switch_input ? src() : color;
결과
- 스위치 활성화(True): 입력 이미지(src) 출력.
- 스위치 비활성화(False): 사용자 정의 색상(color) 출력.
확장 가능성
이 스크립트를 기반으로, 더 복잡한 조건부 연산이나 추가적인 노브를 활용한 노드를 구현할 수 있습니다.
Blink 스크립트의 간단한 연산을 바탕으로 창의적인 노드를 제작해 보세요!
'Nuke > Blink Script' 카테고리의 다른 글
Blink Scripting 101 - 이미지 변환 적용 (0) | 2024.12.11 |
---|---|
Blink Scripting 101 - UV 맵 생성 예제 (0) | 2024.12.11 |
Blink Scripting 101 - Custom_Color (0) | 2024.12.11 |
Blink Scripting 101 - Blink 노드의 구성 (0) | 2024.12.11 |
blink kernels (5) - Blink Reference Guide (0) | 2024.12.08 |