UE5 -HLSL- 근육바운싱
UE5 -HLSL- 근육바운싱
근육바운싱효과 만들기.
목표.
애니메이션과 연동되는 근육 떨림 만들기.
캐릭터BP와 관련없이 독립적으로 구동되어야 함.
애니메이션 시퀀스에서 AnimNotifyState 로 근육떨림을 컨트롤 한다.
Step1.버텍스 칼라
Step2.Material Custom Node
커스텀 노드를 만들어주고 아래와 같은 코드를 작성 해 준다.
float ResetTime = fmod(Time,1);
float Damp = sin((ResetTime*Speed) * Frequency) *exp(-((ResetTime*Speed) - 1.0) * Damping);
float CombineDamp =Damp*((VertexColor.g*Left )+(VertexColor.r*Right))*Wave;
return float3(CombineDamp*X, CombineDamp*Y,CombineDamp*Z);
변수
- Time:타임 float
- VertexColor :버텍스 칼라 vector3
- Frequency :주기/빈도 float
- Damping : 감쇠 float
- Left : 왼쪽 다리 0이면 off 1일때 on, 1보다 큰 값이면 움직임이 강해짐.
- Right : 오른쪽 다리 0이면 off 1일때 on, 1보다 큰 값이면 움직임이 강해짐.
- Speed : 떨림속도,값이 크면 빈도와 감쇠 모두 빨라짐
- X : X축 움직임 강도
- Y : Y축 움직임 강도
- Z : Z축 움직임 강도
- Wave : animnotifystate 길이 삼각파형 값
TransformVector 노드에서 WS 로 변환후 World position offset에 연결해준다.
Step3.AnimNotifyState
Begin
float CombineDamp =Damp*((VertexColor.g*Left )+(VertexColor.r*Right))*Wave;
left,right 둘다 기본값은 0이고 right animnotifystate 에서 시작시 값을 1로 변경해 유효하게 해준다.
Tick
wave = 1.0 - abs((AnimNotifyState Time Ratio - 0.5) * 2.0)
0에서 1로 그리고 다시 0으로 선형이동을 한다.
End
Left도 똑같이 만들어 준다.
UE5 HLSL Animation
댓글
댓글 쓰기