mirror of
https://github.com/vrm-c/UniVRM.git
synced 2026-05-15 07:00:10 -05:00
59 lines
1.6 KiB
Markdown
59 lines
1.6 KiB
Markdown
# SpringBone
|
|
|
|
## FastSpringBoneService.Instance
|
|
* FastSpringBoneService.Instance はシングルトンですべての VRM-1.0 モデルのスプリングをまとめて処理します
|
|
|
|
## `v0.106.0` 毎フレーム外力を加える
|
|
|
|
- [\# 1863](https://github.com/vrm-c/UniVRM/pull/1868)
|
|
|
|
```{admonition} 外力
|
|
:class: info
|
|
|
|
ジャンプや風など、一時的な力の表現を想定した機能です。
|
|
```
|
|
|
|
```csharp
|
|
VRM10Instance instance;
|
|
|
|
// each frame
|
|
// 既存の 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<VRM10Instance> 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);
|
|
```
|