Featured image of post 노말맵 사용시 미러링 현상 해결

노말맵 사용시 미러링 현상 해결

노말맵은 하이 폴리곤의 버텍스 위치를 벡터화 시켜 로우 폴리곤의 벡터에 적용하는 픽셀단계의 벡터 속임 기법입니다.

덕분에 노말맵의 절대적 단점이 생기게 되는데, 그것은 ‘미러링을 할 수 없다’ 라는 것입니다.

즉 symmetry 기능을 써서 좌우대칭으로 모델링을 했을때, 다른 텍스쳐들은 좌우대칭을 해도 별 문제가 없지만 노말맵만은 좌우대칭을 하면 X 축 (U값. 맞나?) 이 좌우로 뒤바뀌게 되어
볼록 튀어 나와야 할 무릎이 반대쪽은 오목하게 들어가는 현상등이 일어나게 되는 것입니다.

즉 이렇게 하나의 텍스쳐에 양쪽 다리를 Unwrap을 하면

아래처럼 노말맵의 X 축 (Red값) 도 좌우대칭이 되어 버립니다.

(크게보면 좀 더 잘보이지만 비공개 프로젝트라 짤라서 일부만…)

위 그림은 노말맵의 X축 (Red) 값만 보이도록 처리한 것입니다. (normalmap.rrr)
저렇게 노말맵이 좌우대칭이 되면서, 한 쪽에서 빛을 받으면 계산이 이상하게 됩니다. 튀어나와야 하는 부분이 오목하게 보인다던가 하게 말이죠.

이렇게 말입니다. 프로그래머들은 뭐가 이상한지 못찾던데 OTL 아니 딱봐도 이상하잖아요. 아참 나도 프로그래머지.
그래픽스 하시는 프로그래머분들은 알아볼 수 있으실듯. 왼쪽 무릎이 튀어나온게 아니라 들어가 버렸습니다.

그래서 뭐 어렵지 않은 처리로 …

힌트는 UV를 이렇게 배열하는 것.

비대칭으로 한 장 더 그리는게 아니라, 타일링된 UV 배열만 옆으로 이동시키면 U 값이 1을 넘어간 것을 인식하여,
그 부분에서만 노말맵의 R 값을 뒤집어 주게 만들었습니다.

짜잔. 노말맵이 좌우대칭이 아닙니다. 제대로 되었습니다.

결과물도 다음과 같이 해피해피

텍스쳐 추가도 필요 없고 그냥 UV 좌표만 이동시켜 주는 것으로 해결 완료.
이제 그래픽팀은 마음놓고 Symmetry를 쓰시오 ~~~

Hugo로 만듦
JimmyStack 테마 사용 중