Vertex Position
Vertex position이란 오브젝트를 이루는 정점의 위치 값을 말 하는 것입니다.
렌더링 파이프라인에 따르면 저 위의 포지션 / 탄젠트 / 노말은 픽셀 쉐이더의 이전 단계인 버텍스 쉐이더로 동작합니다.

노드 옆의 입력 가능 데이터를 보니 Object space 를 넣어달라고 적혀 있습니다.


그렇기 때문에 버텍스 포지션을 변경하려면 같은 Position 노드를 사용합니다. 위의 경우 World position 값을 컬러로 출력한 결과입니다.
피벗의 중심이 월드의 (0,0,0) 이기 때문에 오브젝트의 좌표를 움직이면 색이 변하는 것을 관찰할 수 있습니다.
Object position 값을 컬러로 출력하면 피벗이 오브젝트의 중심이기 때문에 아무리 움직여도 변화가 없습니다.

그렇다면 임의의 숫자를 추가하여 봅시다. 예를 들어 G 채널(y 좌표)에 1을 더해봅시다.

y 축으로 모든 버텍스가 1미터 만큼 움직인 모습입니다.


Time 과 sine 함수를 이용해 y축을 위아래로 1미터 왕복운동으로 움직이도록 노드를 짰습니다.
버텍스 컬러를 사용해서 원하는 부분의 버텍스만 움직이도록 응용해봅시다.

버텍스 컬러의 빨강색을 칠한 부분만 움직이도록 머리에 칠해봅시다.
색의 수치에 따라 움직임의 세기가 달라지게 하기 위해서 R채널 값을 1보다 낮은색으로도 칠합시다.

위와 같이 lerp 함수를 사용해서 원래 오브젝트 포지션 값과 움직이는 오브젝트 포지션 값을 선형 보간 합니다.

R채널의 수치에 따라 버텍스의 움직이는 세기이 다릅니다. 그렇다면 다른 방향으로 버텍스가 움직이게 해봅시다. 예를들어 노말 방향으로 움직이게 하는 것은 어떨까요?

하프 램버트로 사인 타임 그래프를 수직-수평 이동 시켜서 0~1으로 제한하고 그 값을 노말 벡터와 곱해줍니다.
이 값을 포지션에 더해주면 노말 벡터 방향으로 버텍스가 움직입니다.

노말 방향으로 움직이게 했더니 완전 호빵맨 처럼 부풀어버립니다. 수치가 너무 크기 때문입니다. 0.2 정도를 곱해서 움직임을 줄여줍시다.

버텍스 컬러로 원하는 부분만 노말 방향으로 버텍스가 움직이게끔 노드를 작성했습니다.

잘 작동합니다.
Comments