본문 바로가기
공부/유니티

유니티 잡지식 정리 - 좌표계, Transform, FOV, 은면 제거, 깊이 버퍼, 색상 비트, 팔레트, 더블 버퍼링, 텍스처 UV좌표 및 타일링, 범퍼 맵, 노말 맵, 라이트 맵, 높이 맵

by 라이티아 2024. 10. 20.

1. 유니티에서 월드 좌표계와 로컬 좌표계의 정의, 차이점

월드 좌표계

월드 좌표계게임 씬 전체를 기준으로 하는 절대적인 좌표계

씬의 모든 오브젝트들이 공통적으로 공유하는 공간에서의 위치를 나타냄

 

월드 좌표계에서 x, y, z는 고정되어 있으며 오브젝트는 이 월드 좌표계를 기준으로 측정됨

월드 좌표계에서 오브젝트의 좌표는 씬의 중심(0, 0, 0)으로부터 얼마나 떨어져 있나를 나타냄

 

예시

캐릭터가 씬의 원점에서 x축으로 10 떨어져 있다면 그 캐릭터의 월드 좌표는 10, 0, 0임

 

로컬 좌표계

로컬 좌표계개별 오브젝트 자체를 기준으로 하는 좌표계

오브젝트의 중심을 기준으로 오브젝트의 각 축이 결정됨

로컬 좌표계는 오브젝트의 방향이나 회전에 따라 변화할 수 있음

 

오브젝트를 회전 시키면 그 오브젝트의 좌표계도 함께 회전함

다른 오브젝트나 월드의 축과 상관없이 오브젝트 자체를 기준으로 위치를 계산함

 

정리

월드 좌표계 : 게임 씬의 고정된 절대적인 좌표계

로컬 좌표계 : 개별 오브젝트의 방향과 회전에 종속된 상대적인 좌표계

 

 

2. World transform에서 중요한 컴포넌트, Transform

World transform이란?

유니티에서 오브젝트가 가지는 월드 좌표계에서 가지는 위치, 회전, 크기를 의미함

 

Transform의 구성요소

Position

오브젝트가 월드 좌표계 상에서 어느 지점에 있는지를 나타냄

 

Rotation

오브젝트가 월드 좌표계에서 어떤 방향을 바라보고 있는지를 나타냄

유니티에서는 Euler(오일러) angles, quaternions을 사용해서 회전을 나타냄

 

Scale

오브젝트가 월드 좌표계에서 얼마나 크게 보이는지를 나타냄

 

 

3. FOV(시야각) Field of view

 

FOV값을 키운다 = 줌 아웃

카메라가 더 넓은 영역을 보여주게됨

더 많은 장면이 한 화면에 들어오지만, 객체들은 더 작아보임

 

FOV값을 줄인다 = 줌 인

카메라가 더 좁은 영역을 보여주게됨

더 적은 장면만 볼 수 있음

 

 

3.1 유니티에서 Camera 설정들

View Transformation 뷰 변환

3D공간에서 객체의 위치를 카메라 기준의 좌표계로 변환하는과정

월드 좌표계에 있는 객체를 카메라 좌표계로 변환함

이 과정을 거치면 객체들은 카메라가 바라보는 시점을 기준으로 새롭게 정렬됨

 

Projection Transformation 투영 변환

3D 객체들을 2D 화면에 투영하는 과정

3D 객체들이 카메라 좌표계에서 변환된 후, 2D 평면에 어떻게 표현할지 정의

보통 Perspective Projection, Orthographic Projection 2가지 방식을 사용함

 

Perspective Projection 원근 투영

카메라에 멀리 있는것은 작게, 가까이 있는 물건을 크게 보이는 방식

우리가 현실을 보는 시야와 유사함

 

Orthographic Projection 직교 투영

물체의 거리에 상관없이 같은 크기로 나타나는 투영 방식

원근감을 반영하지 않고, 평면적인 모습을 보여줌

 

 

정리

View Transformation

카메라의 좌표계로 변환하여 장면을 카메라 기준으로 재배치 하는 과정

필요한것 : 카메라의 위치, 바라보는 지점, 카메라의 위쪽 방향(Up vector)

 

Projection Transformation

3D 객체들을 2D 화면에 투영하는 과정

원근 투영, 직교 투영과 같은 방식으로 이루어짐

 

 

4. 은면 제거

3D 모델의 후면(카메라에서 보이지 않는 면)을 렌더링 하지 않도록 하는 기법

 

후면이 보이지 않게 처리

3D모델의 후면은 보이지 않기에 렌더링이 필요 없음

제거하지 않을시 우선순위 문제가 발생할 수 있음

 

렌더링시의 카메라 기준 

기본적으로, 카메라는 모델의 앞면만 렌더링하도록 설계됨, 후면은 제거

이를 위해서 사용되는 기법이 CCW(counter clockwise), CW(clockwise)

 

CCW

카메라에서 본 면의 꼭짓점이 반시계 방향으로 정렬되어 있을때 해당 면을 렌더링함

이는 앞면을 의미

 

CW

꼭직점이 시계 방향으로 정렬되어 있으면 해당 면을 렌더링하지 않음

후면을 제거

 

Extra A 깊이 버퍼 (Z - buffer)

3D에서 깊이 정보를 저장하여 오브젝트가 카메라로부터 얼마나 떨어져 있는지를 확인하는데 사용됨

물체가 서로 겹칠때 어떤 물체가 더 앞에 있는지를 결정하는 중요한 역할을 함

 

깊이 값(Z value)

Z - buffer는 화면에 각 픽셀에 대해 z값(깊이값)을 저장함

이 값은 해당 픽셀이 카메라로부터 얼마나 멀리 있는지를 나타냄

 

Z - buffer를 사용한 은면 제거

객체들이 서로 겹쳐 보이는 상황에서 z buffer를 사용하여 더 가까운 객체만 렌더링하고, 멀리 있는 개체는 무시함

예시 : A객체가 B객체 앞에 있을때  z buffer값이 더 작은 A객체만 렌더링 되고 B객체는 뒤에 있어 렌더링 하지 않음

 

Z - buffer 보완 : W - buffer

z buffer의 대안, 보완 기술

일반적으로 z buffer는 깊이 차이를 정확하게 표현하는데 제한이 있을 수 있음(특히 카메라와 멀리 떨어진 객체들 사이에서)

w buffer는 z buffer의 이러한 한계를 보완하는 방식으로 작동함

대표적 예시는 DOOM

 

 

Extra B 더블 버퍼링(Double buffering) 및 전후면 버퍼(Foreground and Background buffers)

더블 버퍼링은 화면에 깜빡임을 없이 매끄럽게 렌더링하기 위해 사용하는 기법

 

전/후면 버퍼 개념

그래픽스 처리 시 두개의 버퍼(프레임 버퍼)를 사용함

하나는 전면 버퍼(Foreground buffer)로 현재 화면에 출력되는중

다른 하나는 후면 버퍼(Background buffer)로 다음에 출력될 화면을 미리 렌더링해 둠

 

더블 버퍼링(Flip)

한 프레임이 완료되면, 후면 버퍼에 있는 데이터를 전면 버퍼로 교체(Flip)함

이를 통해서 화면이 깜빡이거나 중간 상태가 보이는 것을 방지하고, 매끄러운 화면 전환을 할 수 있음

 

 

정리

은면 제거(backface culling)

후면을 렌더링 하지 않아 성능을 최적화 하는 기법

보통 CCW로 앞면을, CW로 후면을 판단해 렌더링

 

깊이 버퍼(z buffer)

물체의 깊이 값을 저장해, 카메라에서 가까운 물체만 렌더링 하는 기술

물체가 겹칠때 올바른 렌더링 순서를 결정

 

더블 버퍼링(z buffer)

두 개의 버퍼를 사용해 프레임 단위로 화면을 교체하여 깜빡임 없는 부드러운 렌더링을 실현하는 기법

Flip을 통해 전면/후면 버퍼를 교체

 

 

5. 색상 비트 깊이(Color Depth)

8bit 색상(256색)

8bit 색상은 총 256가지 색상을 표현할 수 있음

이는 한 픽셀에 8비트(2^8)를 할당하여 256개의 생상을 선택하는 방식임

과거에는 팔레트 기반 이미지에서 자주 사용됨

256색 이미지는 하나의 팔레트(색상 테이블)를 참고하여 각 픽셀에 대응되는 색상을 표시함

 

16bit 색상

각 색상 채널(R, G, B)에 5bit 또는 6bit를 할당하여 총 65,536가지 색상을 표현함

과거의 고전 게임이나 초기 컴퓨터 그래픽스에서 많이 사용됨

 

24bit 색상(True color)

각 색상 채널(R, G, B)에 각각 8bit씩 할당하여, 총 16,777,216가지 색상을 표현가능

이 방식은 True Color라고 함

이미지 파일에서 사용하는 표준 색상 깊이

인간이 인식할 수 있는 색상 범위와 거의 동일한 수준

 

32bit 색상

24bit 색상에 a값을 처가하여 투명도 정보를 함께 표현할 수 있는 방식

a 채널에 8비트를 추가함으로 투명도까지 표현할 수 있음

 

Extra A 팔레트 방식 (Palette)

256색(8bit) 이미지에서 주로 사용됨

이미지의 각 픽셀이 특정한 색상 테이블에 저장된 색상을 참조하는 방식

 

팔레드 기반의 이미지 처리

이미지가 256색으로 제한되어 있을때, 이 색상 들은 header에 정의된 Palette로 저장됨

각 픽셀은 팔레트에 있는 색상 중 하나를 참조하여 해당 픽셀에 맞는 색을 화면에 출력함

 

팔레트 불일치 문제

팔레트 방식에는 팔레트가 다를 경우 이미지가 올바르게 표시되지 않을 수 있음

예를들어 A팔레트를 기준으로 만든 이미지를 B팔레트로 불러오면 색상이 다른 결과로 나타남

이는 팔레트에 저장된 색상 정보가 서로 다르기 때문에 발생하는 문제임

 

 

6. Texture (텍스쳐)

6.1 텍스처 좌표(UV coordinates)

텍스처 맵핑에서는 3D 이미지를 덧씌우기 위해 UV좌표라는 개념을 사용함

UV좌표는 2D 텍스처 이미지를 3D모델의 표면에 매핑하는 데 필요한 좌표 시스템으로, 일반적으로 (0 ,0)에서 (1, 1)사이의 값을 가짐

U = 가로축

V = 세로축

 

 

 

6.2 텍스처 타일링

UV좌표가 1보다 클 경우 발생하는 현상

UV 값이 1보다 큰 값이 지정되면, 텍스처가 타일링되어 반복적으로 표시됨

 

텍스처의 반복

UV좌표는 기본적으로 0부터 1사이의 값을 가짐, 하지만 이 범위를 벗어나 1 이상의 값이 주어지면, 텍스처가 그 값만큼 반복됨

예를들어 UV값이 (2, 2)라면 텍스처가 가로세로 2번씩 반복되어 4개가 됨

 

7. Mipmap

주 텍스처 이미지의 여러 해상도 버전을 미리 생성한 세트를 의미함

일반적으로 원본 텍스처의 해상도를 절반을 줄여가며 생상됨

1차원, 혹은 2차원 텍스처의 여러 버전을 만들고 이를 계층적으로 저장함

 

장점

성능향상

Mipmap을 사용하면 가까운 거리에 있는 텍스처는 높은 해상도로, 멀리 있는 거리의 텍스처는 낮은 해상도로 렌더링됨

이는 GPU가 메모리 대역폭을 더 효율적으로 사용할 수 있게 해줌, 또한 텍스처 샘플링시 필요한 계산량을 낮춤

 

왜곡 최소화

거리에 따라 적절한 해상도의 텍스처를 선택할 수 있어 왜곡, 블리딩 현상을 줄일 수 있음

 

정리

Mipmap은 작은 이미지를 미리 만들어 두는기술

이를통해 성능을 향상 시키며 텍스처의 시각적 품질을 유지함

 

 

 

8. Bump map (범퍼 맵), Normal map (노멀 맵)

8.1 범퍼 맵 (Bump map)

정의

각 픽셀의 밝기 값에 따라 표면의 높낮이를 나타냄

흰색은 높은 부분을, 검은색은 낮은 부분을 나타냄

그라데이션을 통해 부드러운 변화를 표현할 수 있음

 

작동 방식

법선 벡터를 조정하여 표면의 미세한 굴곡이나 주름을 시뮬레이션 함

조명 계산에서 법선 벡터의 방향을 변경하여, 빛이 표면에 반사되는 방식이 변하게 됨

이로 인해서 실제로는 평평한 표면임에도 불구하고, 더욱 사실감 있게 보이게됨

 

8.2 노멀 맵 (Normal map)

정의

범퍼 맵의 발전된 형태로, 각 픽셀에 대해 법선 벡터의 방향을 RGB 색상으로 표현함

더 많은 세부사항과 깊이 정보를 제공함

범퍼 맵보다 더 사실적인 표면 효과를 만들어냄

 

작동방식

R, G, B 색상을 사용하여 법선의 X, Y, Z 방향을 각각 표현함

이로 인해 표면의 미세한 굴곡이나 특징을 정밀하게 나타낼 수 있음

 

정리

범퍼 맵핑

표면의 질감을 시뮬레이션 하는 기법

실제 기하학적 변형 없이 조명을 이용해 사실적인 효과를 낼 수 있음

 

범퍼 맵

흑백 텍스처로 표면의 높낮이를 표현

 

노멀 맵

각 픽셀의 법선 벡터 방향을 RGB 색상으로 표현하여 더 세밀하고 사실적인 표면 효과를 제

 

 

9. Light map (라이트 맵)

3D모델이나 장면의 표면에 조명 정보를 미리 계산하여 저장한 텍스처

장면에서의 조명 및 그림자 정보를 포함하여, 일반적으로 색상 정보를 사용하여 밝기를 표현함

 

작동 원리

장면을 렌더링 하기 전에, 조명 계산을 미리 수행하여 결과를 텍스처로 저장함

 

과정

1. 정적 조명 계산

장면의 조명 소스와 물체 간의 상호작용을 계산하여, 각 표면이 조명에 어떻게 반응하는지를 분석함

2. 그림자 계산

조명에 의해 생기는 그림자의 위치와 간도를 결정

3. 라이트 맵 생성

계산된 조명 정보를 기반으로, 각 표면의 라이트 맵을 생성하여 저장함

 

 

10. Height map (높이 맵)

2D 이미지에서 각 픽셀의 밝기 값을 통해 3D 공간에서의 표면 높이를 정의하는 데이터

흰색 픽셀은 높은 지역을, 검은색 픽셀은 낮은 지역을 나타냄

 

작동 원리

1. 픽셀 값 해석

높이 맵의 각 픽셀은 해당 지점의 높이를 나타냄

흰색은 높은 부분, 검은색은 낮은 부분을 나타냄

2. 서페이스 생성

게임 엔진이나 모델링 소프트웨어에서 높이 맵을 사용하여 평면 지형의 꼭대기를 높이거나 낮추는 방식으로, 지형의 형태를 만들어냄

3. 디스플레이

생성된 표면은 텍스처와 조명 효과를 적용하여 3D 공간에서 묘사됨

 

사용 사례

지형생성

모델링

비주얼 이펙트