게임에 사용할 sprite(스프라이트; 이미지)를 사용하려고 할 때 이미지를 선택하면 Inspector창에 아래와 같은 메시지가 뜨는 경우가 있다.
1. Only POT texture can be compressed if mip-maps are enabled
밉맵이 활성화 된 경우 POT 텍스처만 압축 할 수 있습니다.
2. Only textures with width/height being multiple of 4 can be compressed to ETC1 format
너비 / 높이가 4의 배수인 텍스처 만 ETC1 (또는 ETC2) 형식으로 압축 할 수 있습니다.
3. Only POT textures can be compressed to ETC1 format
POT 텍스처만 ETC1 형식으로 압축 할 수 있습니다.
무슨 내용인지 알아보았다.
먼저 용어가 뭔지 살펴본다.
# Texture(텍스처) : 간단히 말하면 이미지나 3D 모델의 겉표면의 재질 또는 느낌을 나타낸다.
# POT: Power Of Two(2의 거듭제곱). 크기가 2의 거듭제곱으로 된 이미지를 말한다.
즉, 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096 등의 크기를 가진 경우다.
이런 크기는 컴퓨터에서 이미지를 압축 등과 같은 처리와 메모리 사용과 같은 최적화에 효율적이므로 신경써야 하는 부분이다.
POT 크기가 아닌 이미지는 NPOT 이라고 부른다.
# mip-map : 예를 들어 2048 x 2048 크기의 이미지가 있다고 하자.
만약 카메라와의 거리가 멀어지면 실제 크기보다 더 작은 크기가 되어야 한다.
이때 컴퓨터는 필터링, 샘플링 같은 과정을 거쳐 이미지를 다시 재조정 하게 되므로 할 일이 증가한다.
이런 경우에 mip-map(밉맵)을 사용하면 카메라와의 거리에 따라 POT 해상도에 맞게 즉시 바꿔서 컴퓨터의 부담을 줄이고 성능에도 도움을 줄 수 있다.
반면에 mipmap을 사용하면 파일 크기가 약간 증가하는 부담과 이미지 품질에 영향이 있을 수 있다는 단점도 있다.
그러므로 mipmap을 사용할 상황인 지 확인하고 사용해야 한다면 테스트 해 보면서 최적의 옵션으로 조정하면 되겠다.
# ETC : ETC는 텍스처 압축 포맷의 이름이다.
유니티에서 안드로이드 휴대폰용으로 작업하면 ETC 포맷으로 압축한다.
ETC2는 ETC1 포맷의 업그레이드 포맷이다.
압축하면 메모리를 효율적으로 사용할 수 있고 실행 성능도 좋아진다.
용어를 알고 나니 처음에 언급한 에러를 어떻게 처리해야 할 지 답이 나온다.
경고문 1번의 경우
1번 메시지의 경우는 mipmap을 활성화 하지 않거나 POT 크기의 이미지로 만들면 된다.
# mipmap활성화 체크 해제하기
# POT 크기로 바꾸기
Pixlr.com으로 가서 이미지 간편 편집기를 선택한다.
편집기에 대해서는 <각개격파005> 참고
Open Image(이미지 열기) 버튼을 클릭한 후 수정할 이미지를 선택하고 열기 버튼을 클릭한다.
원래 크기(Original)를 선택하고 APPLY(적용) 버튼을 클릭한다.
Layout > Resize Image(크기 재조정) 클릭한다.
Constrain proportions(비율 제한)을 해제한 후 원하는 크기로 수정하고 APPLY 버튼 클릭한다.
오른쪽 아래 SAVE(저장)을 클릭하고 이미지는 PNG타입을 선택한 후 DOWNLOAD(다운로드) 한다.
다운로드한 이미지 파일을 처음 파일에 덮어쓰기 한다.
그러면 나타났던 메시지가 사라진다.
경고문 2번의 경우
메시지: Only textures with width/height being multiple of 4 can be compressed to ETC2 format
넓이/높이가 4의 배수인 텍스처만 ETC2 포맷으로 압축 가능하다.
4의 배수는 4로 나누어 떨어지는 수이다.
그러므로 만약 이미지 크기가 70 x 70 인 경우 4의 배수가 아니므로 4의 배수에 가까운 크기로 조정하면 된다.
또는 이미지가 크지 않고 본래 크기와 품질을 유지하기 위해서는 다음과 같이 수정할 수도 있다.
적용을 위해서는 Apply버튼을 클릭해야 한다.
이미지 압축은 메모리와 실행 성능에 영향을 주므로 특히 휴대폰 게임으로 개발하거나 게임 규모가 클 수록 되도록이면 ETC2 포맷을 사용하는 것이 좋다고 한다.
끝.
Wraven...
'취미로 하는 게임코딩_gameCodingAsHobby > 유니티 구현 정리_Implement Summary' 카테고리의 다른 글
유니티 각개격파_019_스크린 좌표를 월드 좌표로 변환하기 (0) | 2021.06.09 |
---|---|
유니티 각개격파_018_3D 환경에서 2D로 변경하기 (0) | 2021.06.09 |
유니티 각개격파_016_카메라(Camera) (0) | 2021.06.04 |
유니티 각개격파_014_벡터(Vector)와 이동(Translate)_마우스 이동 (0) | 2021.06.04 |
유니티 각개격파_015_스크린(Screen) 좌표와 World(월드) 좌표 (0) | 2021.06.04 |