SlideShare a Scribd company logo
1 of 21
Download to read offline
“왜 제 그림 다 깨졌죠”
유니티3D로 2D 이미지 다루기
해상도란?
한 화면, 한 그림이

픽셀 몇개로 표현되는가?
이미지가 깨지는 이유는
해상도가 안 맞아서
그림 파일이 화면에 표시되기까지...
그림 파일

(1000px * 1000px)
스프라이트

(10u x 10u)
카메라
화면

(800px * 800px)
1유닛당 몇 픽셀인가?
카메라에 몇 유닛만큼 표시되나?
화면 크기가

몇 픽셀인가?
최종적으로
80% 축소되어 표시됨
그림 파일을 스프라이트로
54px * 54px 그림
Pixel per Unit을 54로 설정
1x1 크기 스프라이트
스프라이트를 카메라로
size=2 인 카메라
(세로길이 4)
1x1 스프라이트
스프라이트가
카메라 세로길이의 1/4를 차지하게 됨
카메라를 화면으로
카메라 세로길이의 1/4을 차지하니까
화면 세로길이의 1/4를 차지함
따라서 화면이 800px * 600px 크기라면
스프라이트는 150px * 150px 크기로 그려짐
유니티 인스펙터 살펴보기
• 스프라이트인가,

3D 모델에 쓸 텍스쳐인가?
• 이미지 하나에 여러 스프라이트가
들어있는가?
• 유니티 길이 단위 1유닛 당 몇 픽셀
을 표현할까?
• 어느 점을 중심으로 그려지는가?
• 밉맵을 생성하는가?
• 어떻게 확대/축소하나?
• 빌드할 때 어떻게 넣을까?
그래서,
제 그림은 왜 깨졌는데요
실전사례 분석 (모나드 중심)
Case 1.
이미지 해상도가
화면에서 표시될 해상도보다
낮은 경우
(이미지를 크게 그리세요...)
추천하는 해결책
전체 게임화면 크기 (1920*1080, 1680*720...)를 정하고
그 화면에 맞춰서 (혹은 2배 크기로) 그립니다.
Case 2.
Mip Map 생성으로 인해
낮은 해상도가 선택된 경우
Mip Map 이 무엇인가요?
• 미리 절반씩 축소한 이미지를 

만들어 두는 것
• 유니티는 화면에 표시되는 크기와
제일 가까운 이미지를 불러와서 

표시한다.
• 이미지를 70% 크기로 축소하면,

50% 크기로 축소해뒀던 이미지를
140% 확대해서 보여주는 것
• 줄였다가 확대하니까 

당연히 깨진다!
그러니까...
2D 게임에 밉맵 켜지 마세요.
X
Case 3.
이미지를 무리하게 축소한 경우
축소하면 왜 안돼요?
• 런타임에서 확대/축소를

구현하는 알고리즘은

우리의 예상보다 구림
• 체감상 50% 이하로 축소하기
시작하면 조금씩 깨진다
• 지나치게 큰 이미지는

넣기전에 미리 화면 해상도에
맞도록 축소해서 넣는다
• 아니면 차라리 밉맵을 켜던가
Case 4.
해상도 상한선에 부딛친
경우
화면 전체 크기의 이미지를 

넣고 싶을 때...
• 이미지 크기 제한의 디폴트 값
은 1024px
• 이것보다 큰 이미지는 1024px
로 축소됨
• 화면 전체 크기라면 보통
1680~1920px에 맞춰야 하기 때
문에 크기제한을 올리는 것이
좋다
• 8192px까지 조절 가능
• 이미지를 쪼개던가...
Case 5.
도트 게임을 만들고

싶을 때
도트는 왜 뭉개지죠
• 확대/축소 옵션을 확인
• Bilinear : xy 방향 보간
• Trilinear : xyz 방향 보간

(2D 게임 만들땐 무쓸모)
• Point : 가까운 픽셀 색.

도트 스타일은 Point를
사용
Bilinear
Point
Point 방식의 문제점
• 2배 이상이면 상관없는데, 1
배~2배 사이의 애매한 배율
로 확대됐을 때 기묘하게 깨
진다!!
• 애초에 1배~2배 사이의 크
기로 쓰인다면 도트 스타일
을 사용하지 않는 것이 좋다
• 굳이 도트로 찍은 이미지를
쓴다고 해도 Point 방식으로
쓰지 않는 게 좋다
정리
• 화면 크기에 맞는 이미지를 쓸 것
• 위 사항을 잘 지키면 문제가 없다
• 위 사항을 잘 지켜라
• 그렇게 해라

More Related Content

What's hot

게임프로젝트에 적용하는 GPGPU
게임프로젝트에 적용하는 GPGPU게임프로젝트에 적용하는 GPGPU
게임프로젝트에 적용하는 GPGPUYEONG-CHEON YOU
 
김동건, 구세대 개발자의 신세대 플레이어를 위한 게임 만들기, NDC2011
김동건, 구세대 개발자의 신세대 플레이어를 위한 게임 만들기, NDC2011김동건, 구세대 개발자의 신세대 플레이어를 위한 게임 만들기, NDC2011
김동건, 구세대 개발자의 신세대 플레이어를 위한 게임 만들기, NDC2011devCAT Studio, NEXON
 
[IGC 2017] 넥슨코리아 심재근 - 시스템 기획자에 대한 기본 지식과 준비과정
[IGC 2017] 넥슨코리아 심재근 - 시스템 기획자에 대한 기본 지식과 준비과정[IGC 2017] 넥슨코리아 심재근 - 시스템 기획자에 대한 기본 지식과 준비과정
[IGC 2017] 넥슨코리아 심재근 - 시스템 기획자에 대한 기본 지식과 준비과정강 민우
 
개발자를 위한 도트디자인입문(2017. 03, 09.)
개발자를 위한 도트디자인입문(2017. 03, 09.)개발자를 위한 도트디자인입문(2017. 03, 09.)
개발자를 위한 도트디자인입문(2017. 03, 09.)Yunjeong Kim
 
모바일 게임기획 따라하며 배우기
모바일 게임기획 따라하며 배우기모바일 게임기획 따라하며 배우기
모바일 게임기획 따라하며 배우기Sunnyrider
 
NDC 2015 이광영 [야생의 땅: 듀랑고] 전투 시스템 개발 일지
NDC 2015 이광영 [야생의 땅: 듀랑고] 전투 시스템 개발 일지NDC 2015 이광영 [야생의 땅: 듀랑고] 전투 시스템 개발 일지
NDC 2015 이광영 [야생의 땅: 듀랑고] 전투 시스템 개발 일지Kwangyoung Lee
 
프레임레이트 향상을 위한 공간분할 및 오브젝트 컬링 기법
프레임레이트 향상을 위한 공간분할 및 오브젝트 컬링 기법프레임레이트 향상을 위한 공간분할 및 오브젝트 컬링 기법
프레임레이트 향상을 위한 공간분할 및 오브젝트 컬링 기법YEONG-CHEON YOU
 
게임 기획 튜토리얼 (2015 개정판)
게임 기획 튜토리얼 (2015 개정판)게임 기획 튜토리얼 (2015 개정판)
게임 기획 튜토리얼 (2015 개정판)Lee Sangkyoon (Kay)
 
NDC2016 프로젝트 A1의 AAA급 캐릭터 렌더링 기술
NDC2016 프로젝트 A1의 AAA급 캐릭터 렌더링 기술NDC2016 프로젝트 A1의 AAA급 캐릭터 렌더링 기술
NDC2016 프로젝트 A1의 AAA급 캐릭터 렌더링 기술Ki Hyunwoo
 
NDC 2013 이은석 - 게임 디렉터가 뭐하는 건가요
NDC 2013 이은석 - 게임 디렉터가 뭐하는 건가요NDC 2013 이은석 - 게임 디렉터가 뭐하는 건가요
NDC 2013 이은석 - 게임 디렉터가 뭐하는 건가요Eunseok Yi
 
Tips and experience of DX12 Engine development .
Tips and experience of DX12 Engine development .Tips and experience of DX12 Engine development .
Tips and experience of DX12 Engine development .YEONG-CHEON YOU
 
메이플2 하우징시스템 역기획서
메이플2 하우징시스템 역기획서메이플2 하우징시스템 역기획서
메이플2 하우징시스템 역기획서Eui hwan Hyeon
 
NDC 2012 이은석 - 게임회사 취업특강 (커리어세션)
NDC 2012 이은석 - 게임회사 취업특강 (커리어세션)NDC 2012 이은석 - 게임회사 취업특강 (커리어세션)
NDC 2012 이은석 - 게임회사 취업특강 (커리어세션)Eunseok Yi
 
NDC 2010 이은석 - 마비노기 영웅전 포스트모템 1부
NDC 2010 이은석 - 마비노기 영웅전 포스트모템 1부NDC 2010 이은석 - 마비노기 영웅전 포스트모템 1부
NDC 2010 이은석 - 마비노기 영웅전 포스트모템 1부Eunseok Yi
 
트레블헌터 개발기획서
트레블헌터 개발기획서트레블헌터 개발기획서
트레블헌터 개발기획서정희 이
 
[Ndc11 박민근] deferred shading
[Ndc11 박민근] deferred shading[Ndc11 박민근] deferred shading
[Ndc11 박민근] deferred shadingMinGeun Park
 
[Unite2015 박민근] 유니티 최적화 테크닉 총정리
[Unite2015 박민근] 유니티 최적화 테크닉 총정리[Unite2015 박민근] 유니티 최적화 테크닉 총정리
[Unite2015 박민근] 유니티 최적화 테크닉 총정리MinGeun Park
 
[데브루키/141206 박민근] 유니티 최적화 테크닉 총정리
[데브루키/141206 박민근] 유니티 최적화 테크닉 총정리[데브루키/141206 박민근] 유니티 최적화 테크닉 총정리
[데브루키/141206 박민근] 유니티 최적화 테크닉 총정리MinGeun Park
 
전형규, M2 클라이언트 스레딩 아키텍쳐, NDC2013
전형규, M2 클라이언트 스레딩 아키텍쳐, NDC2013전형규, M2 클라이언트 스레딩 아키텍쳐, NDC2013
전형규, M2 클라이언트 스레딩 아키텍쳐, NDC2013devCAT Studio, NEXON
 
AAA게임_UI_최적화_및_빌드하기.pptx
AAA게임_UI_최적화_및_빌드하기.pptxAAA게임_UI_최적화_및_빌드하기.pptx
AAA게임_UI_최적화_및_빌드하기.pptxTonyCms
 

What's hot (20)

게임프로젝트에 적용하는 GPGPU
게임프로젝트에 적용하는 GPGPU게임프로젝트에 적용하는 GPGPU
게임프로젝트에 적용하는 GPGPU
 
김동건, 구세대 개발자의 신세대 플레이어를 위한 게임 만들기, NDC2011
김동건, 구세대 개발자의 신세대 플레이어를 위한 게임 만들기, NDC2011김동건, 구세대 개발자의 신세대 플레이어를 위한 게임 만들기, NDC2011
김동건, 구세대 개발자의 신세대 플레이어를 위한 게임 만들기, NDC2011
 
[IGC 2017] 넥슨코리아 심재근 - 시스템 기획자에 대한 기본 지식과 준비과정
[IGC 2017] 넥슨코리아 심재근 - 시스템 기획자에 대한 기본 지식과 준비과정[IGC 2017] 넥슨코리아 심재근 - 시스템 기획자에 대한 기본 지식과 준비과정
[IGC 2017] 넥슨코리아 심재근 - 시스템 기획자에 대한 기본 지식과 준비과정
 
개발자를 위한 도트디자인입문(2017. 03, 09.)
개발자를 위한 도트디자인입문(2017. 03, 09.)개발자를 위한 도트디자인입문(2017. 03, 09.)
개발자를 위한 도트디자인입문(2017. 03, 09.)
 
모바일 게임기획 따라하며 배우기
모바일 게임기획 따라하며 배우기모바일 게임기획 따라하며 배우기
모바일 게임기획 따라하며 배우기
 
NDC 2015 이광영 [야생의 땅: 듀랑고] 전투 시스템 개발 일지
NDC 2015 이광영 [야생의 땅: 듀랑고] 전투 시스템 개발 일지NDC 2015 이광영 [야생의 땅: 듀랑고] 전투 시스템 개발 일지
NDC 2015 이광영 [야생의 땅: 듀랑고] 전투 시스템 개발 일지
 
프레임레이트 향상을 위한 공간분할 및 오브젝트 컬링 기법
프레임레이트 향상을 위한 공간분할 및 오브젝트 컬링 기법프레임레이트 향상을 위한 공간분할 및 오브젝트 컬링 기법
프레임레이트 향상을 위한 공간분할 및 오브젝트 컬링 기법
 
게임 기획 튜토리얼 (2015 개정판)
게임 기획 튜토리얼 (2015 개정판)게임 기획 튜토리얼 (2015 개정판)
게임 기획 튜토리얼 (2015 개정판)
 
NDC2016 프로젝트 A1의 AAA급 캐릭터 렌더링 기술
NDC2016 프로젝트 A1의 AAA급 캐릭터 렌더링 기술NDC2016 프로젝트 A1의 AAA급 캐릭터 렌더링 기술
NDC2016 프로젝트 A1의 AAA급 캐릭터 렌더링 기술
 
NDC 2013 이은석 - 게임 디렉터가 뭐하는 건가요
NDC 2013 이은석 - 게임 디렉터가 뭐하는 건가요NDC 2013 이은석 - 게임 디렉터가 뭐하는 건가요
NDC 2013 이은석 - 게임 디렉터가 뭐하는 건가요
 
Tips and experience of DX12 Engine development .
Tips and experience of DX12 Engine development .Tips and experience of DX12 Engine development .
Tips and experience of DX12 Engine development .
 
메이플2 하우징시스템 역기획서
메이플2 하우징시스템 역기획서메이플2 하우징시스템 역기획서
메이플2 하우징시스템 역기획서
 
NDC 2012 이은석 - 게임회사 취업특강 (커리어세션)
NDC 2012 이은석 - 게임회사 취업특강 (커리어세션)NDC 2012 이은석 - 게임회사 취업특강 (커리어세션)
NDC 2012 이은석 - 게임회사 취업특강 (커리어세션)
 
NDC 2010 이은석 - 마비노기 영웅전 포스트모템 1부
NDC 2010 이은석 - 마비노기 영웅전 포스트모템 1부NDC 2010 이은석 - 마비노기 영웅전 포스트모템 1부
NDC 2010 이은석 - 마비노기 영웅전 포스트모템 1부
 
트레블헌터 개발기획서
트레블헌터 개발기획서트레블헌터 개발기획서
트레블헌터 개발기획서
 
[Ndc11 박민근] deferred shading
[Ndc11 박민근] deferred shading[Ndc11 박민근] deferred shading
[Ndc11 박민근] deferred shading
 
[Unite2015 박민근] 유니티 최적화 테크닉 총정리
[Unite2015 박민근] 유니티 최적화 테크닉 총정리[Unite2015 박민근] 유니티 최적화 테크닉 총정리
[Unite2015 박민근] 유니티 최적화 테크닉 총정리
 
[데브루키/141206 박민근] 유니티 최적화 테크닉 총정리
[데브루키/141206 박민근] 유니티 최적화 테크닉 총정리[데브루키/141206 박민근] 유니티 최적화 테크닉 총정리
[데브루키/141206 박민근] 유니티 최적화 테크닉 총정리
 
전형규, M2 클라이언트 스레딩 아키텍쳐, NDC2013
전형규, M2 클라이언트 스레딩 아키텍쳐, NDC2013전형규, M2 클라이언트 스레딩 아키텍쳐, NDC2013
전형규, M2 클라이언트 스레딩 아키텍쳐, NDC2013
 
AAA게임_UI_최적화_및_빌드하기.pptx
AAA게임_UI_최적화_및_빌드하기.pptxAAA게임_UI_최적화_및_빌드하기.pptx
AAA게임_UI_최적화_및_빌드하기.pptx
 

More from Jungsoo Park

유니티 애니메이터 FSM으로 활용하기
유니티 애니메이터 FSM으로 활용하기유니티 애니메이터 FSM으로 활용하기
유니티 애니메이터 FSM으로 활용하기Jungsoo Park
 
48시간, 복셀로 표현하기
48시간, 복셀로 표현하기48시간, 복셀로 표현하기
48시간, 복셀로 표현하기Jungsoo Park
 
풀타임 개발 도전기
풀타임 개발 도전기풀타임 개발 도전기
풀타임 개발 도전기Jungsoo Park
 
LINQ란 무엇인가
LINQ란 무엇인가LINQ란 무엇인가
LINQ란 무엇인가Jungsoo Park
 
셰이더 만들기 실습
셰이더 만들기 실습셰이더 만들기 실습
셰이더 만들기 실습Jungsoo Park
 
셰이더가 뭐에요?
셰이더가 뭐에요?셰이더가 뭐에요?
셰이더가 뭐에요?Jungsoo Park
 
IEnumerator란 무엇인가?
IEnumerator란 무엇인가?IEnumerator란 무엇인가?
IEnumerator란 무엇인가?Jungsoo Park
 
딥 다크 던전 그래픽 작업기
딥 다크 던전 그래픽 작업기딥 다크 던전 그래픽 작업기
딥 다크 던전 그래픽 작업기Jungsoo Park
 
딥 다크 던전 그린라이트 도전기
딥 다크 던전 그린라이트 도전기딥 다크 던전 그린라이트 도전기
딥 다크 던전 그린라이트 도전기Jungsoo Park
 

More from Jungsoo Park (10)

유니티 애니메이터 FSM으로 활용하기
유니티 애니메이터 FSM으로 활용하기유니티 애니메이터 FSM으로 활용하기
유니티 애니메이터 FSM으로 활용하기
 
NABLA 개발기
NABLA 개발기NABLA 개발기
NABLA 개발기
 
48시간, 복셀로 표현하기
48시간, 복셀로 표현하기48시간, 복셀로 표현하기
48시간, 복셀로 표현하기
 
풀타임 개발 도전기
풀타임 개발 도전기풀타임 개발 도전기
풀타임 개발 도전기
 
LINQ란 무엇인가
LINQ란 무엇인가LINQ란 무엇인가
LINQ란 무엇인가
 
셰이더 만들기 실습
셰이더 만들기 실습셰이더 만들기 실습
셰이더 만들기 실습
 
셰이더가 뭐에요?
셰이더가 뭐에요?셰이더가 뭐에요?
셰이더가 뭐에요?
 
IEnumerator란 무엇인가?
IEnumerator란 무엇인가?IEnumerator란 무엇인가?
IEnumerator란 무엇인가?
 
딥 다크 던전 그래픽 작업기
딥 다크 던전 그래픽 작업기딥 다크 던전 그래픽 작업기
딥 다크 던전 그래픽 작업기
 
딥 다크 던전 그린라이트 도전기
딥 다크 던전 그린라이트 도전기딥 다크 던전 그린라이트 도전기
딥 다크 던전 그린라이트 도전기
 

유니티3D에서 2D 이미지 다루기

  • 1. “왜 제 그림 다 깨졌죠” 유니티3D로 2D 이미지 다루기
  • 2. 해상도란? 한 화면, 한 그림이
 픽셀 몇개로 표현되는가? 이미지가 깨지는 이유는 해상도가 안 맞아서
  • 3. 그림 파일이 화면에 표시되기까지... 그림 파일
 (1000px * 1000px) 스프라이트
 (10u x 10u) 카메라 화면
 (800px * 800px) 1유닛당 몇 픽셀인가? 카메라에 몇 유닛만큼 표시되나? 화면 크기가
 몇 픽셀인가? 최종적으로 80% 축소되어 표시됨
  • 4. 그림 파일을 스프라이트로 54px * 54px 그림 Pixel per Unit을 54로 설정 1x1 크기 스프라이트
  • 5. 스프라이트를 카메라로 size=2 인 카메라 (세로길이 4) 1x1 스프라이트 스프라이트가 카메라 세로길이의 1/4를 차지하게 됨
  • 6. 카메라를 화면으로 카메라 세로길이의 1/4을 차지하니까 화면 세로길이의 1/4를 차지함 따라서 화면이 800px * 600px 크기라면 스프라이트는 150px * 150px 크기로 그려짐
  • 7. 유니티 인스펙터 살펴보기 • 스프라이트인가,
 3D 모델에 쓸 텍스쳐인가? • 이미지 하나에 여러 스프라이트가 들어있는가? • 유니티 길이 단위 1유닛 당 몇 픽셀 을 표현할까? • 어느 점을 중심으로 그려지는가? • 밉맵을 생성하는가? • 어떻게 확대/축소하나? • 빌드할 때 어떻게 넣을까?
  • 8. 그래서, 제 그림은 왜 깨졌는데요 실전사례 분석 (모나드 중심)
  • 9. Case 1. 이미지 해상도가 화면에서 표시될 해상도보다 낮은 경우 (이미지를 크게 그리세요...)
  • 10. 추천하는 해결책 전체 게임화면 크기 (1920*1080, 1680*720...)를 정하고 그 화면에 맞춰서 (혹은 2배 크기로) 그립니다.
  • 11. Case 2. Mip Map 생성으로 인해 낮은 해상도가 선택된 경우
  • 12. Mip Map 이 무엇인가요? • 미리 절반씩 축소한 이미지를 
 만들어 두는 것 • 유니티는 화면에 표시되는 크기와 제일 가까운 이미지를 불러와서 
 표시한다. • 이미지를 70% 크기로 축소하면,
 50% 크기로 축소해뒀던 이미지를 140% 확대해서 보여주는 것 • 줄였다가 확대하니까 
 당연히 깨진다!
  • 13. 그러니까... 2D 게임에 밉맵 켜지 마세요. X
  • 15. 축소하면 왜 안돼요? • 런타임에서 확대/축소를
 구현하는 알고리즘은
 우리의 예상보다 구림 • 체감상 50% 이하로 축소하기 시작하면 조금씩 깨진다 • 지나치게 큰 이미지는
 넣기전에 미리 화면 해상도에 맞도록 축소해서 넣는다 • 아니면 차라리 밉맵을 켜던가
  • 16. Case 4. 해상도 상한선에 부딛친 경우
  • 17. 화면 전체 크기의 이미지를 
 넣고 싶을 때... • 이미지 크기 제한의 디폴트 값 은 1024px • 이것보다 큰 이미지는 1024px 로 축소됨 • 화면 전체 크기라면 보통 1680~1920px에 맞춰야 하기 때 문에 크기제한을 올리는 것이 좋다 • 8192px까지 조절 가능 • 이미지를 쪼개던가...
  • 18. Case 5. 도트 게임을 만들고
 싶을 때
  • 19. 도트는 왜 뭉개지죠 • 확대/축소 옵션을 확인 • Bilinear : xy 방향 보간 • Trilinear : xyz 방향 보간
 (2D 게임 만들땐 무쓸모) • Point : 가까운 픽셀 색.
 도트 스타일은 Point를 사용 Bilinear Point
  • 20. Point 방식의 문제점 • 2배 이상이면 상관없는데, 1 배~2배 사이의 애매한 배율 로 확대됐을 때 기묘하게 깨 진다!! • 애초에 1배~2배 사이의 크 기로 쓰인다면 도트 스타일 을 사용하지 않는 것이 좋다 • 굳이 도트로 찍은 이미지를 쓴다고 해도 Point 방식으로 쓰지 않는 게 좋다
  • 21. 정리 • 화면 크기에 맞는 이미지를 쓸 것 • 위 사항을 잘 지키면 문제가 없다 • 위 사항을 잘 지켜라 • 그렇게 해라