몬스터 최적화 일지

jiwoon min·2024년 8월 13일

다운받은 에셋과 마구잡이로 올린 에셋들의 텍스처와 머터리얼 계층관계를 정리해줄 때가 왔다.

체크리스트

[32 / 64 / 128 / 256 /512 / 1024 / 2048 / 4096]
텍스처맵
  • 밉맵 여부
  • 알파 여부
  • srgb(언리얼 자동)
머터리얼
  • 슬롯 수
  • 인스턴스화
  • 현재 프로젝트 옵션으로 플밍으로부터 우들체크 요청을 받았는데 체크 커밋 적용이 안되어서 플밍한테 안된다고 전달 해둔 상태.
    언리얼 우들 : An introduction to using Oodle's texture, data, and streaming compression solutions in Unreal Engine.

텍스쳐맵

A(512x512)1장과 B(256x256)4장의 이미지맵을 로드 할 때 하드디스크 안의 주소를 찾아서 로드해야하기때문에 A보다 B가 로딩이 더 길다. 메모리차지양은 같다고 한다.

노멀맵의 경우 픽셀 한개당 폴리곤 한개의 노멀을 표현하기때문에 256x256의 노멀맵은 65536개를 초과하는 폴리곤표현이 불가능하다.
참조블로그


1024와 512, 512와 256의 차이는 큰 변화가 없음으로 과감하게 256으로 줄여주기로 결정


노멀맵은 차이가 크다. 적당히 보니 1024로 충분하여 해당 사이즈로 결정.
베이스와 노말은 최대한 같은사이즈, 다른맵은 가능한 한단계 작게 진행.

위와 같은 방식으로 모든 텍스쳐를 손봐주려다 머터리얼 슬롯수가 많은게 신경쓰여서 같이 줄여주는것으로 변경

머터리얼

머터리얼 병합을 통해 머터리얼슬롯을 줄인다 -> 드로우콜을 줄인다
하지만 텍스쳐가 한장에 병합되면서 해상도가 낮아진다.
참조:언리얼액터병합-에픽문서
참조:언리얼액터병합-블로그

해보았는데 머터리얼병합은 슬롯이 4개나 7개나 다 병합되어서 정사각 기준 낭비되는 자리가 있었다.
그리고 리깅된 에셋은 머터리얼 병합이 활성화되지 않았다.

오류메세지(insufficient mesh components found for merging)
찾아보니 If you have one or fewer meshes selected, you will see a yellow warning near the bottom of the window stating 라는 이유가 나오는데 정확히는 모르겠고 리깅되어있어서 그런걸로 추측.

어렵지 않으니 그냥 수작업으로 변경


UV재배치.

플랜 안깔아도 정렬되는 것 같았는데 클릭한번 더 하더라도 한번에 끝내고 싶었기 때문에 플랜과 함께 정렬했다.

근데 생각해보니 이거 트림시트랑 다를게 없다. 하다보니 모든게 연결되는 3D작업흐름이 흥미롭다.

텍스처맵들도 포토샵가서 재배치 하는김에 인스턴스화를 위해 채널순서도 프로젝트 통합채널로 정리.

(좌)512~1024로 적당히 하나하나 조정한 텍스처맵이 12장 머터리얼 드로우콜은 4개

(우)1024로 통합한 텍스처맵 3장 머터리얼 드로우콜은 1개

자세한 프로파일을 할줄 몰라서 디스크 사이즈 비교정도만 했는데 (우)가 나은것 같아서 모든 몬스터를 같은 방식으로 진행해줬다.

LOD

  • LOD단계를 적당히 지정해주고 자동거리를 해제해준다.작업 후 단계설정을 변경해도 기존의 설정을 유지 후 추가하거나 제거해주어서 상관 없다.
    LOD그룹은 현재 프로젝트에서는 세팅해주지 않았다.
    참조:LOD-에픽문서
    참조:LOD와컬리전-유튜브

[사진]

  • Percent TrianglesLOD단계별 tris를 퍼센트단위로 세팅할 수 있다.
몬스터는 구매한 에셋이고 최적화는 뒤로 미루면서 아트작업을 했는데 LOD를 공부하기 전이었기때문에 몬스터의 tris무게를 블렌더에서 직접 줄이는 과정이 있었고.. 당연히 원본 uv와 100%일치할 수 없이 적당히 따라서 언랩 후 트림시트 조각 맞추는 과정을 거쳤다. 언리얼의 LOD세팅에서 예쁘게 tris줄이는 옵션이 있는 것을 알았더라면 몬스터 5마리 줄이는 2일의 기간은 없엇을텐데 속이 상했다.

에셋은 만든 에셋이든 구매한 에셋이든 엔진에 올리는 순간 함께 최적화 작업을 해주자는 교훈을 얻을 수 있었다.
캐릭터같은 경우는 LOD세팅을 저장두었다가 다른 에셋에 같은 세팅을 적용할 수 있는데 일괄세팅이 값이 일괄인거지 에셋의 비주얼적으로 봤을때는 일괄적이지 않아서 하나하나 다 세팅해주었다.


라이트

기존 프랍세팅에서는 라이트맵해상도를 관리 할 수 있었는데 동적 에셋은 그런기능이 딱히 없고 동적라이팅 세팅의 영향을 받는다고 한다.
여러 목록중에서 일단 ContactShaow를 off해줬다.
근접그림자인데 이정도까지는 필요 없을거라 판단했다.
[참조:컨택트섀도-에픽문서]

0개의 댓글