[Maya] 불꽃 폭죽 만들기 (2)




1 Emit from object

파티클에서 다시 파티클을 생성하려면, 파티클shape에서 emit from object를 실행한다. (파티클 shape노드 아래에 emitter가 생성됨) 지난 포스팅에서는 베이스가 되는 파티클들이 생성되고, 해당 파티클들이 특정 가속도 값에서 사라지도록 설정했다. 


이번에는 해당 파티클들을 통해서 새로운 파티클을 생성하고, 

특정 높이에서 폭죽처럼 흩어지게 만들어보자.


파티클을 통해 새로 생성된 파티클 shape의 lifespan 랜덤값을 아래처럼 설정하고, 중력값은 '무시하기'에 체크한다.



2 높이값 추가하기

파티클들이 특정 높이에서 사라지도록 하기 위해서 'Height' per particle 속성을 추가한다.


* MEL: 스크립트


//Height 설정

vector $pos = fire0Shape1.position;

fire0Shape1.Height = $pos.y;


fire0Shape의 높이값에(y값)을 Height 항목으로 저장한다.



Numeric모드에서 파티클들을 살펴보면, 아래처럼 Height값이 나타남을 볼 수 있다.




3 파티클 개별 설정

파티클shape에 생성된 emitter의 파티클들을 개별적으로 설정하기 위해서는 아래와 같이 파티클 shape노드 아래의 emitter를 선택하고, "per point emission rates"를 실행한다.  


그리고 Basic emitter attribute항목의 'Use Per point rates(ratePP)'를 활성화한다. (*중요)


특정 높이가 되었을 때, firework Emitter가 작동하도록 스크립트를 작성한다.


if ( fire0Shape1.Height > 21.5 ){

fire0Shape1.firework21RatePP = 1000; 

}


위의 코드는 초기 파티클값(색지정)의 높이가 21.5가 되었을 때, 그 아래에 속한 emitter의 rate값이 1000이 되는 스크립트다.



emitter가 포인트 상태에서는 아래와 같이 불꽃 느낌이 나지 않고 뭉쳐진 먼지 느낌이 된다.


이를 해결하기 위해서는 lifespan을 랜덤으로 설정한 뒤, 파티클 랜더타입을 'Streak' , color accum에 체크, 꼬리 사이즈와 길이를 설정한다.



emitter의 speed와 speed랜덤값을 설정하면, 좀더 실감나는 연출을 할 수 있다. 또, 특정 높이가 되었을 때, 원본 파티클 입자가 사라져야 불꽃 느낌이 나타난다.


따라서 스크립트에서 fire0Shape1.lifespanPP를 -1을 추가한다.




4 색이 변하는 불꽃 만들기

불꽃 파티클shape의 shading탭으로 가서 color값을 아래와 같이 설정한다. 

input Max값에 따라서 설정한 색들이 나타나는데, Expression을 사용한다면 랜덤하게 색을 설정할 수 있다.



input Max설정에서 마우스 우클릭으로 Expression을 실행하면, 해당 값으로 스크립트를 작성할 수 있는 창이 나타난다. 여기서 input Max의 정확한 노드이름은 "colorInputMax"로 나타나는데 이를 복사하여 아래와 같은 코드를 작성하자.


nParticleShape1.colorInputMax = rand( 0 , 50 ); //랜덤으로 색상설정



Input Max값이 달라지면서, 색상이 랜덤으로 바뀌는 불꽃이 나타난다.



색상을 좀더 다양하게 하고, streak 파티클 수를 증가시킨다면 아래와 같은 이미지와 비슷한 불꽃을 만들어낼 수 있자.