언리얼 TA - UV 활용

yys·2026년 4월 27일

TIL

목록 보기
36/85

오늘 한 내용


  • C++ 코드카타
  • TA 강의 수강
  • Ch3 개인 프로젝트

UV 노드 활용


UV를 따로 마스킹을 해서 추출하면 다음과 같은 화면이 나타난다.
(Mask 노드로 특정 값만 빼올 수 있다.)

여기서 R을 마스킹 한 것과 G를 마스킹 한 것에 대한 색상이 같은데, 그 이유는 R->G->B 순서로 레이어가 쌓이기 때문이다.

그리고 자세히 보면 U(R), V(G)의 프리뷰 모습이 조금씩 다르다.

  • Mask(R)을 하면 V는 0으로 고정되고 U의 값만 (0 ~ 1)로 변하기 때문에 세로 방향의 색이 똑같고
  • Mask(G)를 하면 U는 0으로 고정되고 V의 값만 (0 ~ 1)로 변하기 때문에 가로 방향의 색이 똑같음을 알 수 있다.

헷갈리면 안되는 점은, Base Color는 Vector3를 받기 때문에 빨간색(float1)만 넣으면 나머지 G, B값도 해당 값으로 들어가서 검/흰 으로 표현된다는 것이다.

UV 값을 Texture UV로 활용


이를 활용해서 다음과 같이 응용을 할 수 있다.

첫 번째 Texture Sample이 원본 텍스처이고, Mask(R)을 UV로 넣어주면 가로 방향의 색은 다르고, 세로 방향의 색은 같음을 보여준다.

Mask(G)를 UV로 넣어주면 위에서 언급했듯, 가로 방향의 색은 같고, 세로 방향의 색은 다름을 볼 수 있다.

여기서 유의할 점은, Append의 값이 0.0이 아닌 이유는 Binary Filtering 때문에 맨 윗 픽셀과 맨 아래 픽셀이 섞이는 현상이 생겨서 이를 방지하고자 한 것이며, 사실상 0.0이라 생각하고 접근하면 된다.

또한 Append된 위치에 따라서 같은 마스킹 값이라도 다른 결과가 나올 수 있음을 생각해야 한다.
위에서는 float1 값이 A에 들어갔지만, 아래에서는 float1 값이 B에 들어가서 가로 줄에 있는 텍스처가 Mask(G)의 패턴을 따라감을 볼 수 있다.

또 다른 응용으로 다음 화면을 볼 수 있다.

왜 절반이 밀린걸까? 내용을 천천히 따라가보면

  1. Add(0.5)로 인해서 Mask(R)의 U의 범위가 (0.5, 1.5)가 된다.
  2. 다음 Append로 인해서 U의 범위가 (0.5, 1.5), V의 범위가(0.0, 1.0)이 된다.
  3. Texture Sample에 해당 UV를 넣어주는데
    3-1. 텍스처는 0.0 ~ 1.0의 범위이며 넘어가면 기본적으로 Wrap 모드로 인해 처음부터 다시 텍스처를 붙여넣는다.
    3-2. 즉, (0.5 ~ 1.0)의 범위는 그대로 유지하고, 1.0 ~ 1.5의 범위는 0.0 ~ 0.5의 텍스처를 그리는 것이다.

그림으로 표현하면 다음과 같이 요약된다.

Texture 값을 Texture UV로 활용


이제, Texture 값을 Texture UV로 활용한 예시를 보자.

이번에는 기존의 격자타일이 사라지고 UV값으로 넣은 Texture의 형태를 그대로 띄고 있다.
왜 이러한 형태를 띄는지 좀 더 자세히 살펴보기 위해 Mask로 따로 떼어보았다.

앞서 언급 했듯, 흰색 텍스처는 RGB값 모두에 의해 표현된 것이기 때문에, R만 떼어내면 검은 부분을 제외한 모든 곳에 빨간색이 덮혀져있는 것을 볼 수 있다.

이때, Mask(R)은 float1 값이고 UV는 float2 값이기 때문에 V값이 복사가되어서 U, V 각각이 노이즈 값이 된다.
그래서 결과를 정리하면 다음과 같이 된다.

  • 빨간 부분(1.0) -> U(1.0), V(1.0) -> 원본 텍스처에서 녹색을 가리키므로 녹색 표현
  • 검은 부분(0.0) -> U(0.0), V(0.0) -> 원본 텍스처에서 빨간색을 가리키므로 빨간색 표현

즉, 노이즈가 색상을 지정하는 틀이 됨을 알 수 있다.

profile
게임 개발 지망생

0개의 댓글