diff --git a/Assets/VRM10/Runtime/Components/Vrm10Instance/Vrm10Instance.cs b/Assets/VRM10/Runtime/Components/Vrm10Instance/Vrm10Instance.cs index 385aa8beb..f2a0b1028 100644 --- a/Assets/VRM10/Runtime/Components/Vrm10Instance/Vrm10Instance.cs +++ b/Assets/VRM10/Runtime/Components/Vrm10Instance/Vrm10Instance.cs @@ -5,9 +5,9 @@ namespace UniVRM10 { /// /// VRM全体を制御するRoot - /// + /// /// Importer(scripted importer) -> Prefab(editor/asset) -> Instance(scene/MonoBehavior) -> Runtime(play時) - /// + /// /// * DefaultExecutionOrder(11000) means calculate springbone after FinalIK( VRIK ) /// [AddComponentMenu("VRM10/VRMInstance")] @@ -54,6 +54,10 @@ namespace UniVRM10 private Vrm10Runtime m_runtime; private ControlRigGenerationOption m_controlRigGenerationOption = ControlRigGenerationOption.None; + /// + /// VRM ファイルに記録された Humanoid ボーンに対応します。 + /// これは、コントロールリグのボーンとは異なります。 + /// public UniHumanoid.Humanoid Humanoid { get diff --git a/Assets/VRM10/Runtime/Components/Vrm10Runtime/ControlRig/ControlRigGenerationOption.cs b/Assets/VRM10/Runtime/Components/Vrm10Runtime/ControlRig/ControlRigGenerationOption.cs index 54f133111..6ebb0e6e4 100644 --- a/Assets/VRM10/Runtime/Components/Vrm10Runtime/ControlRig/ControlRigGenerationOption.cs +++ b/Assets/VRM10/Runtime/Components/Vrm10Runtime/ControlRig/ControlRigGenerationOption.cs @@ -2,8 +2,15 @@ { public enum ControlRigGenerationOption { + /// + /// コントロールリグを生成しません。 + /// None, - Additive, - Override, + + /// + /// 推奨されるオプションです。 + /// コントロールリグのボーン Transform を生成し、Root の Animator はコントロールリグのボーンを制御するようになります。 + /// + Generate, } } \ No newline at end of file diff --git a/Assets/VRM10/Runtime/Components/Vrm10Runtime/Vrm10RuntimeControlRig.cs b/Assets/VRM10/Runtime/Components/Vrm10Runtime/Vrm10RuntimeControlRig.cs index 25f87a32b..cb4f6f05d 100644 --- a/Assets/VRM10/Runtime/Components/Vrm10Runtime/Vrm10RuntimeControlRig.cs +++ b/Assets/VRM10/Runtime/Components/Vrm10Runtime/Vrm10RuntimeControlRig.cs @@ -35,30 +35,16 @@ namespace UniVRM10 _controlRigRoot = new GameObject("Runtime Control Rig").transform; _controlRigRoot.SetParent(vrmRoot); - var avatarRoot = option switch - { - ControlRigGenerationOption.Additive => _controlRigRoot, - ControlRigGenerationOption.Override => vrmRoot, - ControlRigGenerationOption.None => null, - _ => throw new ArgumentOutOfRangeException(nameof(option), option, null) - }; - _hipBone = Vrm10ControlBone.Build(humanoid, out _bones); _hipBone.ControlBone.SetParent(_controlRigRoot); InitialHipsHeight = _hipBone.ControlTarget.position.y; var transformBonePairs = _bones.Select(kv => (kv.Value.ControlBone, kv.Key)); - _controlRigAvatar = HumanoidLoader.LoadHumanoidAvatar(avatarRoot, transformBonePairs); + _controlRigAvatar = HumanoidLoader.LoadHumanoidAvatar(vrmRoot, transformBonePairs); _controlRigAvatar.name = "Runtime Control Rig"; - ControlRigAnimator = option switch - { - ControlRigGenerationOption.Additive => _controlRigRoot.gameObject.AddComponent(), - ControlRigGenerationOption.Override => vrmRoot.GetComponent(), - ControlRigGenerationOption.None => null, - _ => throw new ArgumentOutOfRangeException(nameof(option), option, null) - }; + ControlRigAnimator = vrmRoot.GetComponent(); ControlRigAnimator.avatar = _controlRigAvatar; } diff --git a/Assets/VRM10/Runtime/IO/Vrm10.cs b/Assets/VRM10/Runtime/IO/Vrm10.cs index 6e5c68b0d..bf9c74ee4 100644 --- a/Assets/VRM10/Runtime/IO/Vrm10.cs +++ b/Assets/VRM10/Runtime/IO/Vrm10.cs @@ -37,7 +37,7 @@ namespace UniVRM10 public static async Task LoadPathAsync( string path, bool canLoadVrm0X = true, - ControlRigGenerationOption controlRigGenerationOption = ControlRigGenerationOption.Override, + ControlRigGenerationOption controlRigGenerationOption = ControlRigGenerationOption.Generate, bool showMeshes = true, IAwaitCaller awaitCaller = null, IMaterialDescriptorGenerator materialGenerator = null, @@ -81,7 +81,7 @@ namespace UniVRM10 public static async Task LoadBytesAsync( byte[] bytes, bool canLoadVrm0X = true, - ControlRigGenerationOption controlRigGenerationOption = ControlRigGenerationOption.Override, + ControlRigGenerationOption controlRigGenerationOption = ControlRigGenerationOption.Generate, bool showMeshes = true, IAwaitCaller awaitCaller = null, IMaterialDescriptorGenerator materialGenerator = null,