見出し画像

AVATAR日常用輕量化及提升等級(Performance Rank)教學

嗨!這個教學會從最基礎的日常用輕量化,再到比較進階的提升等級,讓大家跟朋友玩的時候可以減輕彼此電腦的負擔,要去參與活動遇到等級限制時也可以用自己漂漂亮亮Avatar :D
所有教學都會附上步驟、圖片以及遇到問題的解決方法,如果還有更多問題歡迎到VRC技術研究社的Discord確認是否有人詢問過相同或是類似的問題,也歡迎提出你遇到的問題,社群裡有比我更厲害的人可以提供協助:D


事前確認

TEXTURE MEMORY太大會導致什麼樣的問題

假設一個Avatar的Texture Memory有500MB,一個僅有8GB VRAM的顯卡在不算電腦其他應用程式跟地圖最多只能負荷約10隻。

如何確認自己Avatar的Texture Memory

先到大選單裡面點選你平常使用的Avatar,右下角會有View Avatar Details,點開後就會顯示這隻Avatar所有數據。


準備事項

如果你的Avatar身上有超過5套衣服建議把目前這隻Avatar複製一份,把複製出來的Avatar衣服數量控制在五套內,這樣對於控制Texture Memory比較方便。接下來的步驟會使用到以下插件,請先安裝並導入Unity ↓↓
lilAvatarUtils BY : lilxyzw
Release 1.0.3 · lilxyzw/lilAvatarUtils · GitHub

導入成功後他會在最上排的Windows裡面的_lil

壓縮Texture Memory教學

開啟剛剛的插件後把角色拖拉至上面的None (Game Object)
它就會顯示你Avatar使用到的所有Texture

一般來說衣服上有文字,解析度太低會糊掉,才需要用到2048,大部分情況下都只需要用到1024即可,像是一些Mask(遮罩)或是Emission(發光)都只需要512就能呈現一樣的效果。
點擊VRAM Size後它會從最大MB到最小作排列 ,旁邊的Resolution就是這張貼圖的解析度,在Max Resolution把所有4096解析度或是顯示紅字的貼圖都往下降到2048,選取完畢後點擊左上角的Apply就保存成功了!

額外補充

如何減少Download Size?
以及查看40/80隻你在使用的Avatar會占用多少VRAM?

如何減少Download Size
點選任何一個物件的貼圖進到它的貼圖資料夾內

紅色箭頭勾的框框起來後,可以拖拉藍色箭頭來控制這張貼圖壓縮程度
100為無壓縮、0為最大壓縮,這個壓縮也會影響到畫質,可以先拉到50左右看一下貼圖在物件上呈現的效果,拉好之後按右下角的Apply就可以保存看效果了!

這個步驟建議邊拉邊看效果,如果調整的是一張的長得像下面的藍藍貼圖,它叫做Normal map(中文叫做法線貼圖)
如果這種貼圖拉到0,發現它一點改變都沒有,就可以直接從Material裡刪掉,可以減少一點Texture Memory :D

查看40/80隻你在使用的Avatar會占用多少VRAM
首先要安裝一個插件 Thry's VPM Listing 插件
打開網頁後點Add to VCC

點擊開啟後點擊 I Understand, Add Repository

點擊目前正在使用的專案的Manage Project

找到的Thry's Avatar Performance Tools 然後按旁邊的 +

回到Unity就會看到插件在導入
導入完後會出現在最上面的Thry
選擇Avatar裡的VRAM

把Avatar拉進None的框框

上面會顯示你的Texture Memory、Mesh Memory還有整個Avatar會占用多少MB,下面則是顯示如果有40隻或是80隻你的Avatar會占用別人顯卡多少VRAM。
示範用的Avatar只有穿一件衣服並且壓縮貼圖,算上地圖以及其他電腦應用程式,就算同時出現80隻相同Avatar也不會占滿8GB的VRAM :D

以上就是基礎的日常用Avatar輕量化教學!恭喜你讓你朋友省下了20FPS:DDDD

提升等級教學(Performance Rank)

前言

接下來要講得是比較進階讓Avatar提升等級的方式。
如果你是一個長期在玩的玩家,建議準備一隻Poor以上的Avatar,可以在人數超過15人的場合,或是有朋友電腦不好的情況下使用。

提升等級要取捨的地方會變多,但是效果也會很明顯的提升。

內容會比上述方法還要冗長,因為比起直接照著教學做以外,我會希望提供更多有關Unity跟Avatar的概念,也能提升一些有用的小知識,我已經盡力在簡化複雜的過程,希望你們可以耐心看完:<

!!請不要使用教學內容沒有提及的插件!!
!!包括MA(Modular Avatar),請手動穿衣!!

這是我輕量化的極限,good是可以保持漂亮外觀的情況下,讓所有負荷都大幅降低的:DD

確認資訊

首先,官方對於分辨等級的標準如下:
Performance Ranks | VRChat Creation 

再來是如何確認自己是否有達到標準
在Unity裡面的SDK上傳面板裡確認(下圖版本3.4.1),每個細項後面都會有Recommend就是推薦數量。
假如你的其中一個細項是Very Poor它就會推薦Poor的標準,如果已經達到Good的標準就不會在往上推薦。

如果沒有完整顯示,就到Settings裡面把Show All Avatar Performance Details打開。

教學開始

這邊會將重點細項進行單獨說明。
請先準備一隻乾淨的Avatar,就是複製一隻目前所使用的Avatar,並且把所有的衣服的物件、骨頭還有Phys bone通通刪除
如果是用MA(Modular Avatar)穿衣,直接將衣服的檔案刪除即可。
若使用其他自動穿衣插件,建議重新擺一隻上去把原有素體(臉跟身體)可以還原的部分還原。
把處理好的Avatar從左側場景物件中拉到Assets裡想要儲存的地方,最後這個動作叫做儲存Prefab
可以理解為遊戲存檔,建議每做完一步就儲存一次Prefab,避免步驟錯誤導致無法復原,但如果錯誤太多重頭再做一次即可。

Polygons

中文叫做"面數"
確認一個物件面數的方法有幾種:
⦁ 你在Booth上瀏覽商品時,可以看一下店家有沒有寫,有寫的話會用兩種方式出現
一種是直接寫上Polygons (EX: Polygons:123456)
另外一種會用三角形△的符號 (EX: △123456)
⦁ 在Unity裡面確認,要先找到的是物件的Mesh
先到avatar的資料夾內找到FBX的資料夾

裡面會有兩種,第一種是含有Materials的物件 (有顏色和物件本身) ,另一種就是純Mesh (沒有顏色只有單純物件)

找到純Mesh後,若沒有開啟預覽畫面,請將視窗往上拉開

打開後看到底下有個數字,後面是寫tris的,就是我們所說的面數

再來就是分析Avatar素體哪邊面數最多,需要遮蓋並刪除的部分,以及如何挑選衣服,還有補充上面如果店家沒有附上面數資訊的處理方式。

透過下面的圖,我們可以用最直觀的方式看到哪個部位的線最密集,通常都是手指腳趾、指甲、胸部、肚臍、臀部、跨下
那我們挑選衣服的時候,盡量選擇可以剛好蓋住上述部位和大部分身體面積的衣服

如何挑選適合的衣服

這要回到官方的等級判定Poor、Medium跟Good
一樣是7萬,意思就是只穿一件不要太多"骨頭""細節"的衣服,加上刪除原本身體的"面",就能達到標準線。

建議能夠取捨到哪就刪到哪,因為我們還是需要頭髮或是鞋子,再加上每個人的Avatar多少都會有一些自己的特徵或是裝飾品,除了這幾點以外也注意PhysBone數量,裝上之前看一下面數有多少再決定要不要加上去。

下面這兩套衣服是最容易在刪面後達標的,主要就是細節皺褶較少,PhysBone乍看下來也不多,大部分剛才說的部位也都有遮擋到。
Amenbo - BOOTH 

當然也可以不用照著上面這兩種衣服去找,像我就是選這套衣服裡面的緊身衣,還有襪子當作遮擋大部分身體的衣服,一樣可以達到效果!
vinsen - BOOTH (這個商品下架了…)

Material Slots

這東西就是我們在基礎教學裡提到的"材質球"( Material )
如果沒有打算壓縮到Medium以上,基本不需要在意。
但是有一點要注意!
如果衣服本身有很多部位,作者有可能會把UV拆成不同的Materials來做,所以是有機會超出標準外的
請先下載並導入以下插件
GitHub - d4rkc0d3r/d4rkAvatarOptimizer

導入之後點選Avatar
在Inspector的最底下點Add Component,輸入d4就會出現了

把Optimize FX Layer取消勾選,在展開下方的Exclusions並把Avatar的Body(頭)拉進去第一個欄位,如果你跟我一樣有驚嘆號的話不用理會,因為這是不建議合併的Shader,單純沒辦法做材質球相關的優化。
這樣就完成了!
這個插件是在你上傳Avatar的時候會自動運行,如果你想要檢查這個插件的壓縮結果,也可以按下方的Create Optimized Copy,他會生成一個運行完的結果,如果你滿意的話也可以上傳他運行完的結果!

Skinned Meshes & Meshes & Mesh

什麼是Mesh?
"Polygon"是單獨的"多邊形",把多個"polygon"組合在一起就會是"Mesh",那"Meshes"就是Avatar上有多少個物件(Meshes)。

什麼是Skinned Meshes?
"Skinned Meshes"是有包含"Bone"的"Mesh",簡單理解就是所有"會動"的Mesh都叫做"Skinned Meshes"。

為什麼要解釋?
因為他們的條件不一樣:D
一樣是Poor條件的情況下,Skinned Meshes要16以內,Meshes要24以內,就是因為這兩者是分開計算所以才需要解釋。
這就是上面一直提到不要太多"物件"的最主要原因,在套好衣服跟確認好髮型之前請先不要加太多飾品在身上,這些都有機會達不到標準。

如果已經挑好衣服,還有確認好Materials不會超出標準後,就可以開始刪除身體或是衣服上的Mesh了!
請先下載並導入以下插件
MeshDeleterWithTexture beta - がとーしょこらのおみせ - BOOTH

這是一個完全手動的插件,因為沒有全自動的刪Mesh的插件,這部分要麻煩各位了。
使用方法很簡單,打開後把你的身體或是任何想要刪Mesh的物件,丟進上方的Renderer欄位。

工具說明

PEN 畫筆 : 畫上你要刪除的面,我會建議直接用紅色(R)來畫,因為畫上去後會是半透明,可以看到是否畫歪
ERASER 橡皮擦 : 就是橡皮擦:D
Pen/Eraser size : 調整畫筆大小
Clear All Drawing : 清除所有畫過的痕跡
最底下的Delete Mesh : 刪除畫過的面

在左邊的圖片上滑動滾輪,往上滾放大,往下滾縮小,也可以拉下面的Scale或是輸入數字調整大小,右鍵按住拖曳可以移動圖片
畫上去後可以在物件上看到你畫的範圍,如果有超出可以即時用橡皮擦刪掉!
關於這個工具的教學我不太確定怎麼解釋比較合適,所以如果有問題可以在Discord伺服器詢問:<

如果畫錯但是已經刪掉了,可以從物件的Mesh裡面找到FBX資料夾,找到上一個版本的Mesh就可以再畫一次了

Phys Bone

跟Phys Bone有關的東西需要注意幾點

  1. Phys Bones Components : 所有Phys Bone數量 (poor : 32 / medium : 16)

  2. Phys Bones Colliders : Phys Bone碰撞 (poor : 32 / medium : 16)

  3. Phys Bone Transform : 身體Phys Bone數量 (poor : 256 / medium : 128)
    以上三點如果挑衣服的時候有注意到的話不會超過,如果超過可以刪除身體上不必要的Phys Bones,例如有些Avatar的臉頰、舌頭、屁股跟大腿都可以刪除,如果衣服是寬鬆而且包覆性強,然後胸部小也可以把胸部的Phys Bones刪掉,盡量讓身體上除了胸部跟屁股以外沒有Phys Bone,因為要為頭髮跟衣服的Phys Bones保留最大空間

合併Phys Bones

有一個方法可以把兩個"對稱"的Phys Bones合併成一個,可以減少很多Phys Bones Components,而且不會影響到效果!
我的頭髮就是一個例子,基本上是完全對稱的,衣服的帶子或是耳環也可以用這個方法

首先先找到你的頭髮骨頭的位置,打開右上角的Gizmos就可以看到頭髮Phys Bones的所有位置,只要看到有對稱的都可以先記起來。
如果你發現大部分Phys Bones的參數都長一樣,不管有沒有對稱也都可以用這個做法。

1.找到對稱或是參數一樣的Phys Bones之後,就可以在你的頭髮的物件中右鍵選擇Create Empty
2.把剛剛創建的GameObject改成能辨認的名字,以下會把GameObject簡稱"物件"

3.把剛剛選中的物件拖曳進剛創好的"物件"中
4.隨便選一個剛拖進去的任何一個頭髮的Phys Bone參數,點選右上角的三個點,然後按Copy Component

5.回到剛剛創建的"物件"中,點選Transform的右上角的三個點,選擇Paste Component As New,如果Transforms裡面的 Root Transform有指定物件,就把它刪除
6.把剛剛"物件"底下丟進去的頭髮骨頭的Phys Bone參數通通刪掉,這樣就可以用一個Phys Bones參數控制所有的頭髮了,減少了很多Phys Bone Transform的數量

最後再點上面的撥放按鈕,左右晃動Avatar看效果如何,如果你跟我一樣是一次性把很多個骨頭用一個Phys Bone參數,那可以考慮換成對稱的可以組成一個。

Lights

為什麼要單獨講這個?
因為很多人不清楚這東西會占用顯卡多大效能。
如果是為了要做一隻"輕量化"Avatar,請不要猶豫,直接把身上所有的Lights刪掉,包括"PCSS"也請替換成一般的liltoon,"RealTimeLight"是會影響到所有在光源裡的所有東西,可以想像是被手電筒範圍內照射到的物件通通都會被運算進去。
以上沒有提到的東西是不太會出現或可以直接刪除的!

結尾

以上就是本篇所有內容!
這是我第一次打教學類型的文章,這個教學的所有部分是請教朋友才知道的,我只是把內容整理出來。
提升等級(Performance Rank)教學的部分如果取捨更多的話可以到Good :DD
如果有哪邊不理解或是遇到什麼神奇的問題都可以到VRC技術研究社的Discord詢問:DDD
謝謝你不嫌棄的看完全部內容:DDDD

特別感謝

山の豚YamaButa 、Yan-K 、VRC技術研究社 、水鳥 waterbird 、Mimosa


この記事が気に入ったらサポートをしてみませんか?