Ready Player Me Avatar Integration
原則
這個附加元件允許整合Ready Player Me半身虛擬人偶。
還沒有新增完整身體虛擬人偶適配,但是如有需要,可以輕易地適配程式碼以支援它們。
功能
虛擬人偶附加元件相容性
這個附加元件與虛擬人偶附加元件相容。
只要AvatarRepresentation
元件存在於RPMAvatarLoader
的上層階層之中,這個相容性尤其允許:
- 接聽器在載入虛擬人偶時收到警示
- 新增已載入ReadyPlayerMe虛擬人偶到一個LOD群。
RPMAvatarLoader
可以被單獨使用,這對於UI、虛擬人偶選擇等等相當有用。
虛擬人偶編輯
在此之外,這個附加元件應用一些修正到已載入的ReadyPlayerMe虛擬人偶。所有這些修正都是選擇性的,並且可以透過在RPMAvatarLoader
類別上的avatarOptionalFeatures
遮罩來選擇應該應用的修正:
HideRPMHands
:如果選擇這個,將隱藏ReadyPlayerMe手。有關的情況是提供了另一個手代表解決方案,比如在VR共享-為基礎的範例中使用的手,OptimizeAvatarRenderers
:確保ReadyPlayerMe虛擬人偶在一個URP脈絡中良好地顯示,並且在效能側的耗用較少(沒有陰影等等),DetectColorForAvatarDescription
:分析虛擬人偶材質以確保RPMAvatarInfo.AvatarDescription包含顏色。可用於更改手顏色以匹配皮膚,或是使用頭髮及衣服顏色來自訂一個虛擬人偶的簡化的LOD代表,EyeMovementSimulation
:連線ReadyPlayerMe虛擬人偶眼睛到眼睛模擬系統,這樣它們跟隨靠近虛擬人偶的附有一個GazeTarget
元件的物件,LipSynchronisation
:連線臉網格混合形狀到Oculus唇形同步。請注意,在MacOS及webGL上,這是不可行的,並且將被一個簡單聲音層級偵測系統所取代,LipSyncWeightPonderation
:對於ReadyPlayerMe虛擬人偶網格而言,Oculus唇形同步混合形狀權重產生太高的值。所以它必須被適配,可以透過更改OVRLipSyncContextMorphTarget
程式碼(請參見這裡),或透過使用這個選項,其修正LateUpdate
中的值,EyeBlinking
:在虛擬人偶上應用一個Ready Player Me提供的眨眼指令碼,這樣它們會自然地眨眼,OnLoadedSoundEffect
:使用聲音管理器來在虛擬人偶下載完成時播放一個聲音,DownloadThrottling
:使用PerformanceManager
來預防多個ReadyPlayerMe虛擬人偶下載在同一時間發生(它可能佔滿頻寬、阻擋適當的網路交流),
預設下,選擇所有選項(AllOptions
值),但是舉例而言為了在一個簡單選擇UI中展示虛擬人偶,,有關的是只選擇HideRPMHands
及OptimizeAvatarRenderers
選項。
快取系統
如果相同的虛擬人偶在一個場景中被使用多次,這個附加元件提供一個快取系統,其防止重新下載相同的虛擬人偶。
如果相同的虛擬人偶被下載第二次,如果第一個的一個複本已經可用,第一個的一個複本將被具現化。
第一個的複本如果仍在下載,第二個的複本將等待一下(最多為maxSameDownloadWaitTime
,預設是10秒)。
請注意,ReadyPlayerMe可以刪除一些虛擬人偶遊戲物件,如果相同的URL被使用第二次的話:附加元件的快取系統防止這個,但是如果2個下載在同一時間發生,並且第一個下載完成耗時比maxSameDownloadWaitTime
更長,將觸發第二個下載,其在流程中在完成時清除第一個虛擬人偶。這個情境不應該發生在非常特殊的情況下(擁擠的場景,有很多重複的場景),但是為了確保這不是一個問題,可以始終建立一個虛擬人偶的複本,以防止ReadyPlayerMe來銷毀它,但是代價是花時間建立這個複本。
為了這樣做,只需在RPMAvatarLoader
元件上勾選copyRPMLoaderAvatar
(預設未勾選)。
RPM虛擬人偶庫
可以在場景中新增一個預先下載的虛擬人偶的庫,這個庫在專案中可用作預製件:這個庫元件,RPM虛擬人偶庫,在這個預製件及一個假的URL之間含有一個映射,這個URL將在RPMAvatarLoader
載入這個URL時使用這個預製件
請注意,雖然您可以填入它的中繼資料欄位,這對於最新的ReadyPlayerMe虛擬人偶中的皮膚色調來說非常有用,但如果沒有填入,庫將嘗試自動偵測中繼資料,因此不是強制要填入中繼資料輸入項目。
這個RPMAvatarLibrary
簡單地以已參照預製件來預先填入虛擬人偶快取,如同它們已經被實際地下載過一次一樣。
安裝
這個附加元件需要Ready Player Me UPLM套件以運作。
為了這樣做,如同在ReadyPlayerMe文檔中所說明的,安裝以下Git套件:
https://github.com/readyplayerme/rpm-unity-sdk-core.git
它已經以Ready Player Me核心套件(com.readyplayerme.core)版本3.3來測試。
相依性
- 虛擬人偶附加元件
- 回饋附加元件
- Ready Player Me 3.3
- Oculus.Lipsync(版本包含在虛擬人偶附加元件之中)
示範
可以在Assets\Photon\FusionAddons\RPMAvatar\Demo\Scenes\
資料夾中找到示範場景。
RPMAvatarLoading
場景載入多個ReadyPlayerMe虛擬人偶:
- 由ReadyPlayerMe線上編輯器及使用者提供的一個URL所指定的虛擬人偶,以及一個使用者資訊元件來在網路上載入及同步它的虛擬人偶URL,
- 相同的虛擬人偶來展示快取系統,
- 一個離線虛擬人偶,無關於任何Fusion的已連網物件(可能用於UI中,...)。
- 以及利用一個自訂虛擬人偶URL及
RPMAvatarLibrary
來載入一個虛擬人偶預製件。
RPMAvatar
場景使用RPMNetworkRig
預製件,其附有最需要的功能:
- 它與簡單虛擬人偶URL及RPM URL相容
- 它提供一個低多邊形退路,其由簡單虛擬人偶或RPM虛擬人偶皮膚、衣服及頭髮顏色來著色
- 它包含手模型,其將採用虛擬人偶皮膚顏色
- 它提供一個LOD的上個關卡的廣告牌
- 它展示了
EyeMovementSimulation
功能。虛擬人偶的眼睛利用GazeTarget
元件來跟隨Target
遊戲物件。虛擬人偶頭及眼睛含有一個GazeTarget
,玩家將看向彼此。
下載
這個附加元件的最新版本被包含在附加元件專案之中
已支援拓撲
- 共享模式
更改記錄
- 版本2.0.1:支援載入隨機虛擬人偶+修正預設虛擬人偶高度
- 版本2.0.0:支援Fusion 2.0
- 版本1.0.1:修正虛擬人偶V3頭髮及衣服顏色偵測
- 版本1.0.0:第一個版本