diff --git a/docs/vrm1/vrm1_springbone.md b/docs/vrm1/vrm1_springbone.md index 6706b9c4b..6d1ddb76a 100644 --- a/docs/vrm1/vrm1_springbone.md +++ b/docs/vrm1/vrm1_springbone.md @@ -3,35 +3,16 @@ ## FastSpringBoneService.Instance * FastSpringBoneService.Instance はシングルトンですべての VRM-1.0 モデルのスプリングをまとめて処理します -## `v0.106.0` SpringBone の手動更新 - -* FastSpringBoneService.UpdateTypes.Manual を追加 -* FastSpringBoneService.ManualUpdate を追加 - -```csharp -List instances; - -// setup -foreach(var instance in instances) -{ - instance.UpdateType = UpdateTypes.None; -} -FastSpringBoneService.Instance.UpdateType = FastSpringBoneService.UpdateTypes.Manual; - -// each frame -// 先に VRM10Instance を更新 -foreach(var instance in instances) -{ - instance.Runtime.Process(); -} -// 最後に FastSpringBoneService を更新 -FastSpringBoneService.Instance.ManualUpdate(time.deltaTime); -``` - ## `v0.106.0` 毎フレーム外力を加える - [\# 1863](https://github.com/vrm-c/UniVRM/pull/1868) +```{admonition} 外力 +:class: info + +ジャンプや風など、一時的な力の表現を想定した機能です。 +``` + ```csharp VRM10Instance instance; @@ -39,3 +20,39 @@ VRM10Instance instance; // 既存の Gravity に加算されます instance.Runtime.ExternalForce = new Vector3(0.1f, 0, 0); ``` + +## `v0.106.0` SpringBone の手動更新 + +```{admonition} 手動更新 +:class: info + +開始前に処理を回して SpringBone を安定させるなど、特殊用途向けです。 +``` + +* FastSpringBoneService.UpdateTypes.Manual を追加 +* FastSpringBoneService.ManualUpdate を追加 + +```csharp +// 管理している VRM-1.0 がすべて入っている +List instances; + +// setup +foreach(var instance in instances) +{ + // SpringBone を手動にするために、 + // VRM-1.0 本体も手動に変更している。 + // VRM本体 => SpringBone という処理順を守る。 + instance.UpdateType = UpdateTypes.None; +} +FastSpringBoneService.Instance.UpdateType = FastSpringBoneService.UpdateTypes.Manual; + +// each frame +foreach(var instance in instances) +{ + // SpringBone よりも先に VRM10Instance を更新 + instance.Runtime.Process(); +} +// 最後に FastSpringBoneService を更新 +// すべての VRM-1.0 の SpringBone がまとめて処理されます。 +FastSpringBoneService.Instance.ManualUpdate(time.deltaTime); +```