v0.85
FastSpringBoneについて
概要
UniVRMでは、DOTSを利用した高速なSpringBone実装である「FastSpringBone」を用意しています。
揺れ物の各房を並列処理・最適化することで1フレームあたりの処理時間を大幅に抑えます。
VRM0.x と VRM1.0 で、それぞれFastSpringBoneの立ち位置・実装が異なります。
VRM 1.0 での FastSpringBone の概要
VRM1.0ではFastSpringBoneが揺れものの標準実装です。
VRMのライフサイクルに紐付いて自動的に生成・破棄されます。
VRM 0.x での FastSpringBone の概要
VRM0.xでは後方互換性を保つため、デフォルトでは従来のDOTS実装でないSpringBoneで動作します。
VRM0.x向けのFastSpringBone実装は VRM/Runtime/FastSpringBone
ディレクトリにあります。
VRM 0.x での FastSpringBone の導入方法
差し替えを行いたいタイミングで FastSpringBoneReplacer.ReplaceAsync
を呼び出してください
これを明示的に呼ばなければ、従来のSpringBoneのまま動作します。
using (var loader = new UniGLTF.ImporterContext(data))
{
var instance = await loader.LoadAsync();
SetModel(instance);
}
FastSpringBoneReplacer.ReplaceAsync(instance.Root)
instance.EnableUpdateWhenOffscreen();
instance.ShowMeshes();
Burstの導入について
UniVRM に加えて Burst を別途導入すると、 FastSpringBone が Burst によって高速化されます。
Burst の導入方法は こちら をご参照ください。
FastSpringBoneServiceについて
FastSpringBone が実行されると、FastSpringBone Service
GameObject が DontDestroyOnLoad
で生成されます。
これは全 VRM の FastSpringBone を集め、バッファの構築や、 FastSpringBone の実行タイミングの制御などを行う GameObject です。
明示的に破棄を行いたい場合は FastSpringBoneService.Free
を呼んでください。