Skip to content

Commit

Permalink
Merge pull request #470 from ousttrue/update/20241217
Browse files Browse the repository at this point in the history
Update/20241217
  • Loading branch information
ousttrue authored Dec 17, 2024
2 parents 817fa04 + 20fac55 commit c55a166
Show file tree
Hide file tree
Showing 43 changed files with 382 additions and 348 deletions.
File renamed without changes.
23 changes: 0 additions & 23 deletions docs/api/first_person.mdx

This file was deleted.

File renamed without changes
File renamed without changes
17 changes: 17 additions & 0 deletions docs/api/firstperson/first_person.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# VRアプリケーションの FirstPerson 設定による Renderer の可視制御

- `isSelf==true` 自分のアバター
- `isSelf==false` 自分以外のアバター
- FP Camera: HMDと連動するカメラ
- TP Camera: それ以外のすべてのカメラ

| isSelf | FirstPerson設定 | FP Camera | TP Camera | レイヤーによる可視制御例 |
| ------ | --------------- | --------- | --------- | ------------------------------------------ |
| true | FirstPersonOnly ||| FIRSTPERSON |
| true | ThirdPersonOnly ||| THIRDPERSON |
| true | Both ||| default |
| true | Auto | - | - | Both と ThirdPersonOnly に分割する |
| false | FirstPersonOnly ||| 完全に描画されない。Rendererの描画を止める |
| false | ThirdPersonOnly ||| default |
| false | Both ||| default |
| false | Auto ||| default。メッシュ分割など特別な処理は不要 |
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# `vrm-0.x` VRMFirstPersonの使い方

[FirstPerson と Renderer の可視制御 ](/api/first_person)
[FirstPerson と Renderer の可視制御 ](/api/firstperson/first_person)

実行時に**VRMFirstPerson.Setup**を呼び出すことで、FirstPerson設定に応じた Renderer の可視制御を行うことができます。
明示的に外部から呼び出してください。
Expand Down
File renamed without changes
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# `vrm-1.0` FirstPerson

[FirstPerson と Renderer の可視制御 ](/api/first_person)
[FirstPerson と Renderer の可視制御 ](/api/firstperson/first_person)

:::warning VR 用の機能です

Expand Down
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes
4 changes: 2 additions & 2 deletions docs/api/humanoid/humanoid_animation.md
Original file line number Diff line number Diff line change
Expand Up @@ -46,9 +46,9 @@ BVH の初期姿勢は特に決まっていません。

### vrm-1.0 ControlRig で変換コピーする

![img](../ControlRig.png)
![img](./ControlRig.png)

[ControlRig](/api/vrm1_controlrig)
[ControlRig](/api/humanoid/vrm1_controlrig)

:::tip 正規化さていないスケルトン/モーションを変換できます。

Expand Down
File renamed without changes.
File renamed without changes.
6 changes: 0 additions & 6 deletions docs/api/index.mdx

This file was deleted.

File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
4 changes: 2 additions & 2 deletions docs/api/runtime-import/UniVRM10_Vrm10.md
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ vrm-0.x とアタッチされるコンポーネントが異なります。

unity の humanoid を経由せずに直接操作する場合のユーティリティーです。

[正規化されていないモデルを操作する](/api/vrm1_controlrig)
[正規化されていないモデルを操作する](/api/humanoid/vrm1_controlrig)

### showMeshes: Load完了時に表示させるか

Expand Down Expand Up @@ -108,7 +108,7 @@ public class ImporterContextSettings

### springboneRuntime: SpringBone の Runtime 選択

[SpringBone Runtime](/api/springbone/vrm1/runtime)
[SpringBone Runtime](/api/springbone/vrm1/IVrm10SpringBoneRuntime)

## LoadBytesAsync

Expand Down
Empty file removed docs/api/springbone/center.md
Empty file.
18 changes: 0 additions & 18 deletions docs/api/springbone/index.md

This file was deleted.

31 changes: 0 additions & 31 deletions docs/api/springbone/note.md

This file was deleted.

9 changes: 0 additions & 9 deletions docs/api/springbone/scaling.md

This file was deleted.

16 changes: 0 additions & 16 deletions docs/api/springbone/startup.md

This file was deleted.

24 changes: 0 additions & 24 deletions docs/api/springbone/update.md

This file was deleted.

Original file line number Diff line number Diff line change
@@ -1,4 +1,11 @@
# SpringBone Runtime
# VRM.IVrm0XSpringBoneRuntime

実行システムを切り替えられるようになりました。

- **Vrm0XSpringBoneDefaultRuntime(default)**: 通常の MonoBehaviour です。
- `v0.85` **Vrm0XFastSpringboneRuntime**: Unity job system で実装されています。すべての vrm の spring bone まとめて処理するシングルトンです。

これらの実装は importer の引数で切り替え可能です。`from v0.127.0`

[SimpleViewer](https://github.com/vrm-c/UniVRM/blob/master/Assets/VRM_Samples/SimpleViewer/ViewerUI.cs)を参照してください。

Expand Down
105 changes: 105 additions & 0 deletions docs/api/springbone/vrm0/VRM_VRMSpringBone.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,105 @@
# VRM.VRMSpringBone

## インタフェース抜粋

```cs
public sealed class VRMSpringBone : MonoBehaviour
{
[SerializeField] public string m_comment;
[SerializeField] private Color m_gizmoColor = Color.yellow;
[SerializeField] public float m_stiffnessForce = 1.0f;
[SerializeField] public float m_gravityPower;
[SerializeField] public Vector3 m_gravityDir = new Vector3(0, -1.0f, 0);
[SerializeField][Range(0, 1)] public float m_dragForce = 0.4f;
[SerializeField] public Transform m_center;
[SerializeField] public List<Transform> RootBones = new List<Transform>();
[SerializeField] public float m_hitRadius = 0.02f;
[SerializeField] public VRMSpringBoneColliderGroup[] ColliderGroups;

/// <summary>
/// - アプリケーション開発者用のパラメタである
/// - Runtime 制御用のパラメタである
/// - シリアライズ対象でない
/// - true にすることで、モデルをスケーリングしたときも SpringBone の見た目上の動き(角速度)がなるべく保たれるようになる
/// - Non-Uniform scaling 下における動作は保証しない
/// </summary>
public bool UseRuntimeScalingSupport { get; set; }

/// <summary>
/// VRM-1.0 からのバックポート。
/// - Runtime 制御用のパラメタである
/// - シリアライズ対象でない
/// - World座標系
/// </summary>
public Vector3 ExternalForce { get; set; }

public enum SpringBoneUpdateType
{
LateUpdate,
FixedUpdate,
Manual,
}
[SerializeField] public SpringBoneUpdateType m_updateType = SpringBoneUpdateType.LateUpdate;

[ContextMenu("Reset bones")]
public void Setup(bool force = false)
{
if (RootBones != null)
{
m_system.Setup(Scene, force);
}
}

public void ReinitializeRotation()
{
m_system.ReinitializeRotation(Scene);
}

public void SetModelLevel(UniGLTF.SpringBoneJobs.Blittables.BlittableModelLevel modelSettings)
{
UseRuntimeScalingSupport = modelSettings.SupportsScalingAtRuntime;
ExternalForce = modelSettings.ExternalForce;
}

public void ManualUpdate(float deltaTime)
{
if (m_updateType != SpringBoneUpdateType.Manual)
{
throw new System.ArgumentException("require SpringBoneUpdateType.Manual");
}
m_system.UpdateProcess(deltaTime, Scene, Settings);
}
}
```

## Update の手動呼び出し

from [v0.106.0](/release/100/v0.106.0)

[\#1866](https://github.com/vrm-c/UniVRM/pull/1886)

- VRMSpringBone.SpringBoneUpdateType.Manual を追加
- VRMSpringBone.ManualUpdate を追加

- spring.ManualUpdate を使う前に spring.m_updateType を `Manual` に設定します。

以下のように呼び出すことができます。

```csharp
VRMSpringBone spring;

// setup
spring.m_updateType = VRMSpringBone.SpringBoneUpdateType.Manual;

// each frame
spring.ManualUpdate(time.deltaTime);
```

## 拡大縮小の対応状況

:::warning スケーリングは uniform(xyz が同じ) のみの対応です
:::

- `0.x` [SpringBone does not work correctly if you change the model size, for example scale (8,8,8). · Issue #2242 · vrm-c/UniVRM · GitHub](https://github.com/vrm-c/UniVRM/issues/2242)
- `0.x` [Scale が VRM Spring Bone に正しく適用されません · Issue #922 · vrm-c/UniVRM · GitHub](https://github.com/vrm-c/UniVRM/issues/922)
- [SpringBone does not work correctly if you change the model size, for example scale (8,8,8). · Issue #2242 · vrm-c/UniVRM · GitHub](https://github.com/vrm-c/UniVRM/issues/2242)
1 change: 0 additions & 1 deletion docs/api/springbone/vrm0/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,3 @@
:::note オリジナル
blog `Rocket Jump``Unityで揺れものを揺らす` という記事(2014年)に基いています。
:::

19 changes: 19 additions & 0 deletions docs/api/springbone/jobs.md → docs/api/springbone/vrm0/jobs.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,24 @@
# FastSpringBone(Unity job)について

:::info job版のロジックは vrm-0.x と vrm-1.0 で共通化されました

- https://github.com/vrm-c/UniVRM/issues/2422

:::

:::note job は房並列です

joint 毎ではなく房(根元 から末端まで)単位の並列です。
根元から順番に長さで拘束して位置を確定させる都合で親の位置・方向が先に決まる必要があるためです。

- 伸縮せずに見た目がきれい
- 並列化できない

というトレードオフがあります。

:::


`from v0.85`

## 概要
Expand Down
Loading

0 comments on commit c55a166

Please sign in to comment.