Summary
- 나무가 성장하는 효과 표현하기
Preview
1. Tree - Body
프로퍼티 목록
쉐이더 에디터 설정
-
우측 상단을 클릭하여
Blend Mode
를Masked
로 변경한다. -
Mask Clip Value
값을 쉐이더 에디터에서 직접 설정해도 되지만
마테리얼에서 프로퍼티를 통해 조정하려면 우측의 점을 누르고 드롭다운에서 프로퍼티를 선택한다.
쉐이더 노드
설명
식물 성장을 표현하기 위해 사용되는 메시는 특별한 조건이 필요하다.
식물이 아래에서 위로 성장하는 것을 표현하기 위해
메시의 UV.Y
값은 가장 하단 정점에서 0을 갖고
+Y축 방향으로 상단에 위치한 정점일수록 점점 커지는 형태를 가져야 한다.
UV.Y - Grow
값을 마스크로 이용하여 총 두 군데에 사용하게 된다.
첫번째로 알파 값으로 사용하여
Alpha Clip
프로퍼티의 값보다 크거나 같은 부분은 렌더링하고
작은 부분을 렌더링하지 않는 용도로 사용되며
두번째로 정점의 위치를 노멀 벡터의 반대 방향으로 이동시킬 때
정점을 이동시키거나 이동시키지 않을 영역을 구분하기 위한 용도로 사용된다.
메시의 정상적인 상태는 위와 같다.
그리고 여기에 Grow
프로퍼티 값을 0.14
정도 지정했을 때
이런 모습을 확인할 수 있는데,
마스크 색상과 대조해보면 다음과 같다.
빨간 선 기준으로 하단부는 마스크의 색상이 까만 부분이며
이 영역에 해당하는 정점들은 별도의 연산이 더해지지 않기 때문에
정상적인 모습으로 보인다.
빨간 선 기준으로 상단부는 마스크 색상이 0보다 큰 값을 가지며
이 영역에 해당하는 정점들은 각각 자신의 노멀 반대방향으로 이동하여
정점이 넓게 펼쳐진 듯한 모습을 확인할 수 있다.
이 상태에서 마스크를 One Minus
로 반전시키고
Alpha Clip
을 통해 렌더링될 영역을 구분시킨다.
그리고 이를 마스터 노드의 Opacity Mask
에 적용하게 되면
이렇게 빨간 선 기준으로 상단부는 렌더링되지 않고,
하단부는 정상적으로 렌더링되는 모습을 확인할 수 있다.
이 두 가지를 이용하면
이와 같이 Grow
프로퍼티 값의 증가에 따라 식물이 성장하는 듯한 효과를 표현할 수 있다.
2. Tree - Leaves
프로퍼티 목록
쉐이더 에디터 설정
Opaque
그대로 두면 된다.
쉐이더 노드
설명
아주 간단한 연산을 적용한다.
Grow
프로퍼티 값이 0
일 때는 Local Vertex Offset
에 Vertex Position
을 완전히 빼서
모든 정점이 메시의 피벗 위치에 모이도록 하여, 결국 아무 것도 보이지 않는다.
Grow
프로퍼티 값이 1
일 때는 Local Vertex Offset
에 0
이 더해지므로
쉐이더에서 아무런 연산을 수행하지 않은 것처럼 정상적으로 보인다.
그리고 Grow
값이 0
~ 1
사이일 때는 이 두 경우 사이에서 보간되어
Grow
값 증가에 따라 오브젝트가 점차 커지는 효과를 나타낼 수 있다.