Remap이 뭔가요

Gusdnd_01·2024년 11월 13일
2

공부

목록 보기
11/16
post-thumbnail

오늘은 Remap에 대해서 내가 아는데로 설명 해보려고 합니다.

유니티에 있는 Remap Node의 설명에 따르면

In Min Max 입력의 x 및 y 컴포넌트 사이의 In 입력 값에 대한 선형 보간을 기반으로 Out Min Max 입력의 x 및 y 컴포넌트 사이의 값을 반환합니다.

라고 쓰여져 있는데요, 이걸 이해하기 쉽게 예시를 들어서 설명 할겁니다.


선형 보간이 무엇일까요?

혹시 선형 보간을 알고 계실까요? 선형 보간, 즉 Linear Interpolation은 1차원 상의 직선에서 두 값이 주어졌을 때에 그 사이의 특정 지점의 값을 구해내기 위해 선형적으로 계산하는 것을 말합니다!

위 방식으로 말하면 솔직히 조금 어려울 수 있으니 예시를 들어 드리겠습니다.

두 값, A와 B를 지정했습니다. 저는 쉽게 0 ~ 100으로 지정했어요.
여기서 두 값의 특정 지점, 0 ~ 1의 사잇값으로 지정을 합니다.

만약에 0.5로 지정을 하면

이런 식으로 50을 반환하는거죠. 저는 이런식으로 이해했어요

이렇게 A, B 사잇값을 0 ~ 1 사이의 특정 값으로 퍼센테이지를 구해서 반환하는 것이 선형 보간, Lerp라고 볼 수 있습니다.


Remap이 뭐죠.

다시 본론으로 돌아와 Remap을 설명해보도록 하겠습니다.

위 사진에서 보이듯이 In Min Max랑 Out Min Max를 정했습니다.
0 ~ 1, 0 ~ 100값으로 지정을 해두었어요.

위에서 설명한 선형 보간과 비슷합니다. 그냥 In Min Max를 선형 보간한 것을 바탕으로 Out Min Max만큼 늘리거나 줄이면 됩니다.

In값으로 0.5를 넣는다면 In Min Max를 기반으로 0.5를 반환하겠죠?
그 값을 바탕으로 Out Min Max에 선형 보간 값을 진행하는겁니다. 그럼 50이 반환되겠지요.

Out = OutMinMax.x + (In - InMinMax.x) * (OutMinMax.y - OutMinMax.x) / (InMinMax.y - InMinMax.x);

이것이 Remap의 수식인데요.

여기에 값을 대입하면서 확인해볼까요?

Out = 0 + (0.5 - 0) * (100 - 0) / (1 - 0);
Out = 0 + 0.5 * 100 / 1;

그럼! 50이 반환되죠!

예시를 또 들어볼까요?

-1 ~ 1, 0 ~ 1값으로 예시를 들어볼게요. In은 똑같이 0.5를 넣을겁니다!

Out = 0 + (0.5 - (-1)) * (1 - 0) / (1 - (-1));
Out = 0 + 1.5 * 1 / 2;

하면 0.75가 나옵니다!
만약 여기서 햇갈리실 수 있는 부분은

0.5를 넣었는데 왜 절반값이 나오지 않죠?

왜냐하면 In Min Max의 값이 -1 ~ 1이기 때문입니다. 이 사잇값에서 0.5는 퍼센테이지로 봤을 때에 0.75에 해당해요.

이렇게 보면 훨씬 이해가 쉽죠?

In Min Max에서 In의 값이 어디 있는지 점을 찍고.

Out Min Max의 값을 기반으로 수직선을 그린뒤 위에서 구한 점의 위치를 똑같이 찍으면 되는겁니다!

제가 이해한건 여기까지이고, 더 궁금한 점이 있으면 댓글 달아주세요!

profile
테크와 아름다움을 좋아하는 게임 이펙터

0개의 댓글

관련 채용 정보