게임에서 하늘을 표현하는 방식으로는 Skybox와 SkyDome이 있다. 먼저 Skybox는 카메라가 볼 수 있는 하늘의 여섯 방면의 이미지를 Cube 형태로 배치해 표현한다. 플레이어가 하늘 박스안에 들어가 있는 듯한 느낌이다. 반면 SkyDome은 돔 형태의 메시에 하늘의 이미지 텍스처를 입혀 구현한다.
스카이박스
Images>Material 폴더안에 우클릭 Create>material만든후 Skybox로 저장한다.
인스펙터의 Shader 콤보박스를 눌러 Skybox>6 Sided를 선택한다.
그럼 다음과 같이 6 Sided를 설정할수 있는 뷰가 뜨는데 오른쪽 네모에 아래 폴더에서 그림을 끌어다 놓는다.
스카이박스 적용
Window>Rendering>Lighting을 선택하면 라이팅뷰가 열린다. 상단에서 Environment탭을 선택하고 Skybox Material 속성에 지금 만든 Skybox 머티리얼을 끌어다 놓는다.
텍스트를 씬뷰의 하늘 영역에 직접 드래그드롭해도 된다.
멋진 씬뷰를 볼 수 있다.
프로시저럴 스카이박스
유니티를 처음 열었을때 적용된 하늘은 프로시저럴 스카이박스다. 기본값인 Default>Skybox는 여러가지 설정값을 수정할 수 없으므로 별도의 머터리얼을 만들어야 한다.
Image>Material 폴더에 새로운 머터리얼을 만들고 SkyboxPC로 저장한다. Shader 속성을 Skybox>Procedural로 수정한다.
그럼 여러가지 속성을 변경해보자
뷰밑에 프리뷰를 보면서 하면 쉽다.
Window>Render>Light>Environment탭에서 SkyboxPC를 적용후
하이라키에서 Directional Light를 선택한후 Y Rotation을 적당히하면
게임뷰에 태양을 볼수 있다.
큐브맵 스카이박스
큐브맵(Cubemap) 은 환경에 대한 반사를 나타내는 여섯 개의 사각형 텍스처 컬렉션입니다. 여섯 개의 사각형은 오브젝트를 둘러싸는 가상 큐브면을 형성합니다. 각각의 면은 월드 축의 방향을 따른 뷰를 나타냅니다 (위, 아래, 좌, 우, 앞, 뒤).
큐브맵은 오브젝트의 반사나 “주변 환경”을 캡처하는 데 사용됩니다. 예를 들어, skyboxes 와 environment reflections는 주로 큐브맵을 사용합니다.
텍스처에서 큐브맵(Cubemap)을 생성하는 방법
큐브맵을 생성하는 가장 빠른 방법은 특별히 레이아웃된 텍스처에서 임포트하는 것입니다. 프로젝트 창에서 Texture를 선택하고 인스펙터 창에서 Import Settings를 확인합니다. Import Settings에서 Texture Type 을 Default, Normal Map 또는 Single Channel 로 설정하고 Texture Shape 을 Cube 로 설정합니다. 그러면 텍스처가 자동으로 큐브맵으로 설정됩니다.
큐브맵 텍스처 임포트 타입
일반적으로 사용되는 큐브맵 레이아웃 몇 가지가 지원되고, 대부분의 경우 Unity에서 자동으로 인식됩니다.
수직 및 수평 교차 레이아웃과 큐브맵 면의 행과 열이 다음 그림과 같이 지원됩니다.
일반적으로 사용되는 다른 레이아웃으로는 LatLong(위도-경도로, 원통형이라고도 함)이 있습니다. 파노라마 이미지는 다음과 같이 이 레이아웃에 포함되는 경우가 많습니다.
SphereMap(구형 환경 맵) 이미지 역시 자주 사용됩니다.
기본적으로, Unity는 임포트된 텍스처의 종횡비를 고려하여 위의 레이아웃 중 가장 적합한 것을 선택합니다. 텍스처를 임포트하는 경우, 스카이박스와 반사에 사용될 수 있는 큐브맵이 생성됩니다.
Glossy Reflection 옵션은 반사 프로브에서 사용될 큐브맵 텍스처에 유용하게 사용할 수 있습니다. 이것은 평활도가 서로 다른 표면의 반사를 시뮬레이션하는 데 사용할 수 있는 특별한 방법(스페큘러 컨볼루션)으로 큐브맵 밉 레벨을 처리했습니다.
평활도가 다른 표면의 반사 프로브에 사용된 큐브맵
레거시 큐브맵 에셋
Unity는 서로 다른 여섯 개의 textures에서 큐브맵을 생성하는 기능도 지원합니다. 메뉴에서 Assets > Create > Legacy > Cubemap 을 선택해야 합니다. 그런 다음, 인스펙터에서 여섯 개의 텍스처를 각각 빈 슬롯에 드래그해야 합니다.
레거시 큐브맵 인스펙터
프로퍼티:기능:
Right..Back Slots | 각각의 큐브맵 면에 해당하는 텍스처입니다. |
Face Size | 각각의 큐브맵 면의 픽셀 단위 너비 및 높이입니다. 텍스처는 이 크기에 맞게 자동으로 스케일됩니다. |
Mipmap | 밉맵이 생성되어야 하는지 여부입니다. |
Linear | 큐브맵이 리니어 색상을 사용해야 하는지 여부입니다. |
Readable | 큐브맵이 스크립트가 픽셀 데이터에 액세스할 수 있도록 할지 여부입니다. |
위와 같이, 큐브맵을 생성하려면 큐브맵 텍스처 임포트 타입을 사용하는 것이 좋습니다(상단 참조). 이는 큐브맵 텍스처 데이터가 압축될 수 있게 하며, 에지 보정과 글로시 반사 컨볼루션을 가능하게 합니다. 또한, HDR 큐브맵도 지원됩니다.
기타 기법
다른 유용한 기법으로는, 큐브맵을 스크립트를 사용하여 Unity 씬의 콘텐츠에서 생성하는 방법이 있습니다. Camera.RenderToCubemap 함수는 씬 내의 원하는 임의의 포지션에서 여섯 면의 이미지를 기록할 수 있습니다. 이 함수의 스크립트 레퍼런스 페이지에 있는 코드 예제를 사용하면 이 작업을 쉽게 수행할 수 있도록 하는 메뉴 커맨드를 추가할 수 있습니다.
파노라마 스카이박스
스카이박스를 생성하기 위해 파노라마 셰이더는 단일 텍스처를 씬 주위에 구체 모양으로 감쌉니다.
선행 조건 텍스처
파노라마 스카이박스를 생성하려면 다음과 같이 위도-경도(원통형) 매핑을 사용하는 단일 2D 텍스처가 있어야 합니다.
텍스처가 2D인지 확인하려면 다음 단계를 따르십시오.
- 프로젝트 창에서 텍스처를 선택합니다.
- 인스펙터에서 Texture Shape이 2D로 설정되었는지 확인합니다.
최고의 주변광을 생성하려면 텍스처가 HDR(High Dynamic Range)을 사용해야 합니다.
프로퍼티
프로퍼티설명
Tint Color | 스카이박스에 적용할 컬러입니다. Unity는 기본 텍스처 파일을 변경하지 않고 형상을 변경할 수 있도록 텍스처에 이 컬러를 추가합니다. |
Exposure | 스카이박스의 노출을 조정합니다. 이를 통해 스카이박스 텍스처에서 색조 값을 수정할 수 있습니다. 값이 클수록 노출이 증가하여 더 밝게 보이는 스카이박스를 생성하고, 값이 작을수록 노출이 감소하여 더 어둡게 보이는 스카이박스를 생성합니다. |
Rotation | 양의 y축을 중심으로 하는 스카이박스의 회전입니다. 이 설정은 스카이박스의 방향을 변경하며, 스카이박스의 특정 섹션을 씬의 특정 부분 뒤에 배치하려는 경우에 유용합니다. |
Spherical (HDR) | 이 머티리얼이 하늘을 표현하기 위해 씬 주위를 구체 모양으로 감싸는 텍스처입니다. 입력 텍스처에서 큐브맵 에셋을 생성하는 방법은 큐브맵 에셋을 참조하십시오. |
Mapping | 이 머티리얼이 스카이박스 생성 시 텍스처를 투사하기 위해 사용하는 방법을 지정합니다. 사용 가능한 옵션은 다음과 같습니다.6 sided: 텍스처를 스카이박스에 매핑하기 위해 그물망 형식을 사용합니다.Latitude Longitude Layout: 텍스처를 스카이박스에 매핑하기 위해 원통형 감싸기 방식을 사용합니다. |
Image Type | 이 머티리얼이 스카이박스를 투사하는 y축 주위의 각도를 지정합니다. 사용 가능한 옵션은 다음과 같습니다.180: 양의 z축 방향에 피크가 있는 반구 모양으로 Spherical 텍스처를 그립니다. 이 머티리얼이 텍스처를 그리는 씬의 면을 변경하려면 Rotation 프로퍼티를 수정하십시오. 기본적으로 스카이박스의 뒷면은 검은색이지만, 이 머티리얼은 대신 뒷면에 Spherical 텍스처의 복제본을 그릴 수 있습니다. 이렇게 하려면 Mirror on Back을 활성화하십시오.360: 전체 씬 주위를 감싸는 완전한 구체 모양으로 텍스처를 그립니다. |
- Mirror on Back | 머티리얼이 스카이박스 뒷면의 Spherical 텍스처를 검은색으로 그리지 않고 복제할지 여부를 지정합니다. 이 옵션은 Image Type이 180으로 설정된 경우에만 나타납니다. |
Render Queue | Unity가 게임 오브젝트를 그리는 순서를 결정합니다. Render Queue에 대한 자세한 내용은 SL-SubShaderTags를 참조하십시오. |
Double Sided Global Illumination | 라이트매퍼가 전역 조명을 계산할 때 지오메트리의 양면을 고려할지 여부를 지정합니다. true이면 프로그레시브 라이트매퍼를 사용할 때 후면이 전면과 동일한 이미션과 알베도를 사용하여 광원을 반사합니다. |
'유니티게임강좌 > 게임 스테이지 제작' 카테고리의 다른 글
[스테이지제작] 조명 (0) | 2023.02.25 |
---|---|
[스테이지제작] 프리팹 (0) | 2023.02.25 |
[스테이지제작] 머티리얼 (0) | 2023.02.25 |
[스테이지제작] 텍스처 (0) | 2023.02.25 |
[스테이지제작] 바닥생성및 배치 (0) | 2023.02.25 |