VR 전시 등에서 사용할 수 있는 의상 경량화

  • URLをコピーしました!

거칠게 말하면 인위적으로 Mesh Baker 같은 일을 합니다.
구체적으로는

  • 텍스처 아틀라스화 & 텍스처 크기 줄이기
  • 텍스처 아틀라스화 & 머티리얼 통합

를 인력으로 하는 방법입니다.

目次

1. 어떤 경우에 경량화가 필요한가요?

Vket 등에서 전시용 3D 모델을 제출할 때, 빌드 사이즈와 머티리얼 수에 제한이 있습니다.
예를 들어, Vket 2023 Winter의 아이템 전시 부스인 경우, 출품 제한은 다음과 같습니다.

  • 빌드 크기: 2MB (텍스처 용량)
  • Set Pass Calls (머티리얼 수): 6

여기서는 설명의 단순화를 위해 Set Pass Calls ≒ 머티리얼 수로 설정했습니다.

만약 전시물이 이 요건을 초과하는 경우,
a. 빌드 크기 초과: 아틀라스화 및 텍스처 크기 줄이기
b. 머티리얼 수 초과: 아틀라스화 및 머티리얼 통합
등으로 경량화하여 요구사항을 충족할 수 있도록 대응합니다.

이 기사에서 다루지 않는 내용
 여러 머티리얼을 통합할 때 각종 파라미터와 Matcap 등을 잘 조합해야 하는 경우가 있습니다.
 하지만 설명이 복잡해지기 때문에 여기서는 다루지 않겠습니다.

2. 할 일

⧏41⧐ 소재 통합하기 ⧏33⧐ material ⧏35⧐ 소재 ⧏34⧐

텍스처 머티리얼이 개별적으로 적용된 4개의 모자에 대해 다음과 같은 작업을 수행합니다.
a. 머티리얼을 하나로 모으다
b. 4개의 텍스처(1024px)를 1개의 텍스처(1024px, 2048px)로 합친다.

해설에 사용하는 모델은 공개하고 있습니다.
절차 확인 등에 활용해 주세요!

unitypackage 내용

2.1 부하 및 용량 점검

최종적으로 경량화 효과를 확인하고 싶기 때문에 경량화 전의 하중을 확인해보자.
아래 단계에 따라 게임 탭의 통계 정보를 확인합니다.

  • unitypackage 가져오기
  • 실행 Play 를 눌러 stats 열기

세트 패스 콜
 아래 그림의 “Set Pass Calls: 14″는 머티리얼 수에 따라 늘어나는 부하를 의미합니다.
 아무것도 없는 상태에서도 Set Pass Calls는 2를 사용하므로, 모자만 있는 상태에서 Set Pass Calls는 12가 됩니다.

빌드 사이즈
 빌드 사이즈 계산은 아래의 『【2019년 대응】VRC 아바타/월드 체중계 』를 사용합니다.
 빌드 사이즈 계산 방식의 차이로 인해 약간의 오차가 발생할 수 있습니다. 하지만 문제가 될 정도는 아니라고 생각합니다.

계산 절차

  • 빈 게임 오브젝트를 만들고 이름을 Berets로 변경합니다.
  • Berets에 4색 베레모 넣기
  • 우클릭 후 WeightScale 선택

계산 결과의 “Compressed Size”가 빌드 사이즈가 됩니다.
경량화 이전 빌드 사이즈는 1.34 [MB] 입니다.

빌드 크기 계산 작업
계산 결과

2.2 3D 모델의 UV 이동

모자 모델은 원피스 의상에서 추출한 것이기 때문에 UV가 뭉개져 있습니다.
먼저, 아래 절차에 따라 4가지 색상의 모자 모델을 만듭니다.

Blender에서 RibbonBeret.fbx 가져 오기
가져온 모델 3개 복사(총 4개) ② 가져온 모델 3개 복사(총 4개)
알기 쉽도록 각 모델마다 색상명을 추가한다.

색상별 모델명

뷰의 오른쪽 탭을 열고 2D 커서 위치의 X, Y를 0.5로 설정하여 UV 중앙으로 이동한다.
피벗을 2D 커서로 설정하기
축소로 스케일을 모두 0.5로 설정합니다.
0.25 단위로 이동시켜 색상별로 4블록이 되도록 배치한다.
완료되면 익스포트하고 Unity에서 불러옵니다.

2D 커서 이동 & ⑤ 피벗을 2D 커서로 설정
축소하여 스케일을 0.5로 설정한다.
0.25 단위로 이동시킨다.
⑦ 색상별로 블록에 배치 ⧏33⧐ ⑦ 色ごとにブロックに配置 ⧏35⧐ ⑦ 색상별로 블록에 배치 ⧏34⧐

2.3 이미지 & 통합 자료 만들기

2.2의 UV에 맞춰 텍스처를 이동한다.
② 노멀맵도 텍스처와 마찬가지로 움직인다.
기존 머티리얼을 복사하여 ① 텍스처와 ② 노멀맵으로 교체합니다.
2.2의 4 개의 모자에 ③의 재료를 적용

컬러 텍스처
노멀 맵

2.4 다시 한번 부하 및 용량 확인

경량화의 결과는 다음과 같다.

개별 머티리얼(2.1)
텍스처 각 1024 px
머티리얼 통합
텍스처 1024 px
머티리얼 통합
텍스처 2048 px
세트 패스 콜1222
빌드 사이즈약 1,340원[KB]853.46[KB]약 1.520[KB]
SetPass calls는 의상 이외에서 2개가 발생하기 때문에 이미지 표시에서 2를 뺀 값입니다.

세트 패스 콜
 10을 줄일 수 있었고, 대략적으로 드로잉 부하가 약 15% 정도 감소했습니다.
 이번 사례와 같이 색상이 다른 동일 3D 모델의 경우, Set Pass Calls가 줄어들기 쉬운 경우입니다.

빌드 사이즈
 당연히 텍스처 해상도에 따라 결과가 달라집니다.

  • 텍스처 결합(2048px)의 경우 빌드 사이즈가 커집니다.
  • 텍스처 결합(1024px)의 경우 빌드 사이즈가 작아집니다.

 텍스처 해상도는 빌드 크기 제한에 따라 선택하게 됩니다.

머티리얼 통합 SetPass calls
“머티리얼 통합 & 텍스처 1024 픽셀 빌드 사이즈

3. 요약

머티리얼 텍스처를 통합함으로써 Set Pass Calls(드로잉 부하)를 줄일 수 있었습니다.
단, 해상도를 유지하면 빌드 사이즈가 커집니다.
따라서 Set Pass Calls와 빌드 크기를 모두 줄이려면 해상도를 낮춰야 합니다.

이번엔 컬러바리를 하나로 합친 것뿐이라서 간단했다.
하지만 실제로는 머티리얼의 파라미터(그림자 색상, 림 라이트 색상 등)가 다르거나 Matcap의 슬롯이 부족한 경우가 대부분인 것 같습니다.
이 경우, 외관을 타협하느냐, 전시물을 줄이느냐의 트레이드오프 문제가 발생한다.

이요!
도움이 되었으면 좋겠습니다!

感想などには 『 #AvatarDressing 』 タグをお願いします!
  • URLをコピーしました!

VRChat で洋服モデラーで運営する酒場イベントやっています。
記事の疑問質問はこちらで聞いてください!
https://twitter.com/CrossTailors

目次