일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 리팩터링 3장
- 스즈메의 문단속
- 112일선
- 언리얼5
- 상계9동
- 1일차
- 산토리 하이볼
- 구글 컨퍼런스
- URP
- 리팩터링 4장
- 주식단테
- 이득우의 언리얼 프로그래밍1
- 448일선
- 이득우의 언리얼 프로그래밍 1
- JavaScript
- 2023 구글 클라우드
- GenAI
- 2023 Gaming
- 224일선
- 작계훈련
- 주식
- 공부
- 스포일러 주의
- 언리얼 5
- 2023 게이밍 인 구글 클라우드
- unity
- 전주비빔 라이스 버거
- 리팩터링
- 2023 게이밍
- shader
- Today
- Total
개발 이야기 안하는 개발자
Liquid Effect 본문
목표
시작
빈 그래프로 시작
병은 Blender로 제작했음
Universal로 제작할 예정이니 추가
선택하면 나오는 화면
그중에서 Unlit으로 진행
Unlit 선택하고 Render Face는 양면
Alpha Clipping선택 (이건 물의 찰랑거림을 표현하기 위함. 담겨져 있는 정도를 표현하기 위함)
각 버텍스의 위치값(Position)에서 오브젝트의 위치값(Object->position)을 뺀다(Substract)
나온 값을 Split으로 하나씩 쪼갠다.
쪼갰을때, x값(Split에선 R값)을 Step(0 또는 1값을 반환함)
Step은 들어온 In의 값이 Edge값보다 크거가 같으면 1을, 아니면 0을 반환한다.
이때, 두 값의 차는 Edge로 들어오니 해당 Step의 사용용도는 두 값의 차가 양수인가 음수인가를 물어보는 용도이다.
양수일땐 0을 반환하고, 음수일땐 1을 반환한다. (0이 기준이기 때문에 음수가 나와야 0이 더 큰값이 된다)
즉, Object의 위치좌표를 기준으로 오른쪽인가 왼쪽인가를 묻는 내용이다.
왼쪽이 0보다 작은 수, 즉 0이 더 큰 수들의 모임은 왼쪽이기 때문에 그림은 왼쪽만 그려진다.
(해당 내용은 병 안에 있는 물에게 적용되었음)
해당 값을 y좌표(G값) 을 사용해서 위 아래로 나누었다.
채워지는 정도를 임의로 수정하기 위해서 변수로 바꿨다.
영상에서 보면 In의 값이 0이면 절반정도 채워진다.
애초에 식을 그렇게 짰으니 당연하다.
0이 아닌 -1보다 작은 수로 해서 0일땐 완전히 비워지고, 1일땐 가득 채워지게끔
ReMap을 사용해서 수정했다.
Is front Face는 지금 보고있는 면이 앞면인가 뒷면인가를 묻는 키워드 이다.
Branch는 URP에서 사용하는 If문으로
True인 경우엔 정의한 SideColor로 색을 칠하고
False인 경우엔 정의한 TopColor로 색을 칠할 예정이다.
이렇게 함으로써 뭔가 물이 차 있는 것 같은 시각적 효과가 생겼다.
현재위치를 wobbleZ값에 따라서 회전하도록
Position값을 Rotate About Axis를 통해 회전했다.
지금 값은 Z축을 통해 90도 회전한다는 내용인데,
wobbleZ값을 곱해서 회전하는 그 정도를 임의로 수정했다.
수정된 값은 보여지는 물 높낮이에 더했다.
축이 수정되었기 때문에 해당 연산은 가능하다.
같은 방식으로 X축 기준으로 회전하는 내용도 추가했다.
스크립트 추가.
해당 내용은 병 오브젝트를 흔들면
wobble값을 수정해주는 스크립트이다.
최종 결과물
후기 : Mesh를 잘 못 만들어서 X축 기준으로 회전할때 회전이 잘안되서 아쉬웠음.
'Unity > URP_Shader' 카테고리의 다른 글
PIXELSHADER (0) | 2023.04.11 |
---|---|
SPACE TRAVEL_2 (0) | 2023.04.11 |
SPACE TRAVEL_1 (0) | 2023.04.11 |
Galaxy Shader (0) | 2023.04.11 |
ToxicWaterFall (0) | 2023.04.11 |