Optimization (최적화)




1. Mesh는 통 메쉬를 쓸것 (출처 : Unity Manual)
하나의 캐릭터에 두개의 메쉬를 쓰게 되면 랜더링 타임이 두배~ (아... 이런 써글), 필요한 부분은 어쩔 수 없겠죠.

2. Material도...통 머티리얼 (출처 : Unity Manual)
특별한 경우 - 눈의 쉐이딩(반짝반짝)이 다르거나 옷과 피부(SSS), 털(Fur)이랑 맨살 같이 완벽히 다른 경우를 제외하고는 하나의 머티리얼을 쓴다. (손맵으로 제작해서 )하나의 머티리얼을 쓰는 것이 Performence 측면에서 좋다.

3. Bone 개수 (출처 : Unity Manual)
캐릭터당 30개 이하의 본을 추천 (Unity3D 엔진은 추천하는 방식이 있을때는 따르는게 좋다 - 많이 경험했잖아요.)
미들레인지 게임에서 15~ 60 개의 본을 사용
  1. NAE PC(Proto Type) 의 본 개수전체 : Biped only 58개, 추가 본 없음
             Biped 중 Twist : 14개 - 아래 이미지에서 분홍색에 해당

현재 - 58개의 본Twsit Bone을 최소화, 손가락 삭제 - 36개Twsit Bone 삭제 - 42개

PC 움직임에서 손가락의 운동이 중요하다면 Twist Bone의 전체를 삭제 하고 5손가락을 살려 42개의 Bone까지 줄일 수 있음
Unity3D 의 추천 사항에 맞추려 한다면 Twsit Bone 및 손가락 삭제로 Total 30 개의 Bone으로 제작해야함 - 아래 이미지


코스튬에서 흔들리는 머리카락, 긴 치마등에 대한 표현은 불가능한 상태
그렇다면, 치마 및 머리카락의 표현은...? 
  • 숏컷 - OK
  • 단발머리 - 흔들리지 않는 상태 그대로
  • 긴 머리 - 몸에 Rigging 하여 몸에 붙어있음
  • 땋은 머리 - 불가                 Bone을 추가한다면 : 땋은머리 하나당 Bone 4개가 추가됨, 3방향의 땋은 머리를 대비 한다면 12개의 Bone 추가

  • 치마 - 전부 다리에 Rigging 하여 따라감, 각 치맛단의 움직임은 없음
2. NPC
위의 기본 셋에 근거하여 30~40개의 기본 바디 세팅에서 시작하여 추가 Bone 작업으로 구현
Unity3D 메뉴얼에 근거하여 60개가 넘지 않도록 (미들레인지급) 제작
추가 본으로 사용가능한 개수 : 20~30개 정도
특징을 가장 잘 나타내는 부분에 대한 추가 Bone 세팅만으로 구현 가능하도록 디자인

세컨더리 애니메이션 구현에서 부드럽게 표현 가능한 최소 본 개수 : 4 (부드럽지 않아도 된다면....?)
참고 동영상

3. 추가 Bone Naming
1. 접두어 : Bone
2. 부위 : wp - 무기
             skirt - 치마
             hat - 모자
             nose - 코
             ear - 귀
             lips - 입
 tail - 꼬리
 obj - 그 외
3. 위치 : F - 앞
B - 뒤
L- 좌
R - 우
C- 가운데
LF - 앞에서 좌측
RF - 앞에서 우측
LB - 뒤에서 좌측
RB - 뒤에서 우측
4. Numbering : 두자리수 로 표기


4. Polygon 개수
500 ~ 6000 개의 폴리곤 정도가 합당. 퍼포먼스가 떨어진다면 폴리곤 개수를 낮출것


5. IK  and FK
IK로 작업된 애니메이션 파일 일지라도 Unity3D 로 들어올때 FK로 구워져 들어오게 된다. Unity3D는 IK가 전혀 필요 없지만 캐릭터 세팅에 IK가 남아 있으면 CPU 오버헤드를 일으켜 퍼포먼스 저하를 가져오게 된다.
전부 구워서 제작하세요.

6. Texture
Unity3D 에서는 texture의 최적화에는 신경을 많이 안써도 된다.
리소스 자체는 어떤 파일로 작업을 하던 상관이 없으며(PSD 씁시다)
빌드시 텍스쳐 옵션 값에 따라 자동으로 타겟 기기에 맞춰 최적화가 이루어 진다.
그래도, 빌드 옵션에 대한 것은 살펴보면 좋겠다.

      Optimizing texture size ( 출처 : Unity Manual)

 빌딩시에 텍스쳐가 대부분의 공간을 차지 한다. DXT/PVRTC 포맷을 우선 적용해보길.
 그렇게 했는데도 충분히 사이즈가 줄지 않으면 텍스쳐 사이즈를 줄여 본다. 리소스 자체의 사이즈를 줄이지 말고 Unity3D 상의 옵션 값에서 Max Texture Size를 줄인다.

Changing the Maximum Texture Size will not affect your texture asset, just its resolution in the game

텍스쳐당 메모리 잡아 먹는 크기

 Desktop

CompressionMemory consumption
RGB Compressed DXT10.5 bpp (bytes/pixel)
RGBA Compressed DXT51 bpp
RGB 16bit2 bpp
RGB 24bit3 bpp
Alpha 8bit1 bpp
RGBA 16bit2 bpp
RGBA 32bit4 bpp

 iOS

CompressionMemory consumption
RGB Compressed PVRTC 2 bits0.25 bpp (bytes/pixel)
RGBA Compressed PVRTC 2 bits0.25 bpp
RGB Compressed PVRTC 4 bits0.5 bpp
RGBA Compressed PVRTC 4 bits0.5 bpp
RGB 16bit2 bpp
RGB 24bit3 bpp
Alpha 8bit1 bpp
RGBA 16bit2 bpp
RGBA 32bit4 bpp

 Android

CompressionMemory consumption
RGB Compressed DXT10.5 bpp (bytes/pixel)
RGBA Compressed DXT51 bpp
RGB Compressed ETC10.5 bpp
RGB Compressed PVRTC 2 bits0.25 bpp (bytes/pixel)
RGBA Compressed PVRTC 2 bits0.25 bpp
RGB Compressed PVRTC 4 bits0.5 bpp
RGBA Compressed PVRTC 4 bits0.5 bpp
RGB 16bit2 bpp
RGB 24bit3 bpp
Alpha 8bit1 bpp
RGBA 16bit2 bpp
RGBA 32bit4 bpp

To figure out total texture size: width * height * bpp. Add 33% if you have Mipmaps. (산수입니다)

유니티는 텍스쳐를 불러 올때 압축을 합니다. 작업을 빠르게 진행하기 위해서 이 옵션을 꺼도 됩니다. 그렇다고 빌딩시에도 비압축된 텍스쳐가 올라가는것은 아닙니더.

6.  기기별 그래픽 최적화
Scene의 설계
1. iPhone 3GS, 4 (부트 캠프_이정표씨 발표 자료)
Character : 1만 2천 폴리곤
배경         : 6만 폴리곤 내외

2. iPad 2 또는 그 이상 (부트 캠프_이정표씨 발표 자료)
    Character : 3만 2천 폴리곤
    배경         : 6만 폴리곤 내외

3. 안드로이드(부트 캠프_안상혁씨 발표자료)
Scene 당 7000 vertex 이하
2 link Bone

4. Web (부트 캠프_삼국지를 품다 PT 자료)
1024 X 600 해상도에서
120만  폴리곤 일 경우 18FPS
 25만  폴리곤 일 경우 30FPS


참고 사항
Unity3D 3.5 이후 버젼은 Mesh LOD 기능 추가로 좀더 유연할 것으로 예상

댓글

가장 많이 본 글