ParticleBlinkScript 노드 사용

ParticleBlinkScript 노드는 깜박임 노드이지만 이미지 작업 대신 입자 시스템에서 작동합니다. Blink 커널을 작성하여 파티클을 수정할 수있는 파티클 노드입니다. Nuke파티클 노드에 내장되어 있습니다.

ParticleBlinkScript 노드를 사용하려면 다른 파티클 노드와 같은 방식으로 파티클 시스템에 연결하십시오.

노트 :  ParticleBlinkScript 노드 속성에 대한 자세한 내용은 ParticleBlinkScript 참조 안내서에서

ParticleBlinkScript 노드 그래프의 간단한 예

ParticleBlinkScript에서 Properties 탭에서 script 섹션에서 Blink 커널을 작성하여 입자 속성을 수정하십시오. 읽고 쓰려는 각 속성을 선언하십시오. 영상. 노드는 각각을 바인딩합니다. 영상 커널에서 같은 이름의 입자 속성을 선언합니다.

예를 들어, 입자 위치를 수정하려면 영상 호출 p_position. 모든 입자 이미지 이름은 접두사로 시작해야합니다 피_.

노트 :  접두사는 속성 이름과 일치하기 전에 제거됩니다. 접두사의 이유는 선언 할 수있는 다른 유형의 특수 이미지가 있기 때문입니다 (아래 참조).

깜박임 커널 예

Nuke 각 입자의 속도에 항력 계수를 곱하는 ParticleDrag op가 있습니다.> 다음은 동일한 동작을하는 Blink 커널의 예입니다.

kernel ParticleDragKernel : ImageComputationKernel<ePixelWise>

{

// 관심있는 입자 속성에 대한 이미지 선언

Image<eRead> p_startTime;

Image<eReadWrite> p_velocity;

param:

// 매개 변수 선언

float _drag; // This will be a knob for the drag factor

float _dt; // The time step for the kernel

float _endTime; // The particle system time at the end of the step

void define() {

defineParam(_drag, "pa_drag", 1.0f);

defineParam(_dt, "_dt", 1.0f);

defineParam(_endTime, "_endTime", 1.0f);

}

void process() {

//이 입자의 시간 단계를 계산

float dt = max(0.0f, min(_dt, float(_endTime - p_startTime())));

// 이것은 항력이기 때문에 dt에 대해 지수 감쇠를하는 것이 더 정확합니다. 다른 힘의 경우, 우리는 dt를 곱하고 싶을 수도 있습니다.

float t = pow(1.0f-_drag, dt);

p_velocity() *= t;

}

};

영상 입자 속도 속성에 대해 선언됩니다. p_ 속도. 이 경우 영상 읽고 쓸 것이므로 선언해야합니다. eReadWrite. 이 커널에서 영상 입자 시스템에서 너비는 1이고 입자 수는 높이입니다.

노트 :  종종 속성을 읽을 필요가 있으며,이 경우 다음과 같이 선언 할 수 있습니다. 전자 책.

단일 매개 변수가 있습니다. pa_drag, 그리고 속도는 방법() 방법. Nuke 모든 입자에 대해 프로세스 메소드를 한 번 호출합니다.

노트 :  접두사 아빠_ 드래그 매개 변수 이름에 추가하는 것은 필수는 아니지만 ParticleBlinkScript가 커널 매개 변수에 대한 노브를 생성 할 때 이름 충돌을 방지하므로 좋은 방법입니다.

자세한 내용은 Nuke'에스 Help 아래 메뉴 Documentation > Guide to Writing Blink Kernels 또는 다음으로 이동하십시오. https://learn.foundry.com/nuke/developers/121/BlinkKernels/

경고:  ParticleBlinkScript는 커널 내에서 작성할 수있는 코드에 제한이 없으므로 매우 유연합니다. 결과적으로 커널 소스에서 컴파일 된 코드는 Nuke 충돌하기 때문에주의하십시오!