본문 바로가기
Nuke/Blink Script

Blink Scripting 101 - Custom_Color

by 르면가게 2024. 12. 11.

Custom Blink Script: Custom_Color


목표

이번에는 **Custom_Color**라는 이름의 새로운 Blink 스크립트를 만들어 보고, 불필요한 부분은 제거하고 최적화하겠습니다. 또한 코드의 각 부분 옆에 설명을 추가해 작업 내용을 이해하고 다른 사람들에게 공유할 수 있도록 하겠습니다.

Blink 스크립트에서 코드에 포함되지 않는 주석을 작성하려면 //를 사용합니다.


Custom_Color 코드

ernel Custom_Color : ImageComputationKernel<ePixelWise>
{
  Image<eWrite> dst;                                                      //output image
  
  param:
    float4 color;                                                         //parameter
  
  void define() {
    defineParam(color, "Custom color", float4(0.0f,1.0f,0.0f,0.0f));      //defalut value
  }
  
  void process() {
    dst() = color;                                                        //output
  }
};

코드 분석

커널 이름 정의

  • 커널의 이름을 **Custom_Color**로 정의했습니다.
  • 이 커널은 픽셀 단위로 데이터를 처리(ePixelWise)하도록 설정되어 있습니다.
     
kernel Custom_Color : ImageComputationKernel<ePixelWise>

 

출력 이미지 정의

  • 출력 이미지를 정의하며, 이 이미지는 dst로 명명되었습니다.
     
Image<eWrite> dst;

 

파라미터 정의

  • float4 유형의 파라미터 **color**를 선언했습니다.
  • float4는 RGBA 값을 포함하는 네 가지 부동소수점 값을 의미합니다.
     
param: float4 color;

 

파라미터 기본값 설정

  • defineParam 함수는 파라미터를 설정합니다.
    • 첫 번째 인자: 파라미터 이름(color)
    • 두 번째 인자: 노브에 표시될 이름("Custom color")
    • 세 번째 인자: 기본값(녹색, float4(0.0f,1.0f,0.0f,0.0f))
  void define() {
    defineParam(color, "Custom color", float4(0.0f, 1.0f, 0.0f, 0.0f));
  }

 

메인 프로세스 작성

  • 출력값(dst)을 파라미터 값(color)으로 설정합니다.
  • 위 코드는 기본적으로 **"단색 이미지 출력"**을 수행합니다.
  void process() {
    dst() = color;
  }
};

결과

이 코드는 단색의 녹색 이미지를 출력합니다.

노드의 "Custom color" 파라미터 값을 변경하면 출력 색상이 실시간으로 변경됩니다.
Blink 스크립트에서 생성되는 노브는 Nuke의 일반적인 노브와 유사하지만, Blink 커널에서는 사용할 수 있는 노브의 유형이 제한적입니다.


Blink 커널에서 생성 가능한 노브 유형

다음은 Blink 스크립트에서 사용할 수 있는 몇 가지 노브 유형입니다:

  • bool : 부울 값 (참/거짓)
  • int : 정수 값
  • int multi_int[4] : 네 개의 정수 값
  • float : 단일 부동소수점 값
  • float2 : 두 개의 부동소수점 값
  • float3 : 세 개의 부동소수점 값
  • float4 : 네 개의 부동소수점 값 (색상 노브로 표시됨)
  • float multi_float[5] : 다중 부동소수점 값 (크기는 [] 내부 숫자로 정의)
  • float3x3 : 3x3 매트릭스 값
  • float4x4 : 4x4 매트릭스 값

확장 가능성

Blink 스크립트의 제한된 노브 유형을 보완하기 위해, Nuke의 일반적인 노드 제작 방식(gizmo)을 활용하여 추가적인 커스텀 노브를 생성한 뒤 Blink 스크립트와 연결할 수 있습니다.

이를 통해 Blink 스크립트의 기능을 확장하고 더욱 유연하게 활용할 수 있습니다.