From 6dd2bb38ccb8a70ebe84e9108dee30f6f64d31bc Mon Sep 17 00:00:00 2001 From: ousttrue Date: Mon, 20 Feb 2023 15:49:50 +0900 Subject: [PATCH 1/5] =?UTF-8?q?IControlRigGetter=20=E3=81=A8=20IControlRig?= =?UTF-8?q?Setter=20=E3=82=92=E8=BF=BD=E5=8A=A0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit add ControlRigRetarget impl InitialRotationRigGetter.cs impl NormalizedRotationRigGetter.cs mv Assets/Vrm10/Runtime/ControlRig/Vrm10ControlBone.cs => Assets/VRM10/Runtime/Components/Vrm10Runtime/Vrm10ControlBone.cs mv Assets/VRM10/Runtime/ControlRig/InitialRotations/ControlRigGenerationOption.cs => Assets/VRM10/Runtime/Components/Vrm10Runtime/ControlRigGenerationOption.cs rename Vrm10BoneInitialRotation => BoneInitialRotation remove Vrm0XCompatibleRig.cs --- .../UniGLTF/Runtime/UniHumanoid/Humanoid.cs | 2 +- .../ControlRigGenerationOption.cs | 0 .../ControlRigGenerationOption.cs.meta | 0 .../Vrm10Runtime}/Vrm10ControlBone.cs | 1 + .../Vrm10Runtime}/Vrm10ControlBone.cs.meta | 0 .../Vrm10Runtime/Vrm10RuntimeControlRig.cs | 40 +++++++++++++-- ...tialRotation.cs => BoneInitialRotation.cs} | 10 ++-- ...on.cs.meta => BoneInitialRotation.cs.meta} | 0 .../Runtime/ControlRig/ControlRigRetarget.cs | 15 ++++++ ...Rig.cs.meta => ControlRigRetarget.cs.meta} | 2 +- .../Runtime/ControlRig/IControlRigGetter.cs | 11 ++++ .../ControlRig/IControlRigGetter.cs.meta | 11 ++++ .../Runtime/ControlRig/IControlRigSetter.cs | 17 +++++++ .../ControlRig/IControlRigSetter.cs.meta | 11 ++++ .../ControlRig/InitialRotationRigGetter.cs | 50 +++++++++++++++++++ .../InitialRotationRigGetter.cs.meta | 11 ++++ .../InitialRotations/Vrm0XCompatibleRig.cs | 15 ------ .../ControlRig/NormalizedRotationRigGetter.cs | 41 +++++++++++++++ .../NormalizedRotationRigGetter.cs.meta | 11 ++++ 19 files changed, 222 insertions(+), 26 deletions(-) rename Assets/VRM10/Runtime/{ControlRig/InitialRotations => Components/Vrm10Runtime}/ControlRigGenerationOption.cs (100%) rename Assets/VRM10/Runtime/{ControlRig/InitialRotations => Components/Vrm10Runtime}/ControlRigGenerationOption.cs.meta (100%) rename Assets/VRM10/Runtime/{ControlRig => Components/Vrm10Runtime}/Vrm10ControlBone.cs (98%) rename Assets/VRM10/Runtime/{ControlRig => Components/Vrm10Runtime}/Vrm10ControlBone.cs.meta (100%) rename Assets/VRM10/Runtime/ControlRig/{Vrm10BoneInitialRotation.cs => BoneInitialRotation.cs} (74%) rename Assets/VRM10/Runtime/ControlRig/{Vrm10BoneInitialRotation.cs.meta => BoneInitialRotation.cs.meta} (100%) create mode 100644 Assets/VRM10/Runtime/ControlRig/ControlRigRetarget.cs rename Assets/VRM10/Runtime/ControlRig/{InitialRotations/Vrm0XCompatibleRig.cs.meta => ControlRigRetarget.cs.meta} (83%) create mode 100644 Assets/VRM10/Runtime/ControlRig/IControlRigGetter.cs create mode 100644 Assets/VRM10/Runtime/ControlRig/IControlRigGetter.cs.meta create mode 100644 Assets/VRM10/Runtime/ControlRig/IControlRigSetter.cs create mode 100644 Assets/VRM10/Runtime/ControlRig/IControlRigSetter.cs.meta create mode 100644 Assets/VRM10/Runtime/ControlRig/InitialRotationRigGetter.cs create mode 100644 Assets/VRM10/Runtime/ControlRig/InitialRotationRigGetter.cs.meta delete mode 100644 Assets/VRM10/Runtime/ControlRig/InitialRotations/Vrm0XCompatibleRig.cs create mode 100644 Assets/VRM10/Runtime/ControlRig/NormalizedRotationRigGetter.cs create mode 100644 Assets/VRM10/Runtime/ControlRig/NormalizedRotationRigGetter.cs.meta diff --git a/Assets/UniGLTF/Runtime/UniHumanoid/Humanoid.cs b/Assets/UniGLTF/Runtime/UniHumanoid/Humanoid.cs index b896a6017..068492f5d 100644 --- a/Assets/UniGLTF/Runtime/UniHumanoid/Humanoid.cs +++ b/Assets/UniGLTF/Runtime/UniHumanoid/Humanoid.cs @@ -239,7 +239,7 @@ namespace UniHumanoid return null; } - IEnumerable<(Transform, HumanBodyBones)> BoneMap + public IEnumerable<(Transform, HumanBodyBones)> BoneMap { get { diff --git a/Assets/VRM10/Runtime/ControlRig/InitialRotations/ControlRigGenerationOption.cs b/Assets/VRM10/Runtime/Components/Vrm10Runtime/ControlRigGenerationOption.cs similarity index 100% rename from Assets/VRM10/Runtime/ControlRig/InitialRotations/ControlRigGenerationOption.cs rename to Assets/VRM10/Runtime/Components/Vrm10Runtime/ControlRigGenerationOption.cs diff --git a/Assets/VRM10/Runtime/ControlRig/InitialRotations/ControlRigGenerationOption.cs.meta b/Assets/VRM10/Runtime/Components/Vrm10Runtime/ControlRigGenerationOption.cs.meta similarity index 100% rename from Assets/VRM10/Runtime/ControlRig/InitialRotations/ControlRigGenerationOption.cs.meta rename to Assets/VRM10/Runtime/Components/Vrm10Runtime/ControlRigGenerationOption.cs.meta diff --git a/Assets/VRM10/Runtime/ControlRig/Vrm10ControlBone.cs b/Assets/VRM10/Runtime/Components/Vrm10Runtime/Vrm10ControlBone.cs similarity index 98% rename from Assets/VRM10/Runtime/ControlRig/Vrm10ControlBone.cs rename to Assets/VRM10/Runtime/Components/Vrm10Runtime/Vrm10ControlBone.cs index a10fcaba1..eec7aa06a 100644 --- a/Assets/VRM10/Runtime/ControlRig/Vrm10ControlBone.cs +++ b/Assets/VRM10/Runtime/Components/Vrm10Runtime/Vrm10ControlBone.cs @@ -34,6 +34,7 @@ namespace UniVRM10 private readonly Quaternion _initialTargetLocalRotation; private readonly Quaternion _initialTargetGlobalRotation; private readonly List _children = new List(); + public IReadOnlyList Children => _children; private Vrm10ControlBone(Transform controlTarget, HumanBodyBones boneType, Vrm10ControlBone parent) { diff --git a/Assets/VRM10/Runtime/ControlRig/Vrm10ControlBone.cs.meta b/Assets/VRM10/Runtime/Components/Vrm10Runtime/Vrm10ControlBone.cs.meta similarity index 100% rename from Assets/VRM10/Runtime/ControlRig/Vrm10ControlBone.cs.meta rename to Assets/VRM10/Runtime/Components/Vrm10Runtime/Vrm10ControlBone.cs.meta diff --git a/Assets/VRM10/Runtime/Components/Vrm10Runtime/Vrm10RuntimeControlRig.cs b/Assets/VRM10/Runtime/Components/Vrm10Runtime/Vrm10RuntimeControlRig.cs index c6c13c6df..65497ec19 100644 --- a/Assets/VRM10/Runtime/Components/Vrm10Runtime/Vrm10RuntimeControlRig.cs +++ b/Assets/VRM10/Runtime/Components/Vrm10Runtime/Vrm10RuntimeControlRig.cs @@ -13,7 +13,7 @@ namespace UniVRM10 /// Create a control rig for the VRM 1.0 model instance. /// This provides the normalized operation of bones, like VRM 0.x. /// - public sealed class Vrm10RuntimeControlRig : IDisposable + public sealed class Vrm10RuntimeControlRig : IDisposable, IControlRigSetter { private readonly Transform _controlRigRoot; private readonly Vrm10ControlBone _hipBone; @@ -73,12 +73,46 @@ namespace UniVRM10 public void EnforceTPose() { - // TODO: restore hips position - + SetRootPosition(_hipBone.ControlBone.position); foreach (var bone in _bones.Values) { bone.ControlBone.localRotation = Quaternion.identity; } } + + public void SetRootPosition(Vector3 position) + { + // TODO: scale model local position + _hipBone.ControlTarget.position = position; + } + + public void SetNormalizedLocalRotation(HumanBodyBones bone, Quaternion normalizedLocalRotation) + { + if (_bones.TryGetValue(bone, out var t)) + { + t.ControlBone.localRotation = normalizedLocalRotation; + } + } + + IEnumerable<(HumanBodyBones Head, HumanBodyBones Parent)> Traverse(Vrm10ControlBone bone, Vrm10ControlBone parent = null) + { + yield return (bone.BoneType, parent != null ? parent.BoneType : HumanBodyBones.LastBone); + + foreach (var child in bone.Children) + { + foreach (var headParent in Traverse(child, bone)) + { + yield return headParent; + } + } + } + + public IEnumerable<(HumanBodyBones Head, HumanBodyBones Parent)> EnumerateBones() + { + foreach (var headParent in Traverse(_hipBone)) + { + yield return headParent; + } + } } } diff --git a/Assets/VRM10/Runtime/ControlRig/Vrm10BoneInitialRotation.cs b/Assets/VRM10/Runtime/ControlRig/BoneInitialRotation.cs similarity index 74% rename from Assets/VRM10/Runtime/ControlRig/Vrm10BoneInitialRotation.cs rename to Assets/VRM10/Runtime/ControlRig/BoneInitialRotation.cs index ffdb5b7a0..d926be18b 100644 --- a/Assets/VRM10/Runtime/ControlRig/Vrm10BoneInitialRotation.cs +++ b/Assets/VRM10/Runtime/ControlRig/BoneInitialRotation.cs @@ -5,7 +5,7 @@ namespace UniVRM10 /// /// Represents the rotation at the initial pose (TPose) /// - public readonly struct Vrm10BoneInitialRotation + public readonly struct BoneInitialRotation { public readonly Transform Transform; @@ -15,7 +15,7 @@ namespace UniVRM10 public readonly Quaternion InitialGlobalRotation; - public Vrm10BoneInitialRotation(Transform transform) + public BoneInitialRotation(Transform transform) { Transform = transform; InitialLocalPosition = transform.localPosition; @@ -24,11 +24,9 @@ namespace UniVRM10 } /// - /// 初期姿勢からの相対的な回転。 - /// - /// VRM-0.X 互換リグでは localRotation と同じ値を示す。 + /// Convert the local rotation, including the initial rotation, to a normalized local rotation /// - Quaternion NormalizedLocalRotation + public Quaternion NormalizedLocalRotation { get { diff --git a/Assets/VRM10/Runtime/ControlRig/Vrm10BoneInitialRotation.cs.meta b/Assets/VRM10/Runtime/ControlRig/BoneInitialRotation.cs.meta similarity index 100% rename from Assets/VRM10/Runtime/ControlRig/Vrm10BoneInitialRotation.cs.meta rename to Assets/VRM10/Runtime/ControlRig/BoneInitialRotation.cs.meta diff --git a/Assets/VRM10/Runtime/ControlRig/ControlRigRetarget.cs b/Assets/VRM10/Runtime/ControlRig/ControlRigRetarget.cs new file mode 100644 index 000000000..31304b1bc --- /dev/null +++ b/Assets/VRM10/Runtime/ControlRig/ControlRigRetarget.cs @@ -0,0 +1,15 @@ +namespace UniVRM10 +{ + public static class ControlRigRetarget + { + public static void Retarget(IControlRigGetter getter, IControlRigSetter setter) + { + foreach (var (head, parent) in setter.EnumerateBones()) + { + var q = getter.GetNormalizedLocalRotation(head, parent); + setter.SetNormalizedLocalRotation(head, q); + } + setter.SetRootPosition(getter.GetRootPosition()); + } + } +} diff --git a/Assets/VRM10/Runtime/ControlRig/InitialRotations/Vrm0XCompatibleRig.cs.meta b/Assets/VRM10/Runtime/ControlRig/ControlRigRetarget.cs.meta similarity index 83% rename from Assets/VRM10/Runtime/ControlRig/InitialRotations/Vrm0XCompatibleRig.cs.meta rename to Assets/VRM10/Runtime/ControlRig/ControlRigRetarget.cs.meta index 515a87b3b..4bfbd264e 100644 --- a/Assets/VRM10/Runtime/ControlRig/InitialRotations/Vrm0XCompatibleRig.cs.meta +++ b/Assets/VRM10/Runtime/ControlRig/ControlRigRetarget.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: d1e0f212571bf3f41809f19c2d8f3211 +guid: 55c7c4cd6bc756142a927d385a1c0d29 MonoImporter: externalObjects: {} serializedVersion: 2 diff --git a/Assets/VRM10/Runtime/ControlRig/IControlRigGetter.cs b/Assets/VRM10/Runtime/ControlRig/IControlRigGetter.cs new file mode 100644 index 000000000..69bc2e009 --- /dev/null +++ b/Assets/VRM10/Runtime/ControlRig/IControlRigGetter.cs @@ -0,0 +1,11 @@ +using UnityEngine; + +namespace UniVRM10 +{ + public interface IControlRigGetter + { + Vector3 GetRootPosition(); + + Quaternion GetNormalizedLocalRotation(HumanBodyBones bone, HumanBodyBones parentBone); + } +} diff --git a/Assets/VRM10/Runtime/ControlRig/IControlRigGetter.cs.meta b/Assets/VRM10/Runtime/ControlRig/IControlRigGetter.cs.meta new file mode 100644 index 000000000..7169bd3ee --- /dev/null +++ b/Assets/VRM10/Runtime/ControlRig/IControlRigGetter.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 624d9ba92e6c69b40abab8223e530d9e +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/VRM10/Runtime/ControlRig/IControlRigSetter.cs b/Assets/VRM10/Runtime/ControlRig/IControlRigSetter.cs new file mode 100644 index 000000000..598b8ce6a --- /dev/null +++ b/Assets/VRM10/Runtime/ControlRig/IControlRigSetter.cs @@ -0,0 +1,17 @@ +using System.Collections.Generic; +using UnityEngine; + +namespace UniVRM10 +{ + public interface IControlRigSetter + { + /// TODO: 何らかのスケーリングが必用 + void SetRootPosition(Vector3 position); + + /// 初期姿勢(TPose) が Quaternion.Identity である相対回転 + void SetNormalizedLocalRotation(HumanBodyBones bone, Quaternion normalizedLocalRotation); + + /// ボーンを親ボーンとセットで返す + IEnumerable<(HumanBodyBones Head, HumanBodyBones Parent)> EnumerateBones(); + } +} diff --git a/Assets/VRM10/Runtime/ControlRig/IControlRigSetter.cs.meta b/Assets/VRM10/Runtime/ControlRig/IControlRigSetter.cs.meta new file mode 100644 index 000000000..8eee27ebc --- /dev/null +++ b/Assets/VRM10/Runtime/ControlRig/IControlRigSetter.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 9e200e64e4f18884d8a35bf9ce27cd4a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/VRM10/Runtime/ControlRig/InitialRotationRigGetter.cs b/Assets/VRM10/Runtime/ControlRig/InitialRotationRigGetter.cs new file mode 100644 index 000000000..f10888419 --- /dev/null +++ b/Assets/VRM10/Runtime/ControlRig/InitialRotationRigGetter.cs @@ -0,0 +1,50 @@ +using System.Collections.Generic; +using UnityEngine; + +namespace UniVRM10 +{ + /// + /// VRM0TPose と異なる初期回転を持ったヒエラルキー + /// + /// - XR_EXT_hand_tracking + /// - XR_FB_body_tracking + /// - vrm-animation + /// + /// から VRM0TPose 互換の NormalizedLocalRotation(VRM0互換)を取り出す。 + /// BoneInitialRotation が値を計算できる。 + /// + public class InitRotationRigGetter : IControlRigGetter + { + Transform m_root; + private readonly Dictionary m_bones = new Dictionary(); + + /// TPoseのヒエラルキー + public InitRotationRigGetter(Transform root, UniHumanoid.Humanoid humanoid) + { + m_root = root; + foreach (var (t, bone) in humanoid.BoneMap) + { + m_bones.Add(bone, new BoneInitialRotation(t)); + } + } + + public Quaternion GetNormalizedLocalRotation(HumanBodyBones bone, HumanBodyBones parentBone) + { + if (m_bones.TryGetValue(bone, out var c)) + { + return c.NormalizedLocalRotation; + } + else + { + // Debug.LogWarning($"${bone} not found"); + return Quaternion.identity; + } + } + + public Vector3 GetRootPosition() + { + // TODO: from m_root relative ? scaling ? + return m_bones[HumanBodyBones.Hips].Transform.localPosition; + } + } +} diff --git a/Assets/VRM10/Runtime/ControlRig/InitialRotationRigGetter.cs.meta b/Assets/VRM10/Runtime/ControlRig/InitialRotationRigGetter.cs.meta new file mode 100644 index 000000000..c3b1ac27e --- /dev/null +++ b/Assets/VRM10/Runtime/ControlRig/InitialRotationRigGetter.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: b21b9221f1a87564ea6dc5cf6037195a +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/VRM10/Runtime/ControlRig/InitialRotations/Vrm0XCompatibleRig.cs b/Assets/VRM10/Runtime/ControlRig/InitialRotations/Vrm0XCompatibleRig.cs deleted file mode 100644 index ddc033dc5..000000000 --- a/Assets/VRM10/Runtime/ControlRig/InitialRotations/Vrm0XCompatibleRig.cs +++ /dev/null @@ -1,15 +0,0 @@ -using System.Collections.Generic; -using UnityEngine; - -namespace UniVRM10 -{ - public static class Vrm0XCompatibleRig - { - /// - /// 空の Dictionary を返します。 - /// HumanBodyBones に対応する Quaternion が無い場合は Quaternion.Identity を採用する仕様です。 - /// VRM-0.X では T-Pose のときにすべてのボーンが Quaternion.Identity です。 - /// - public static IReadOnlyDictionary InitialRotations => new Dictionary(); - } -} diff --git a/Assets/VRM10/Runtime/ControlRig/NormalizedRotationRigGetter.cs b/Assets/VRM10/Runtime/ControlRig/NormalizedRotationRigGetter.cs new file mode 100644 index 000000000..fedbf83cd --- /dev/null +++ b/Assets/VRM10/Runtime/ControlRig/NormalizedRotationRigGetter.cs @@ -0,0 +1,41 @@ +using UnityEngine; + +namespace UniVRM10 +{ + /// + /// 正規化済みのヒエラルキーの getter。 + /// localRotation をコピーするだけなのだが、 + /// GetNormalizedLocalRotation にて、ボーンの有無(upperChestなど)の違いの対応をする予定(未実装)。 + /// + public class NormalizedRigGetter : IControlRigGetter + { + Transform m_root; + Animator m_animator; + + public NormalizedRigGetter(Transform root, Animator animator) + { + m_root = root; + m_animator = animator; + } + + public Quaternion GetNormalizedLocalRotation(HumanBodyBones bone, HumanBodyBones parentBone) + { + if (m_animator.GetBoneTransform(bone) is Transform t) + { + // TODO: parentBone relative + return t.localRotation; + } + else + { + // Debug.LogWarning($"{bone} not found"); + return Quaternion.identity; + } + } + + public Vector3 GetRootPosition() + { + // TODO: from model root ? + return m_animator.GetBoneTransform(HumanBodyBones.Hips).localPosition; + } + } +} diff --git a/Assets/VRM10/Runtime/ControlRig/NormalizedRotationRigGetter.cs.meta b/Assets/VRM10/Runtime/ControlRig/NormalizedRotationRigGetter.cs.meta new file mode 100644 index 000000000..ae53d6441 --- /dev/null +++ b/Assets/VRM10/Runtime/ControlRig/NormalizedRotationRigGetter.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 77dc323422a0e59449bd822dac490495 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: From 360aa6fcf038d9c7112a6ada02b7cdb45a2b3347 Mon Sep 17 00:00:00 2001 From: ousttrue Date: Mon, 20 Feb 2023 18:20:04 +0900 Subject: [PATCH 2/5] =?UTF-8?q?=E5=85=83=E3=81=AE=E5=A0=B4=E6=89=80?= =?UTF-8?q?=E3=81=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../{Components/Vrm10Runtime => ControlRig}/Vrm10ControlBone.cs | 0 .../Vrm10Runtime => ControlRig}/Vrm10ControlBone.cs.meta | 0 2 files changed, 0 insertions(+), 0 deletions(-) rename Assets/VRM10/Runtime/{Components/Vrm10Runtime => ControlRig}/Vrm10ControlBone.cs (100%) rename Assets/VRM10/Runtime/{Components/Vrm10Runtime => ControlRig}/Vrm10ControlBone.cs.meta (100%) diff --git a/Assets/VRM10/Runtime/Components/Vrm10Runtime/Vrm10ControlBone.cs b/Assets/VRM10/Runtime/ControlRig/Vrm10ControlBone.cs similarity index 100% rename from Assets/VRM10/Runtime/Components/Vrm10Runtime/Vrm10ControlBone.cs rename to Assets/VRM10/Runtime/ControlRig/Vrm10ControlBone.cs diff --git a/Assets/VRM10/Runtime/Components/Vrm10Runtime/Vrm10ControlBone.cs.meta b/Assets/VRM10/Runtime/ControlRig/Vrm10ControlBone.cs.meta similarity index 100% rename from Assets/VRM10/Runtime/Components/Vrm10Runtime/Vrm10ControlBone.cs.meta rename to Assets/VRM10/Runtime/ControlRig/Vrm10ControlBone.cs.meta From 33725cbab57c6d29f34231d7f9c1045b8088b503 Mon Sep 17 00:00:00 2001 From: ousttrue Date: Mon, 20 Feb 2023 19:06:13 +0900 Subject: [PATCH 3/5] 3 interfaces. ITPoseProvider, INormalizedPoseProvider and INormalizedPoseApplicable --- .../Vrm10Runtime/Vrm10RuntimeControlRig.cs | 18 ++++++++--- .../Runtime/ControlRig/ControlRigRetarget.cs | 15 --------- .../Runtime/ControlRig/IControlRigGetter.cs | 11 ------- .../Runtime/ControlRig/IControlRigSetter.cs | 17 ---------- .../ControlRig/INormalizedPoseApplicable.cs | 12 +++++++ ...meta => INormalizedPoseApplicable.cs.meta} | 0 .../ControlRig/INormalizedPoseProvider.cs | 17 ++++++++++ ...s.meta => INormalizedPoseProvider.cs.meta} | 0 .../Runtime/ControlRig/ITPoseProvider.cs | 27 ++++++++++++++++ ...etarget.cs.meta => ITPoseProvider.cs.meta} | 2 +- ...tter.cs => InitialRotationPoseProvider.cs} | 31 +++++++++++++++---- ...ta => InitialRotationPoseProvider.cs.meta} | 0 ...RigGetter.cs => NormalizedPoseProvider.cs} | 19 ++++++++++-- ...cs.meta => NormalizedPoseProvider.cs.meta} | 0 .../VRM10Viewer/VRM10Retarget.cs | 15 +++++++++ .../VRM10Viewer/VRM10Retarget.cs.meta | 11 +++++++ 16 files changed, 137 insertions(+), 58 deletions(-) delete mode 100644 Assets/VRM10/Runtime/ControlRig/ControlRigRetarget.cs delete mode 100644 Assets/VRM10/Runtime/ControlRig/IControlRigGetter.cs delete mode 100644 Assets/VRM10/Runtime/ControlRig/IControlRigSetter.cs create mode 100644 Assets/VRM10/Runtime/ControlRig/INormalizedPoseApplicable.cs rename Assets/VRM10/Runtime/ControlRig/{IControlRigSetter.cs.meta => INormalizedPoseApplicable.cs.meta} (100%) create mode 100644 Assets/VRM10/Runtime/ControlRig/INormalizedPoseProvider.cs rename Assets/VRM10/Runtime/ControlRig/{IControlRigGetter.cs.meta => INormalizedPoseProvider.cs.meta} (100%) create mode 100644 Assets/VRM10/Runtime/ControlRig/ITPoseProvider.cs rename Assets/VRM10/Runtime/ControlRig/{ControlRigRetarget.cs.meta => ITPoseProvider.cs.meta} (83%) rename Assets/VRM10/Runtime/ControlRig/{InitialRotationRigGetter.cs => InitialRotationPoseProvider.cs} (56%) rename Assets/VRM10/Runtime/ControlRig/{InitialRotationRigGetter.cs.meta => InitialRotationPoseProvider.cs.meta} (100%) rename Assets/VRM10/Runtime/ControlRig/{NormalizedRotationRigGetter.cs => NormalizedPoseProvider.cs} (62%) rename Assets/VRM10/Runtime/ControlRig/{NormalizedRotationRigGetter.cs.meta => NormalizedPoseProvider.cs.meta} (100%) create mode 100644 Assets/VRM10_Samples/VRM10Viewer/VRM10Retarget.cs create mode 100644 Assets/VRM10_Samples/VRM10Viewer/VRM10Retarget.cs.meta diff --git a/Assets/VRM10/Runtime/Components/Vrm10Runtime/Vrm10RuntimeControlRig.cs b/Assets/VRM10/Runtime/Components/Vrm10Runtime/Vrm10RuntimeControlRig.cs index 65497ec19..9abd96c5d 100644 --- a/Assets/VRM10/Runtime/Components/Vrm10Runtime/Vrm10RuntimeControlRig.cs +++ b/Assets/VRM10/Runtime/Components/Vrm10Runtime/Vrm10RuntimeControlRig.cs @@ -13,7 +13,7 @@ namespace UniVRM10 /// Create a control rig for the VRM 1.0 model instance. /// This provides the normalized operation of bones, like VRM 0.x. /// - public sealed class Vrm10RuntimeControlRig : IDisposable, IControlRigSetter + public sealed class Vrm10RuntimeControlRig : IDisposable, INormalizedPoseApplicable, ITPoseProvider { private readonly Transform _controlRigRoot; private readonly Vrm10ControlBone _hipBone; @@ -22,7 +22,8 @@ namespace UniVRM10 public IReadOnlyDictionary Bones => _bones; public Animator ControlRigAnimator { get; } - public float InitialHipsHeight { get; } + + public float InitialHipsHeight => HipTPoseWorldPosition.y; /// /// humanoid に対して ControlRig を生成します @@ -37,7 +38,7 @@ namespace UniVRM10 _hipBone = Vrm10ControlBone.Build(humanoid, out _bones); _hipBone.ControlBone.SetParent(_controlRigRoot); - InitialHipsHeight = _hipBone.ControlTarget.position.y; + HipTPoseWorldPosition = vrmRoot.worldToLocalMatrix.MultiplyPoint(_hipBone.ControlTarget.position); var transformBonePairs = _bones.Select(kv => (kv.Value.ControlBone, kv.Key)); _controlRigAvatar = HumanoidLoader.LoadHumanoidAvatar(vrmRoot, transformBonePairs); @@ -73,14 +74,14 @@ namespace UniVRM10 public void EnforceTPose() { - SetRootPosition(_hipBone.ControlBone.position); + SetHipsPosition(_hipBone.ControlBone.position); foreach (var bone in _bones.Values) { bone.ControlBone.localRotation = Quaternion.identity; } } - public void SetRootPosition(Vector3 position) + public void SetHipsPosition(Vector3 position) { // TODO: scale model local position _hipBone.ControlTarget.position = position; @@ -114,5 +115,12 @@ namespace UniVRM10 yield return headParent; } } + + public Vector3 HipTPoseWorldPosition { get; } + + public Quaternion GetBoneTPoseWorldRotation(HumanBodyBones bone) + { + return Quaternion.identity; + } } } diff --git a/Assets/VRM10/Runtime/ControlRig/ControlRigRetarget.cs b/Assets/VRM10/Runtime/ControlRig/ControlRigRetarget.cs deleted file mode 100644 index 31304b1bc..000000000 --- a/Assets/VRM10/Runtime/ControlRig/ControlRigRetarget.cs +++ /dev/null @@ -1,15 +0,0 @@ -namespace UniVRM10 -{ - public static class ControlRigRetarget - { - public static void Retarget(IControlRigGetter getter, IControlRigSetter setter) - { - foreach (var (head, parent) in setter.EnumerateBones()) - { - var q = getter.GetNormalizedLocalRotation(head, parent); - setter.SetNormalizedLocalRotation(head, q); - } - setter.SetRootPosition(getter.GetRootPosition()); - } - } -} diff --git a/Assets/VRM10/Runtime/ControlRig/IControlRigGetter.cs b/Assets/VRM10/Runtime/ControlRig/IControlRigGetter.cs deleted file mode 100644 index 69bc2e009..000000000 --- a/Assets/VRM10/Runtime/ControlRig/IControlRigGetter.cs +++ /dev/null @@ -1,11 +0,0 @@ -using UnityEngine; - -namespace UniVRM10 -{ - public interface IControlRigGetter - { - Vector3 GetRootPosition(); - - Quaternion GetNormalizedLocalRotation(HumanBodyBones bone, HumanBodyBones parentBone); - } -} diff --git a/Assets/VRM10/Runtime/ControlRig/IControlRigSetter.cs b/Assets/VRM10/Runtime/ControlRig/IControlRigSetter.cs deleted file mode 100644 index 598b8ce6a..000000000 --- a/Assets/VRM10/Runtime/ControlRig/IControlRigSetter.cs +++ /dev/null @@ -1,17 +0,0 @@ -using System.Collections.Generic; -using UnityEngine; - -namespace UniVRM10 -{ - public interface IControlRigSetter - { - /// TODO: 何らかのスケーリングが必用 - void SetRootPosition(Vector3 position); - - /// 初期姿勢(TPose) が Quaternion.Identity である相対回転 - void SetNormalizedLocalRotation(HumanBodyBones bone, Quaternion normalizedLocalRotation); - - /// ボーンを親ボーンとセットで返す - IEnumerable<(HumanBodyBones Head, HumanBodyBones Parent)> EnumerateBones(); - } -} diff --git a/Assets/VRM10/Runtime/ControlRig/INormalizedPoseApplicable.cs b/Assets/VRM10/Runtime/ControlRig/INormalizedPoseApplicable.cs new file mode 100644 index 000000000..6d265a60f --- /dev/null +++ b/Assets/VRM10/Runtime/ControlRig/INormalizedPoseApplicable.cs @@ -0,0 +1,12 @@ +using System.Collections.Generic; +using UnityEngine; + +namespace UniVRM10 +{ + public interface INormalizedPoseApplicable + { + void SetHipsPosition(Vector3 position); + + void SetNormalizedLocalRotation(HumanBodyBones bone, Quaternion normalizedLocalRotation); + } +} diff --git a/Assets/VRM10/Runtime/ControlRig/IControlRigSetter.cs.meta b/Assets/VRM10/Runtime/ControlRig/INormalizedPoseApplicable.cs.meta similarity index 100% rename from Assets/VRM10/Runtime/ControlRig/IControlRigSetter.cs.meta rename to Assets/VRM10/Runtime/ControlRig/INormalizedPoseApplicable.cs.meta diff --git a/Assets/VRM10/Runtime/ControlRig/INormalizedPoseProvider.cs b/Assets/VRM10/Runtime/ControlRig/INormalizedPoseProvider.cs new file mode 100644 index 000000000..798b3e610 --- /dev/null +++ b/Assets/VRM10/Runtime/ControlRig/INormalizedPoseProvider.cs @@ -0,0 +1,17 @@ +using UnityEngine; + +namespace UniVRM10 +{ + public interface INormalizedPoseProvider + { + /// + /// Get hips position in model root space + /// + Vector3 GetHipsPosition(); + + /// + /// Get normalized local rotation + /// + Quaternion GetNormalizedLocalRotation(HumanBodyBones bone, HumanBodyBones parentBone); + } +} diff --git a/Assets/VRM10/Runtime/ControlRig/IControlRigGetter.cs.meta b/Assets/VRM10/Runtime/ControlRig/INormalizedPoseProvider.cs.meta similarity index 100% rename from Assets/VRM10/Runtime/ControlRig/IControlRigGetter.cs.meta rename to Assets/VRM10/Runtime/ControlRig/INormalizedPoseProvider.cs.meta diff --git a/Assets/VRM10/Runtime/ControlRig/ITPoseProvider.cs b/Assets/VRM10/Runtime/ControlRig/ITPoseProvider.cs new file mode 100644 index 000000000..eb355237d --- /dev/null +++ b/Assets/VRM10/Runtime/ControlRig/ITPoseProvider.cs @@ -0,0 +1,27 @@ +using System.Collections.Generic; +using UnityEngine; + +namespace UniVRM10 +{ + public interface ITPoseProvider + { + /// + /// * world は ModelRoot を意図していることに注意 + /// + Vector3 HipTPoseWorldPosition { get; } + + /// + /// * world は ModelRoot を意図していることに注意 + /// * bone 無いときはどう振る舞うべきか + /// + /// + /// + Quaternion GetBoneTPoseWorldRotation(HumanBodyBones bone); + + /// + /// ボーンを親ボーンとセットで列挙する + /// + /// hips の場合は parent は HumanBodyBones.LastBone で null を表す + IEnumerable<(HumanBodyBones Head, HumanBodyBones Parent)> EnumerateBones(); + } +} diff --git a/Assets/VRM10/Runtime/ControlRig/ControlRigRetarget.cs.meta b/Assets/VRM10/Runtime/ControlRig/ITPoseProvider.cs.meta similarity index 83% rename from Assets/VRM10/Runtime/ControlRig/ControlRigRetarget.cs.meta rename to Assets/VRM10/Runtime/ControlRig/ITPoseProvider.cs.meta index 4bfbd264e..16c14f4a1 100644 --- a/Assets/VRM10/Runtime/ControlRig/ControlRigRetarget.cs.meta +++ b/Assets/VRM10/Runtime/ControlRig/ITPoseProvider.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 55c7c4cd6bc756142a927d385a1c0d29 +guid: cc1da1cfaa59c824295059dc6b1f22c0 MonoImporter: externalObjects: {} serializedVersion: 2 diff --git a/Assets/VRM10/Runtime/ControlRig/InitialRotationRigGetter.cs b/Assets/VRM10/Runtime/ControlRig/InitialRotationPoseProvider.cs similarity index 56% rename from Assets/VRM10/Runtime/ControlRig/InitialRotationRigGetter.cs rename to Assets/VRM10/Runtime/ControlRig/InitialRotationPoseProvider.cs index f10888419..6b4c0b325 100644 --- a/Assets/VRM10/Runtime/ControlRig/InitialRotationRigGetter.cs +++ b/Assets/VRM10/Runtime/ControlRig/InitialRotationPoseProvider.cs @@ -13,15 +13,18 @@ namespace UniVRM10 /// から VRM0TPose 互換の NormalizedLocalRotation(VRM0互換)を取り出す。 /// BoneInitialRotation が値を計算できる。 /// - public class InitRotationRigGetter : IControlRigGetter + public sealed class InitRotationPoseProvider : INormalizedPoseProvider, ITPoseProvider { Transform m_root; + Transform m_hips; private readonly Dictionary m_bones = new Dictionary(); - /// TPoseのヒエラルキー - public InitRotationRigGetter(Transform root, UniHumanoid.Humanoid humanoid) + public Vector3 HipTPoseWorldPosition => throw new System.NotImplementedException(); + + public InitRotationPoseProvider(Transform root, UniHumanoid.Humanoid humanoid) { m_root = root; + m_hips = m_bones[HumanBodyBones.Hips].Transform; foreach (var (t, bone) in humanoid.BoneMap) { m_bones.Add(bone, new BoneInitialRotation(t)); @@ -41,10 +44,26 @@ namespace UniVRM10 } } - public Vector3 GetRootPosition() + public Vector3 GetHipsPosition() { - // TODO: from m_root relative ? scaling ? - return m_bones[HumanBodyBones.Hips].Transform.localPosition; + if (m_hips.parent == m_root) + { + return m_hips.localPosition; + } + else + { + throw new System.NotImplementedException(); + } + } + + public Quaternion GetBoneTPoseWorldRotation(HumanBodyBones bone) + { + throw new System.NotImplementedException(); + } + + public IEnumerable<(HumanBodyBones Head, HumanBodyBones Parent)> EnumerateBones() + { + throw new System.NotImplementedException(); } } } diff --git a/Assets/VRM10/Runtime/ControlRig/InitialRotationRigGetter.cs.meta b/Assets/VRM10/Runtime/ControlRig/InitialRotationPoseProvider.cs.meta similarity index 100% rename from Assets/VRM10/Runtime/ControlRig/InitialRotationRigGetter.cs.meta rename to Assets/VRM10/Runtime/ControlRig/InitialRotationPoseProvider.cs.meta diff --git a/Assets/VRM10/Runtime/ControlRig/NormalizedRotationRigGetter.cs b/Assets/VRM10/Runtime/ControlRig/NormalizedPoseProvider.cs similarity index 62% rename from Assets/VRM10/Runtime/ControlRig/NormalizedRotationRigGetter.cs rename to Assets/VRM10/Runtime/ControlRig/NormalizedPoseProvider.cs index fedbf83cd..7d2ba7874 100644 --- a/Assets/VRM10/Runtime/ControlRig/NormalizedRotationRigGetter.cs +++ b/Assets/VRM10/Runtime/ControlRig/NormalizedPoseProvider.cs @@ -1,3 +1,4 @@ +using System.Collections.Generic; using UnityEngine; namespace UniVRM10 @@ -7,12 +8,14 @@ namespace UniVRM10 /// localRotation をコピーするだけなのだが、 /// GetNormalizedLocalRotation にて、ボーンの有無(upperChestなど)の違いの対応をする予定(未実装)。 /// - public class NormalizedRigGetter : IControlRigGetter + public sealed class NormalizedPoseProvider : INormalizedPoseProvider, ITPoseProvider { Transform m_root; Animator m_animator; - public NormalizedRigGetter(Transform root, Animator animator) + public Vector3 HipTPoseWorldPosition => throw new System.NotImplementedException(); + + public NormalizedPoseProvider(Transform root, Animator animator) { m_root = root; m_animator = animator; @@ -32,10 +35,20 @@ namespace UniVRM10 } } - public Vector3 GetRootPosition() + public Vector3 GetHipsPosition() { // TODO: from model root ? return m_animator.GetBoneTransform(HumanBodyBones.Hips).localPosition; } + + public Quaternion GetBoneTPoseWorldRotation(HumanBodyBones bone) + { + throw new System.NotImplementedException(); + } + + public IEnumerable<(HumanBodyBones Head, HumanBodyBones Parent)> EnumerateBones() + { + throw new System.NotImplementedException(); + } } } diff --git a/Assets/VRM10/Runtime/ControlRig/NormalizedRotationRigGetter.cs.meta b/Assets/VRM10/Runtime/ControlRig/NormalizedPoseProvider.cs.meta similarity index 100% rename from Assets/VRM10/Runtime/ControlRig/NormalizedRotationRigGetter.cs.meta rename to Assets/VRM10/Runtime/ControlRig/NormalizedPoseProvider.cs.meta diff --git a/Assets/VRM10_Samples/VRM10Viewer/VRM10Retarget.cs b/Assets/VRM10_Samples/VRM10Viewer/VRM10Retarget.cs new file mode 100644 index 000000000..3af5fc621 --- /dev/null +++ b/Assets/VRM10_Samples/VRM10Viewer/VRM10Retarget.cs @@ -0,0 +1,15 @@ +namespace UniVRM10 +{ + public static class VRM10Retarget + { + public static void Retarget((INormalizedPoseProvider Pose, ITPoseProvider TPose) source, (INormalizedPoseApplicable Pose, ITPoseProvider TPose) sink) + { + foreach (var (head, parent) in sink.TPose.EnumerateBones()) + { + var q = source.Pose.GetNormalizedLocalRotation(head, parent); + sink.Pose.SetNormalizedLocalRotation(head, q); + } + sink.Pose.SetHipsPosition(source.Pose.GetHipsPosition()); + } + } +} diff --git a/Assets/VRM10_Samples/VRM10Viewer/VRM10Retarget.cs.meta b/Assets/VRM10_Samples/VRM10Viewer/VRM10Retarget.cs.meta new file mode 100644 index 000000000..51e773495 --- /dev/null +++ b/Assets/VRM10_Samples/VRM10Viewer/VRM10Retarget.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 49423dc9e9a224545a90221f41d975c8 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: From 4629a8b58647761be6da20554ae1da96e0560fb8 Mon Sep 17 00:00:00 2001 From: ousttrue Date: Mon, 20 Feb 2023 19:20:20 +0900 Subject: [PATCH 4/5] mv to Assets/VRM10/Runtime/Components/Vrm10RuntimeControlRig --- .../VRM10/Runtime/Components/Vrm10RuntimeControlRig.meta | 8 ++++++++ .../ControlRigGenerationOption.cs | 0 .../ControlRigGenerationOption.cs.meta | 0 .../Vrm10RuntimeControlRig}/Vrm10ControlBone.cs | 0 .../Vrm10RuntimeControlRig}/Vrm10ControlBone.cs.meta | 0 .../Vrm10RuntimeControlRig.cs | 0 .../Vrm10RuntimeControlRig.cs.meta | 0 7 files changed, 8 insertions(+) create mode 100644 Assets/VRM10/Runtime/Components/Vrm10RuntimeControlRig.meta rename Assets/VRM10/Runtime/Components/{Vrm10Runtime => Vrm10RuntimeControlRig}/ControlRigGenerationOption.cs (100%) rename Assets/VRM10/Runtime/Components/{Vrm10Runtime => Vrm10RuntimeControlRig}/ControlRigGenerationOption.cs.meta (100%) rename Assets/VRM10/Runtime/{ControlRig => Components/Vrm10RuntimeControlRig}/Vrm10ControlBone.cs (100%) rename Assets/VRM10/Runtime/{ControlRig => Components/Vrm10RuntimeControlRig}/Vrm10ControlBone.cs.meta (100%) rename Assets/VRM10/Runtime/Components/{Vrm10Runtime => Vrm10RuntimeControlRig}/Vrm10RuntimeControlRig.cs (100%) rename Assets/VRM10/Runtime/Components/{Vrm10Runtime => Vrm10RuntimeControlRig}/Vrm10RuntimeControlRig.cs.meta (100%) diff --git a/Assets/VRM10/Runtime/Components/Vrm10RuntimeControlRig.meta b/Assets/VRM10/Runtime/Components/Vrm10RuntimeControlRig.meta new file mode 100644 index 000000000..537aa8618 --- /dev/null +++ b/Assets/VRM10/Runtime/Components/Vrm10RuntimeControlRig.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: c576424903e07c947afb1ad82fd99325 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/VRM10/Runtime/Components/Vrm10Runtime/ControlRigGenerationOption.cs b/Assets/VRM10/Runtime/Components/Vrm10RuntimeControlRig/ControlRigGenerationOption.cs similarity index 100% rename from Assets/VRM10/Runtime/Components/Vrm10Runtime/ControlRigGenerationOption.cs rename to Assets/VRM10/Runtime/Components/Vrm10RuntimeControlRig/ControlRigGenerationOption.cs diff --git a/Assets/VRM10/Runtime/Components/Vrm10Runtime/ControlRigGenerationOption.cs.meta b/Assets/VRM10/Runtime/Components/Vrm10RuntimeControlRig/ControlRigGenerationOption.cs.meta similarity index 100% rename from Assets/VRM10/Runtime/Components/Vrm10Runtime/ControlRigGenerationOption.cs.meta rename to Assets/VRM10/Runtime/Components/Vrm10RuntimeControlRig/ControlRigGenerationOption.cs.meta diff --git a/Assets/VRM10/Runtime/ControlRig/Vrm10ControlBone.cs b/Assets/VRM10/Runtime/Components/Vrm10RuntimeControlRig/Vrm10ControlBone.cs similarity index 100% rename from Assets/VRM10/Runtime/ControlRig/Vrm10ControlBone.cs rename to Assets/VRM10/Runtime/Components/Vrm10RuntimeControlRig/Vrm10ControlBone.cs diff --git a/Assets/VRM10/Runtime/ControlRig/Vrm10ControlBone.cs.meta b/Assets/VRM10/Runtime/Components/Vrm10RuntimeControlRig/Vrm10ControlBone.cs.meta similarity index 100% rename from Assets/VRM10/Runtime/ControlRig/Vrm10ControlBone.cs.meta rename to Assets/VRM10/Runtime/Components/Vrm10RuntimeControlRig/Vrm10ControlBone.cs.meta diff --git a/Assets/VRM10/Runtime/Components/Vrm10Runtime/Vrm10RuntimeControlRig.cs b/Assets/VRM10/Runtime/Components/Vrm10RuntimeControlRig/Vrm10RuntimeControlRig.cs similarity index 100% rename from Assets/VRM10/Runtime/Components/Vrm10Runtime/Vrm10RuntimeControlRig.cs rename to Assets/VRM10/Runtime/Components/Vrm10RuntimeControlRig/Vrm10RuntimeControlRig.cs diff --git a/Assets/VRM10/Runtime/Components/Vrm10Runtime/Vrm10RuntimeControlRig.cs.meta b/Assets/VRM10/Runtime/Components/Vrm10RuntimeControlRig/Vrm10RuntimeControlRig.cs.meta similarity index 100% rename from Assets/VRM10/Runtime/Components/Vrm10Runtime/Vrm10RuntimeControlRig.cs.meta rename to Assets/VRM10/Runtime/Components/Vrm10RuntimeControlRig/Vrm10RuntimeControlRig.cs.meta From 437dc1b1b3d3fba6b6059beb44d774e74bf8c082 Mon Sep 17 00:00:00 2001 From: ousttrue Date: Mon, 20 Feb 2023 19:21:36 +0900 Subject: [PATCH 5/5] mv --- .../ControlRig.meta} | 2 +- .../ControlRig}/ControlRigGenerationOption.cs | 0 .../ControlRig}/ControlRigGenerationOption.cs.meta | 0 .../ControlRig}/Vrm10ControlBone.cs | 0 .../ControlRig}/Vrm10ControlBone.cs.meta | 0 .../ControlRig}/Vrm10RuntimeControlRig.cs | 0 .../ControlRig}/Vrm10RuntimeControlRig.cs.meta | 0 7 files changed, 1 insertion(+), 1 deletion(-) rename Assets/VRM10/Runtime/Components/{Vrm10RuntimeControlRig.meta => Vrm10Runtime/ControlRig.meta} (77%) rename Assets/VRM10/Runtime/Components/{Vrm10RuntimeControlRig => Vrm10Runtime/ControlRig}/ControlRigGenerationOption.cs (100%) rename Assets/VRM10/Runtime/Components/{Vrm10RuntimeControlRig => Vrm10Runtime/ControlRig}/ControlRigGenerationOption.cs.meta (100%) rename Assets/VRM10/Runtime/Components/{Vrm10RuntimeControlRig => Vrm10Runtime/ControlRig}/Vrm10ControlBone.cs (100%) rename Assets/VRM10/Runtime/Components/{Vrm10RuntimeControlRig => Vrm10Runtime/ControlRig}/Vrm10ControlBone.cs.meta (100%) rename Assets/VRM10/Runtime/Components/{Vrm10RuntimeControlRig => Vrm10Runtime/ControlRig}/Vrm10RuntimeControlRig.cs (100%) rename Assets/VRM10/Runtime/Components/{Vrm10RuntimeControlRig => Vrm10Runtime/ControlRig}/Vrm10RuntimeControlRig.cs.meta (100%) diff --git a/Assets/VRM10/Runtime/Components/Vrm10RuntimeControlRig.meta b/Assets/VRM10/Runtime/Components/Vrm10Runtime/ControlRig.meta similarity index 77% rename from Assets/VRM10/Runtime/Components/Vrm10RuntimeControlRig.meta rename to Assets/VRM10/Runtime/Components/Vrm10Runtime/ControlRig.meta index 537aa8618..801f624a0 100644 --- a/Assets/VRM10/Runtime/Components/Vrm10RuntimeControlRig.meta +++ b/Assets/VRM10/Runtime/Components/Vrm10Runtime/ControlRig.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: c576424903e07c947afb1ad82fd99325 +guid: f0f3a2bf6126d4a49b24a5fc2a7b6e64 folderAsset: yes DefaultImporter: externalObjects: {} diff --git a/Assets/VRM10/Runtime/Components/Vrm10RuntimeControlRig/ControlRigGenerationOption.cs b/Assets/VRM10/Runtime/Components/Vrm10Runtime/ControlRig/ControlRigGenerationOption.cs similarity index 100% rename from Assets/VRM10/Runtime/Components/Vrm10RuntimeControlRig/ControlRigGenerationOption.cs rename to Assets/VRM10/Runtime/Components/Vrm10Runtime/ControlRig/ControlRigGenerationOption.cs diff --git a/Assets/VRM10/Runtime/Components/Vrm10RuntimeControlRig/ControlRigGenerationOption.cs.meta b/Assets/VRM10/Runtime/Components/Vrm10Runtime/ControlRig/ControlRigGenerationOption.cs.meta similarity index 100% rename from Assets/VRM10/Runtime/Components/Vrm10RuntimeControlRig/ControlRigGenerationOption.cs.meta rename to Assets/VRM10/Runtime/Components/Vrm10Runtime/ControlRig/ControlRigGenerationOption.cs.meta diff --git a/Assets/VRM10/Runtime/Components/Vrm10RuntimeControlRig/Vrm10ControlBone.cs b/Assets/VRM10/Runtime/Components/Vrm10Runtime/ControlRig/Vrm10ControlBone.cs similarity index 100% rename from Assets/VRM10/Runtime/Components/Vrm10RuntimeControlRig/Vrm10ControlBone.cs rename to Assets/VRM10/Runtime/Components/Vrm10Runtime/ControlRig/Vrm10ControlBone.cs diff --git a/Assets/VRM10/Runtime/Components/Vrm10RuntimeControlRig/Vrm10ControlBone.cs.meta b/Assets/VRM10/Runtime/Components/Vrm10Runtime/ControlRig/Vrm10ControlBone.cs.meta similarity index 100% rename from Assets/VRM10/Runtime/Components/Vrm10RuntimeControlRig/Vrm10ControlBone.cs.meta rename to Assets/VRM10/Runtime/Components/Vrm10Runtime/ControlRig/Vrm10ControlBone.cs.meta diff --git a/Assets/VRM10/Runtime/Components/Vrm10RuntimeControlRig/Vrm10RuntimeControlRig.cs b/Assets/VRM10/Runtime/Components/Vrm10Runtime/ControlRig/Vrm10RuntimeControlRig.cs similarity index 100% rename from Assets/VRM10/Runtime/Components/Vrm10RuntimeControlRig/Vrm10RuntimeControlRig.cs rename to Assets/VRM10/Runtime/Components/Vrm10Runtime/ControlRig/Vrm10RuntimeControlRig.cs diff --git a/Assets/VRM10/Runtime/Components/Vrm10RuntimeControlRig/Vrm10RuntimeControlRig.cs.meta b/Assets/VRM10/Runtime/Components/Vrm10Runtime/ControlRig/Vrm10RuntimeControlRig.cs.meta similarity index 100% rename from Assets/VRM10/Runtime/Components/Vrm10RuntimeControlRig/Vrm10RuntimeControlRig.cs.meta rename to Assets/VRM10/Runtime/Components/Vrm10Runtime/ControlRig/Vrm10RuntimeControlRig.cs.meta