Maya/VFX

VFX 02, 기초 expression

며용 2019. 9. 29. 02:22

- MEL : C++ 베이스 마야 인베디드
- Python
- Pymel : 파이썬 스타일인데 멜이랑 혼용해서 이렇게 세 가지가 존재한다

: expression은 mel이랑 python 두 개만 갖고 된다, 한 속성을 저 수식으로 제어함

어떤 오브젝트의 어떤 어트리뷰트
Object.Attribute = func();
이게 기본 형식!

이 수식의 결과를 이 어트리뷰트에 넣음
수치를 고정값으로 줄 수도 있고 변하는 값을 줄 수도 있고

 

edit 누르고 익스프레션스로 들어가

익스프레션스 되면 보라색이 됨

 

pSphere1.translateY = sin(frame/5)*3;
-> 구가 sin그래프 형태로 움직임

 

 

 

 

- PO (per object) : 파티클 전체 트랜스폼을 뜻함
- PP (per particle) : 파티클 낱개 하나하나당

 

PP로 쓰고 싶으면 꺼내써

여기서 오른쪽 클릭해서 크리에이션 익스프레션
파티클을 각각 랜덤하게 다르게 만들어지게 하고 싶어서

 

랜덤값 생성 -> rand(a) : 0~a까지
벡터는 <<rand(a1, b1), rand(a2, b2), rand(a3, b3)>> 로 묶음
x,y,z 차원 다 값을 다르게 하려면

 

얘는 크리에이션에


nParticleShape1.position = sphrand(10);
return은 벡터 x,y,z 랜덤하게 해주는거

 

 

y = ax + c

y = c : 크리에이션 익스프레션, 시작한 값
y = ax : 런타임 변하는 값, 프레임이 변하면서 어떻게 변할 것인가

 

 

다이나믹 우선할거냐 이걸 우선할거냐 선택해라 (외부에서 힘을 줘서 모션준거랑 파티클에서 한거랑)
보통 스크립트를 우선해

 

 

얘는 런타임에

nParticleShape1.position += <<0, 1, 0>>;
y가 다 1씩 증가함

 

nParticleShape1.position += <<0, nParticleShape1.particledId/300+0.5, 0>>;
(Id만 써도 됨)
id별로 다름

 

 


전에껀 파티클만 만들어서 한 거고
이번엔 에미터에서

nParticleShape1.position = <<age*2, sin(age*2)*3+3, 0>>;


애미터는 태어나는 게 다르잖아, 파티클은 똑같은데 그래서 age를 쓴다
애미터가 크리에이션이니까 별도로 쓸 필요가 없다