디시 NFT 글 보기
갤러리 본문 영역
최적화 관련되어서 몇가지 글들이 있었어
https://gall.dcinside.com/mgallery/board/view/?id=vr&no=3134502
https://gall.dcinside.com/mgallery/board/view/?id=vr&no=2876692
대표적으로 이 두개를 다들 많이 봤을텐데,
여기서 좀 아쉬운 내용들이나 더 있으면 좋은 내용이 있어서 가져와서 한번에 설명하려고 해.
일단 나도 완벽하지 않으니까 나도 몰랐던 내용이나 헷갈린 내용이 있을 수 있다는 점 참고 부탁해.
일단 우리가 사용할 에셋들 리스트니까
이거 2개 다 VCC에 넣어둬,
https://github(이거지워).com/Thryrallo/VRC-Avatar-Performance-Tools
https://github(이거지워).com/d4rkc0d3r/d4rkAvatarOptimizer
(깃허브 링크가 금칙어 걸려서 중간에 (이거지워)라고 넣었어... 지우고 주소창에 넣어줘)
일단 다들 알고 있을, VRC Avatar Performance Tools 부터 간단하게 보고 넘어갈게
상단의 메뉴에서 Thry -> Avatar -> VRAM을 선택하면 이런 창이 뜰텐데
Input 부분에 네 아바타를 넣고서 Show assets of disabled Object를 선택하면 꺼져있던 오브젝트에 들어있는 텍스쳐까지 리스트에 쭉 나올거야.
이걸 보고서, 각각의 텍스쳐가 용량을 얼마나 차지하고 있는지 확인이 가능해.
근데 사실 이러면 이 옷의 텍스쳐만 보고 싶을 때 조금 힘들단 말이야?
그래서 나는 이걸로 전체적인 사이즈를 한 번 확인하고, Show assets of disabled Object를 비활성화 한 뒤에 옷 한벌만 활성화 해서 확인하는 방식으로 진행해.
이건 뭐 편한대로 하면 되는거고
여튼 이 상태로 텍스쳐를 클릭하면, Project 쪽에서 텍스쳐의 위치를 알려주고, 이 텍스쳐를 클릭하면 나오는 Inspector의 옵션들을 수정할거야
옵션들 하나씩 설명할게.
일단 처음 보는 사람들이 조금 의야해 할 내용은 'Mipmap이 뭔데 저걸 켜야하는거임?' 일거야.
밉맵은 항상 전체 텍스쳐 해상도가 필요한 경우에만 비활성화 해야해.
이건 LUT이나 데이터 텍스쳐가 해당되는데, 사실 우리는 무조건 킨다고 생각하면 되는거야.
이걸 키면 VRAM 사용량이 좀 늘긴 하는데, 성능에는 큰 차이가 없지만, 보기는 훨씬 좋아져.
이건 아래 짤 잠깐 보면 알거야.
왜 켜야하는지 바로 알겠지?
다음은 아랫쪽에 있는 옵션들이야.
일단 처음 보는 브붕이들은 아마 Default에서 작업하는 경우도 있을텐데, 단순 텍스쳐 사이즈만 조절한다면 상관 없지만, 이 경우는 세부적인 포멧을 원하는 대로 하기 어려울 수 있어서, 컴퓨터 아이콘이 있는 곳에서 하는게 좋을거야.
일단 Max Size는 말 그대로 해상도를 선택하는거야.
나는 보통 1024를 사용하는 편인데, 이건 취향에 맞게 선택하면 되는거야.
당연한 소리지만, 1024에서 2048로 올리게 되면 용량은 4배가 늘어.
사각형의 가로 세로 길이가 2배씩 늘어나면 그 넓이는 4배가 되는거니까.
Resize Algorithm은 깊이 들어가면 어렵고, 별 차이도 없으니까 가만히 두면 되는거야.
마지막으로 Format에 대한 설명이야.
Format을 선택하면 이런 리스트가 나올텐데, 일단 우리가 사용할 건
RGB Compressed DTX1|BC1
RGB(A) Compressed BC7
RG Compressed BC5
이 3가지야.
각각의 용도를 알려줄게.
일단 RGB Compressed DTX1|BC1는 알파가 없는 텍스쳐에 사용하면 되는거야.
아마 대부분의 텍스쳐가 여기에 속할거야.
Crunched를 사용하지 않는 이유는 아마 알겠지만, 간단하게 설명할게
이 옵션을 사용하면 텍스쳐의 다운로드 사이즈가 줄어들긴 하지만, VRAM은 줄어들지 않아. 그리고 렉의 원인은 VRAM이고.
무엇보다 우리가 작업한 모든 텍스쳐는 VRC 서버로 올라갈 때 다시 한 번 압축되니까 이걸 활성화 하면 2번 압축되어 오히려 안좋은 영향을 줄 수 있어.
다음으로 RGB(A) Compressed BC7는 알파가 있는 텍스쳐에 사용하면 되는거야.
바로 밑의 RGBA Compressed DTX5|BC3와 동일한 VRAM을 사용하지만, RGB(A) Compressed BC7가 퀄리티가 더 높아.
마지막으로 RG Compressed BC5는 노말맵에 사용하는 포멧이야.
기본적으로 우리가 노말맵을 가져오면 RGBA Compressed DTX5|BC3의 포멧으로 되어있는데, 최적화에 관심이 있던 브붕이들은 RGB Compressed DTX1|BC1로 바꿔 썼을거야.
한가지 알아둘 점은, Red는 X축. Green은 Y축. Blue는 Z축을 나타내는데, 대부분의 경우는 Blue 채널을 비활성화 해도 그 차이가 없거나 미미해.
그래서 한가지 채널을 더 없애서 효율적으로 만드는거야.
이렇게 적절한 Format까지 선택했으면 Apply를 눌러주면 끝이야.
Apply 안누르면 저장 안된다!!!
참고로 나는 단색이 대부분인 옷은 512를 사용하고, 퀄리티가 좀 필요하면 1024, 2048은 최대한 사용하지 않으려고 해, matcap은 128~512, Mask는 256~512 정도야. 물론 상황에 따라서 조금씩 조정하기도 하고.
처음 이미지를 보면 알겠지만, 나는 아바타에 2048과 4096이 딱 1개씩 있는데.
하나는 꼭뷰고 하나는 타투야.
그나마 이것도 Decal 기능을 사용해서 일반적인 2048과 4096보다 효율 좋게 사용하고 있어.
아 그리고 이거 중요한건데, VRCLens에 들어가는 텍스쳐들 있지? 그건 기본적으로는 VRAM으로 계산되지 않아.
이건 저게 Render Texture라는 조금 특이한 텍스쳐라 그런데, 그냥 저건 VRCLens 안키면 없다고 생각해도 괜찮아.
이제 알아볼건 d4rkAvatarOptimizer야.
이건 업로드 과정에서 최적화를 진행해주는 도구인데, 효율이 꽤 많이 좋아.
일단 아바타 루트. 그러니까 VRC Acatar Descriptor가 있는 그 위치에 d4rkAvatarOptimizer를 추가할거야.
맨 밑으로 내리면 나오는 Add Component를 누르고 검색하면 될거야.
기본적인 화면은 아래와 같아.
여기서 우리는 위의 Basic, Shader Toggles, Full의 3가지 프리셋 중 하나를 고르면 되는거야.
일단 Basic이야.
기던 아바타의 동작에 영향을 주지 않는 최적화만 진행해.
Skined Mesh에서 사용되지 않는 컴포넌트나 블랜드 쉐이프, 본을 제거해.
애니메이션이 존재하지 않는 블렌드 쉐이프를 없에서 메쉬에 고정시키고.
항상 동일한 방식으로 애니메이션이 적용되는 모든 Skined Mesh를 병합하고
동일한 마테리얼을 사용하는 마테리얼 슬롯을 합치고
어쩌구 되게 많은데, 그냥 인겜에서 바뀌는건 없다고 보면 될거야.
자세한건 깃허브 링크 안에 다 써있어.
다음은 Shader Toggles인데, 이건 Basic의 모든 내용에 몇 가지 추가적인걸 더해.
Poiyomi를 쓰고 있다면 전부 Unlock 해줘야 모든 기능을 쓸 수 있어.
자세한 내용은 깃에 가서 확인해봐!
Full은 모든 최적화를 다 쓰는데.
여기서 사용되는 일부 최적화는 애니메이션이나 셰이더가 차단되면 아바타가 되게 구려보일 수 있어.
이 프리셋은 아바타가 의도한 대로 작동하는지 테스트를 꼼꼼히 해봐야해.
사실 이 툴은 Basic만 사용해도 엄청나게 많이 최적화 되니까, 제발 사용해줘.
상황이 맞으면 Very Poor나 Poor 아바타가 Good이나 Very Good까지 올라갈 수도 있는 툴이야.
이걸 세팅하고서 그냥 업로드 하면 알아서 적용될거야.
모듈러처럼 비파괴 툴이니까 걱정말고.
추가적으로 Decal을 써서 상대적으로 용량은 적게 쓰고 화질은 올리는 방법이 있는데, 이건 꽤나 복잡하기도 하고 귀찮은게 많아서, 많이들 원하면 한 번 작성해볼게.
그리고 앞에서 말했듯이, 나도 틀릴 수 있으니까, "어? 이거 아닌데?" 싶으면 말해줘! 찾아보고 검토한 뒤에 수정할게!
질문은 언제나 환영이야!