From f9e319bf49f96b01955ccb975a63236976174232 Mon Sep 17 00:00:00 2001 From: bd_ Date: Sun, 24 Sep 2023 16:59:43 +0900 Subject: [PATCH] feat: Unidirectional armature sync mode (#416) --- .../Editor/EasySetupOutfit.cs | 43 +- .../Editor/Inspector/MergeArmatureEditor.cs | 57 ++- .../Editor/Localization/en.json | 9 + .../Editor/Localization/ja.json | 8 + .../Runtime/ArmatureAwase.meta | 3 + .../ArmatureAwase/ArmatureLockController.cs | 182 ++++++++ .../ArmatureLockController.cs.meta | 3 + .../BidirectionalArmatureLock.cs | 218 ++++++++++ .../BidirectionalArmatureLock.cs.meta | 3 + .../Runtime/ArmatureAwase/IArmatureLock.cs | 10 + .../ArmatureAwase/IArmatureLock.cs.meta | 3 + .../Runtime/ArmatureAwase/LockResult.cs | 9 + .../Runtime/ArmatureAwase/LockResult.cs.meta | 3 + .../ArmatureAwase/OnewayArmatureLock.cs | 271 ++++++++++++ .../ArmatureAwase/OnewayArmatureLock.cs.meta | 3 + .../Runtime/ArmatureAwase/ReadBone.cs | 22 + .../Runtime/ArmatureAwase/ReadBone.cs.meta | 3 + .../Runtime/ArmatureAwase/TransformState.cs | 49 +++ .../ArmatureAwase/TransformState.cs.meta | 3 + .../Runtime/ModularAvatarMergeArmature.cs | 199 ++++----- .../Runtime/Util.meta | 3 + .../Runtime/Util/NativeIntPtr.cs | 392 ++++++++++++++++++ .../Runtime/Util/NativeIntPtr.cs.meta | 3 + .../nadena.dev.modular-avatar.core.asmdef | 6 +- docs/docs/reference/merge-armature.md | 16 +- docs/docs/reference/merge-armature.png | Bin 27573 -> 59708 bytes .../current/reference/merge-armature.md | 15 +- .../current/reference/merge-armature.png | Bin 29166 -> 70153 bytes 28 files changed, 1380 insertions(+), 156 deletions(-) create mode 100644 Packages/nadena.dev.modular-avatar/Runtime/ArmatureAwase.meta create mode 100644 Packages/nadena.dev.modular-avatar/Runtime/ArmatureAwase/ArmatureLockController.cs create mode 100644 Packages/nadena.dev.modular-avatar/Runtime/ArmatureAwase/ArmatureLockController.cs.meta create mode 100644 Packages/nadena.dev.modular-avatar/Runtime/ArmatureAwase/BidirectionalArmatureLock.cs create mode 100644 Packages/nadena.dev.modular-avatar/Runtime/ArmatureAwase/BidirectionalArmatureLock.cs.meta create mode 100644 Packages/nadena.dev.modular-avatar/Runtime/ArmatureAwase/IArmatureLock.cs create mode 100644 Packages/nadena.dev.modular-avatar/Runtime/ArmatureAwase/IArmatureLock.cs.meta create mode 100644 Packages/nadena.dev.modular-avatar/Runtime/ArmatureAwase/LockResult.cs create mode 100644 Packages/nadena.dev.modular-avatar/Runtime/ArmatureAwase/LockResult.cs.meta create mode 100644 Packages/nadena.dev.modular-avatar/Runtime/ArmatureAwase/OnewayArmatureLock.cs create mode 100644 Packages/nadena.dev.modular-avatar/Runtime/ArmatureAwase/OnewayArmatureLock.cs.meta create mode 100644 Packages/nadena.dev.modular-avatar/Runtime/ArmatureAwase/ReadBone.cs create mode 100644 Packages/nadena.dev.modular-avatar/Runtime/ArmatureAwase/ReadBone.cs.meta create mode 100644 Packages/nadena.dev.modular-avatar/Runtime/ArmatureAwase/TransformState.cs create mode 100644 Packages/nadena.dev.modular-avatar/Runtime/ArmatureAwase/TransformState.cs.meta create mode 100644 Packages/nadena.dev.modular-avatar/Runtime/Util.meta create mode 100644 Packages/nadena.dev.modular-avatar/Runtime/Util/NativeIntPtr.cs create mode 100644 Packages/nadena.dev.modular-avatar/Runtime/Util/NativeIntPtr.cs.meta diff --git a/Packages/nadena.dev.modular-avatar/Editor/EasySetupOutfit.cs b/Packages/nadena.dev.modular-avatar/Editor/EasySetupOutfit.cs index 59867034..77876a70 100644 --- a/Packages/nadena.dev.modular-avatar/Editor/EasySetupOutfit.cs +++ b/Packages/nadena.dev.modular-avatar/Editor/EasySetupOutfit.cs @@ -25,10 +25,9 @@ namespace nadena.dev.modular_avatar.core.editor buttonStyle.fixedWidth = 40f; buttonStyle.fixedHeight = EditorGUIUtility.singleLineHeight * 1.5f; } - + private void OnEnable() { - } internal static void Show( @@ -40,7 +39,7 @@ namespace nadena.dev.modular_avatar.core.editor window.titleContent = new GUIContent("Setup Outfit"); window.header = header; window.messageGroups = messageGroups; - + // Compute required window size var height = 0f; var width = 450f; @@ -55,9 +54,9 @@ namespace nadena.dev.modular_avatar.core.editor height += buttonStyle.fixedHeight; height += SeparatorSize; - + window.minSize = new Vector2(width, height); - + window.ShowModal(); } @@ -79,6 +78,7 @@ namespace nadena.dev.modular_avatar.core.editor { Close(); } + EditorGUILayout.EndHorizontal(); var finalRect = GUILayoutUtility.GetRect(SeparatorSize, SeparatorSize, GUILayout.ExpandWidth(true)); @@ -99,8 +99,8 @@ namespace nadena.dev.modular_avatar.core.editor } } } - } - + } + internal class EasySetupOutfit { private const int PRIORITY = 49; @@ -115,7 +115,7 @@ namespace nadena.dev.modular_avatar.core.editor ESOErrorWindow.Show(errorHeader, errorMessageGroups); return; } - + if (!FindBones(cmd.context, out var avatarRoot, out var avatarHips, out var outfitHips) ) return; @@ -130,8 +130,10 @@ namespace nadena.dev.modular_avatar.core.editor merge = Undo.AddComponent(outfitArmature.gameObject); merge.mergeTarget = new AvatarObjectReference(); merge.mergeTarget.referencePath = RuntimeUtil.RelativePath(avatarRoot, avatarArmature.gameObject); + merge.LockMode = ArmatureLockMode.BaseToMerge; merge.InferPrefixSuffix(); } + HeuristicBoneMapper.RenameBonesByHeuristic(merge); if (outfitRoot != null @@ -235,18 +237,18 @@ namespace nadena.dev.modular_avatar.core.editor static bool ValidateSetupOutfit() { errorHeader = S("setup_outfit.err.header.notarget"); - errorMessageGroups = new string[] { S("setup_outfit.err.unknown") }; - + errorMessageGroups = new string[] {S("setup_outfit.err.unknown")}; + if (Selection.objects.Length == 0) { - errorMessageGroups = new string[] { S("setup_outfit.err.no_selection") }; + errorMessageGroups = new string[] {S("setup_outfit.err.no_selection")}; return false; } foreach (var obj in Selection.objects) { errorHeader = S_f("setup_outfit.err.header", obj.name); - + if (!(obj is GameObject gameObj)) return false; var xform = gameObj.transform; @@ -281,7 +283,8 @@ namespace nadena.dev.modular_avatar.core.editor return true; } - private static bool FindBones(Object obj, out GameObject avatarRoot, out GameObject avatarHips, out GameObject outfitHips) + private static bool FindBones(Object obj, out GameObject avatarRoot, out GameObject avatarHips, + out GameObject outfitHips) { avatarHips = outfitHips = null; var outfitRoot = obj as GameObject; @@ -289,7 +292,7 @@ namespace nadena.dev.modular_avatar.core.editor ? RuntimeUtil.FindAvatarInParents(outfitRoot.transform)?.gameObject : null; if (outfitRoot == null || avatarRoot == null) return false; - + var avatarAnimator = avatarRoot.GetComponent(); if (avatarAnimator == null) { @@ -309,18 +312,19 @@ namespace nadena.dev.modular_avatar.core.editor }; return false; } - + // We do an explicit search for the hips bone rather than invoking the animator, as we want to control // traversal order. foreach (var maybeHips in avatarRoot.GetComponentsInChildren()) { - if (maybeHips.name == avatarBoneMappings[HumanBodyBones.Hips] && !maybeHips.IsChildOf(outfitRoot.transform)) + if (maybeHips.name == avatarBoneMappings[HumanBodyBones.Hips] && + !maybeHips.IsChildOf(outfitRoot.transform)) { avatarHips = maybeHips.gameObject; break; } } - + if (avatarHips == null) { errorMessageGroups = new string[] @@ -352,8 +356,9 @@ namespace nadena.dev.modular_avatar.core.editor } } } + hipsCandidates.Add(avatarBoneMappings[HumanBodyBones.Hips]); - + // If that doesn't work out, we'll check for heuristic bone mapper mappings. foreach (var hbm in HeuristicBoneMapper.BoneToNameMap[HumanBodyBones.Hips]) { @@ -362,7 +367,7 @@ namespace nadena.dev.modular_avatar.core.editor hipsCandidates.Add(hbm); } } - + foreach (Transform child in outfitRoot.transform) { foreach (Transform tempHip in child) diff --git a/Packages/nadena.dev.modular-avatar/Editor/Inspector/MergeArmatureEditor.cs b/Packages/nadena.dev.modular-avatar/Editor/Inspector/MergeArmatureEditor.cs index 8fa73517..bba5dc64 100644 --- a/Packages/nadena.dev.modular-avatar/Editor/Inspector/MergeArmatureEditor.cs +++ b/Packages/nadena.dev.modular-avatar/Editor/Inspector/MergeArmatureEditor.cs @@ -7,14 +7,14 @@ namespace nadena.dev.modular_avatar.core.editor [CustomEditor(typeof(ModularAvatarMergeArmature))] internal class MergeArmatureEditor : MAEditorBase { - private SerializedProperty prop_mergeTarget, prop_prefix, prop_suffix, prop_locked, prop_mangleNames; + private SerializedProperty prop_mergeTarget, prop_prefix, prop_suffix, prop_lock_mode, prop_mangleNames; private void OnEnable() { prop_mergeTarget = serializedObject.FindProperty(nameof(ModularAvatarMergeArmature.mergeTarget)); prop_prefix = serializedObject.FindProperty(nameof(ModularAvatarMergeArmature.prefix)); prop_suffix = serializedObject.FindProperty(nameof(ModularAvatarMergeArmature.suffix)); - prop_locked = serializedObject.FindProperty(nameof(ModularAvatarMergeArmature.locked)); + prop_lock_mode = serializedObject.FindProperty(nameof(ModularAvatarMergeArmature.LockMode)); prop_mangleNames = serializedObject.FindProperty(nameof(ModularAvatarMergeArmature.mangleNames)); } @@ -26,11 +26,60 @@ namespace nadena.dev.modular_avatar.core.editor EditorGUILayout.PropertyField(prop_prefix, G("merge_armature.prefix")); EditorGUILayout.PropertyField(prop_suffix, G("merge_armature.suffix")); EditorGUILayout.PropertyField(prop_mangleNames, G("merge_armature.mangle_names")); - EditorGUILayout.PropertyField(prop_locked, G("merge_armature.locked")); + + EditorGUILayout.Separator(); + EditorGUILayout.LabelField(S("merge_armature.lockmode"), EditorStyles.boldLabel); + + EditorGUILayout.BeginVertical(); + + FakeEnum(prop_lock_mode, ArmatureLockMode.NotLocked, S("merge_armature.lockmode.not_locked.title"), + S("merge_armature.lockmode.not_locked.body")); + FakeEnum(prop_lock_mode, ArmatureLockMode.BaseToMerge, S("merge_armature.lockmode.base_to_merge.title"), + S("merge_armature.lockmode.base_to_merge.body")); + FakeEnum(prop_lock_mode, ArmatureLockMode.BidirectionalExact, + S("merge_armature.lockmode.bidirectional.title"), + S("merge_armature.lockmode.bidirectional.body")); + + EditorGUILayout.EndVertical(); serializedObject.ApplyModifiedProperties(); } + private void FakeEnum(SerializedProperty propLockMode, ArmatureLockMode index, string label, string desc) + { + var val = !propLockMode.hasMultipleDifferentValues && propLockMode.enumValueIndex == (int) index; + + var selectionStyle = val ? (GUIStyle) "flow node 1" : (GUIStyle) "flow node 0"; + selectionStyle.padding = new RectOffset(0, 0, 0, 0); + selectionStyle.margin = new RectOffset(0, 0, 5, 5); + + var boldLabel = EditorStyles.boldLabel; + boldLabel.wordWrap = true; + + var normalLabel = EditorStyles.label; + normalLabel.wordWrap = true; + + EditorGUILayout.BeginVertical(selectionStyle); + + EditorGUILayout.LabelField(label, boldLabel); + var l1 = GUILayoutUtility.GetLastRect(); + EditorGUILayout.Separator(); + EditorGUILayout.LabelField(desc, normalLabel); + var l2 = GUILayoutUtility.GetLastRect(); + + EditorGUILayout.EndVertical(); + + var rect = GUILayoutUtility.GetLastRect(); + + if (GUI.Button(rect, GUIContent.none, selectionStyle)) + { + propLockMode.enumValueIndex = (int) index; + } + + EditorGUI.LabelField(l1, label, boldLabel); + EditorGUI.LabelField(l2, desc, normalLabel); + } + protected override void OnInnerInspectorGUI() { var target = (ModularAvatarMergeArmature) this.target; @@ -50,6 +99,8 @@ namespace nadena.dev.modular_avatar.core.editor } } + EditorGUILayout.Separator(); + var enable_name_assignment = target.mergeTarget.Get(RuntimeUtil.FindAvatarInParents(target.transform)) != null; using (var scope = new EditorGUI.DisabledScope(!enable_name_assignment)) diff --git a/Packages/nadena.dev.modular-avatar/Editor/Localization/en.json b/Packages/nadena.dev.modular-avatar/Editor/Localization/en.json index 63ac28c1..bf884494 100644 --- a/Packages/nadena.dev.modular-avatar/Editor/Localization/en.json +++ b/Packages/nadena.dev.modular-avatar/Editor/Localization/en.json @@ -51,6 +51,15 @@ "merge_animator.path_mode.tooltip": "How to interpret paths in animations. Using relative mode lets you record animations from an animator on this object.", "merge_animator.match_avatar_write_defaults": "Match Avatar Write Defaults", "merge_animator.match_avatar_write_defaults.tooltip": "Match the write defaults setting used on the avatar's animator. If the avatar's write defaults settings are inconsistent, the settings on the animator will be left alone.", + + "merge_armature.lockmode": "Position sync mode", + "merge_armature.lockmode.not_locked.title": "Not locked", + "merge_armature.lockmode.not_locked.body": "Merged armature does not sync its position with the base avatar.", + "merge_armature.lockmode.base_to_merge.title": "Avatar =====> Target (Unidirectional)", + "merge_armature.lockmode.base_to_merge.body": "Moving the base avatar will move the merge armature. If you move the merged armature, it will not affect the base avatar. This is useful when adding normal outfits, where you might want to adjust the position of bones in the outfit.", + "merge_armature.lockmode.bidirectional.title": "Avatar <=====> Target (Bidirectional)", + "merge_armature.lockmode.bidirectional.body": "The base armature and the merged armature will always have the same position. This is useful when creating animations that are meant to target the base armature. In order to activate this, your armatures must already be in the exact same position.", + "worldfixed.quest": "This component is not compatible with the standalone Oculus Quest and will have no effect.", "worldfixed.normal": "This object will be fixed to world unless you fixed to avatar with constraint.", "fpvisible.normal": "This object will be visible in your first person view.", diff --git a/Packages/nadena.dev.modular-avatar/Editor/Localization/ja.json b/Packages/nadena.dev.modular-avatar/Editor/Localization/ja.json index d290a9e9..9114169e 100644 --- a/Packages/nadena.dev.modular-avatar/Editor/Localization/ja.json +++ b/Packages/nadena.dev.modular-avatar/Editor/Localization/ja.json @@ -40,6 +40,14 @@ "merge_armature.adjust_names.tooltip": "統合先のボーン名に合わせて、衣装のボーン名を合わせて変更します。統合先アバターに非対応の衣装導入向け機能です。", "merge_armature.mangle_names": "名前かぶりを回避", "merge_armature.mangle_names.tooltip": "ほかのアセットとの名前かぶりを裂けるため、新規ボーンの名前を自動で変更する", + "merge_armature.lockmode": "位置追従モード", + "merge_armature.lockmode.not_locked.title": "追従なし", + "merge_armature.lockmode.not_locked.body": "統合されるアーマチュアは、統合先のアーマチュアに追従しません。", + "merge_armature.lockmode.base_to_merge.title": "アバター =====> オブジェクト (一方的)", + "merge_armature.lockmode.base_to_merge.body": "アバターを動かすと、統合されるアーマチュアも追従しますが、統合されるアーマチュアを動いたらアバターが動きません。通常の衣装追加なら、この設定のほうはボーンの位置調整を保持するのでお勧めです。", + "merge_armature.lockmode.bidirectional.title": "アバター <=====> オブジェクト (双方向)", + "merge_armature.lockmode.bidirectional.body": "アバターと統合されるアーマチュアは常に同じ位置になります。元のアバターを操作するアニメーションを作る時に便利かもしれません。なお、起動するには、すでに全く同位置にする必要があります。", + "path_mode.Relative": "相対的(このオブジェクトからのパスを使用)", "path_mode.Absolute": "絶対的(アバタールートからのパスを使用)", "merge_animator.animator": "統合されるアニメーター", diff --git a/Packages/nadena.dev.modular-avatar/Runtime/ArmatureAwase.meta b/Packages/nadena.dev.modular-avatar/Runtime/ArmatureAwase.meta new file mode 100644 index 00000000..cc503603 --- /dev/null +++ b/Packages/nadena.dev.modular-avatar/Runtime/ArmatureAwase.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 077f9b1712f9416a9bb0143c3ad5e934 +timeCreated: 1693673568 \ No newline at end of file diff --git a/Packages/nadena.dev.modular-avatar/Runtime/ArmatureAwase/ArmatureLockController.cs b/Packages/nadena.dev.modular-avatar/Runtime/ArmatureAwase/ArmatureLockController.cs new file mode 100644 index 00000000..b6593894 --- /dev/null +++ b/Packages/nadena.dev.modular-avatar/Runtime/ArmatureAwase/ArmatureLockController.cs @@ -0,0 +1,182 @@ +using System; +using System.Collections.Generic; +using UnityEngine; + +#if UNITY_EDITOR +using UnityEditor; +#endif + +namespace nadena.dev.modular_avatar.core.armature_lock +{ + internal class ArmatureLockController : IDisposable + { + // Undo operations can reinitialize the MAMA component, which destroys critical lock controller state. + // Avoid this issue by keeping a static reference to the controller for each MAMA component. + private static Dictionary + _controllers = new Dictionary(); + + public delegate IReadOnlyList<(Transform, Transform)> GetTransformsDelegate(); + + private readonly ModularAvatarMergeArmature _mama; + private readonly GetTransformsDelegate _getTransforms; + private IArmatureLock _lock; + + private bool _updateActive; + + private bool UpdateActive + { + get => _updateActive; + set + { + if (UpdateActive == value) return; +#if UNITY_EDITOR + if (value) + { + EditorApplication.update += VoidUpdate; + } + else + { + EditorApplication.update -= VoidUpdate; + } + + _updateActive = value; +#endif + } + } + + private ArmatureLockMode _curMode, _mode; + + public ArmatureLockMode Mode + { + get => _mode; + set + { + if (value == _mode) return; + + _mode = value; + + UpdateActive = true; + } + } + + private bool _enabled; + + public bool Enabled + { + get => _enabled; + set + { + if (Enabled == value) return; + _enabled = value; + if (_enabled) UpdateActive = true; + } + } + + public ArmatureLockController(ModularAvatarMergeArmature mama, GetTransformsDelegate getTransforms) + { + AssemblyReloadEvents.beforeAssemblyReload += Dispose; + + this._mama = mama; + this._getTransforms = getTransforms; + } + + public static ArmatureLockController ForMerge(ModularAvatarMergeArmature mama, + GetTransformsDelegate getTransforms) + { + if (!_controllers.TryGetValue(mama, out var controller)) + { + controller = new ArmatureLockController(mama, getTransforms); + _controllers[mama] = controller; + } + + return controller; + } + + public bool IsStable() + { + if (Mode == ArmatureLockMode.NotLocked) return true; + + if (_curMode == _mode && _lock?.IsStable() == true) return true; + return RebuildLock() && (_lock?.IsStable() ?? false); + } + + private void VoidUpdate() + { + Update(); + } + + internal bool Update() + { + LockResult result; + if (!Enabled) + { + UpdateActive = false; + _lock?.Dispose(); + _lock = null; + return true; + } + + if (_curMode == _mode) + { + result = _lock?.Execute() ?? LockResult.Failed; + if (result != LockResult.Failed) return true; + } + + if (!RebuildLock()) return false; + + result = (_lock?.Execute() ?? LockResult.Failed); + + return result != LockResult.Failed; + } + + private bool RebuildLock() + { + _lock?.Dispose(); + _lock = null; + + var xforms = _getTransforms(); + if (xforms == null) + { + return false; + } + + try + { + switch (Mode) + { + case ArmatureLockMode.BidirectionalExact: + _lock = new BidirectionalArmatureLock(_getTransforms()); + break; + case ArmatureLockMode.BaseToMerge: + _lock = new OnewayArmatureLock(_getTransforms()); + break; + default: + UpdateActive = false; + break; + } + } + catch (Exception) + { + _lock = null; + return false; + } + + _curMode = _mode; + + return true; + } + + public void Dispose() + { + _lock?.Dispose(); + _lock = null; + +#if UNITY_EDITOR + AssemblyReloadEvents.beforeAssemblyReload -= Dispose; +#endif + + _controllers.Remove(_mama); + UpdateActive = false; + } + } +} \ No newline at end of file diff --git a/Packages/nadena.dev.modular-avatar/Runtime/ArmatureAwase/ArmatureLockController.cs.meta b/Packages/nadena.dev.modular-avatar/Runtime/ArmatureAwase/ArmatureLockController.cs.meta new file mode 100644 index 00000000..a92d5118 --- /dev/null +++ b/Packages/nadena.dev.modular-avatar/Runtime/ArmatureAwase/ArmatureLockController.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 323d19fa721747ecbc3bc9c71805f630 +timeCreated: 1693713247 \ No newline at end of file diff --git a/Packages/nadena.dev.modular-avatar/Runtime/ArmatureAwase/BidirectionalArmatureLock.cs b/Packages/nadena.dev.modular-avatar/Runtime/ArmatureAwase/BidirectionalArmatureLock.cs new file mode 100644 index 00000000..889216f8 --- /dev/null +++ b/Packages/nadena.dev.modular-avatar/Runtime/ArmatureAwase/BidirectionalArmatureLock.cs @@ -0,0 +1,218 @@ +using System; +using System.Collections.Generic; +using nadena.dev.modular_avatar.JacksonDunstan.NativeCollections; +using Unity.Burst; +using Unity.Collections; +using Unity.Jobs; +using UnityEngine; +using UnityEngine.Jobs; + +namespace nadena.dev.modular_avatar.core.armature_lock +{ + internal class BidirectionalArmatureLock : IDisposable, IArmatureLock + { + private bool _disposed; + private TransformAccessArray _baseBoneAccess, _mergeBoneAccess; + private readonly Transform[] _baseBones, _mergeBones, _baseParentBones, _mergeParentBones; + + private NativeArray BaseBones, MergeBones, SavedMerge; + private NativeArray ShouldWriteBase, ShouldWriteMerge; + private NativeIntPtr WroteAny; + + private JobHandle LastOp; + + public BidirectionalArmatureLock(IReadOnlyList<(Transform, Transform)> bones) + { + _baseBones = new Transform[bones.Count]; + _mergeBones = new Transform[bones.Count]; + _baseParentBones = new Transform[bones.Count]; + _mergeParentBones = new Transform[bones.Count]; + + BaseBones = new NativeArray(_baseBones.Length, Allocator.Persistent); + MergeBones = new NativeArray(_baseBones.Length, Allocator.Persistent); + SavedMerge = new NativeArray(_baseBones.Length, Allocator.Persistent); + + for (int i = 0; i < _baseBones.Length; i++) + { + var (mergeBone, baseBone) = bones[i]; + _baseBones[i] = baseBone; + _mergeBones[i] = mergeBone; + _baseParentBones[i] = baseBone.parent; + _mergeParentBones[i] = mergeBone.parent; + + var mergeState = TransformState.FromTransform(mergeBone); + SavedMerge[i] = mergeState; + MergeBones[i] = mergeState; + BaseBones[i] = TransformState.FromTransform(baseBone); + } + + _baseBoneAccess = new TransformAccessArray(_baseBones); + _mergeBoneAccess = new TransformAccessArray(_mergeBones); + + ShouldWriteBase = new NativeArray(_baseBones.Length, Allocator.Persistent); + ShouldWriteMerge = new NativeArray(_baseBones.Length, Allocator.Persistent); + WroteAny = new NativeIntPtr(Allocator.Persistent); + } + + [BurstCompile] + struct Compute : IJobParallelForTransform + { + public NativeArray BaseBones, SavedMerge; + + [WriteOnly] public NativeArray MergeBones; + + [WriteOnly] public NativeArray ShouldWriteBase, ShouldWriteMerge; + + [WriteOnly] public NativeIntPtr.Parallel WroteAny; + + public void Execute(int index, TransformAccess mergeTransform) + { + var baseBone = BaseBones[index]; + var mergeBone = new TransformState() + { + localPosition = mergeTransform.localPosition, + localRotation = mergeTransform.localRotation, + localScale = mergeTransform.localScale, + }; + MergeBones[index] = mergeBone; + + var saved = SavedMerge[index]; + + if (TransformState.Differs(saved, mergeBone)) + { + ShouldWriteBase[index] = true; + ShouldWriteMerge[index] = false; + + var mergeToBase = mergeBone; + BaseBones[index] = mergeToBase; + SavedMerge[index] = mergeBone; + WroteAny.SetOne(); + } + else if (TransformState.Differs(saved, baseBone)) + { + ShouldWriteMerge[index] = true; + ShouldWriteBase[index] = false; + + MergeBones[index] = baseBone; + SavedMerge[index] = baseBone; + WroteAny.SetOne(); + } + else + { + ShouldWriteBase[index] = false; + ShouldWriteMerge[index] = false; + } + } + } + + [BurstCompile] + struct Commit : IJobParallelForTransform + { + [ReadOnly] public NativeArray BoneState; + [ReadOnly] public NativeArray ShouldWrite; + + public void Execute(int index, TransformAccess transform) + { + if (ShouldWrite[index]) + { + var boneState = BoneState[index]; + + transform.localPosition = boneState.localPosition; + transform.localRotation = boneState.localRotation; + transform.localScale = boneState.localScale; + } + } + } + + public void Dispose() + { + if (_disposed) return; + + LastOp.Complete(); + + _baseBoneAccess.Dispose(); + _mergeBoneAccess.Dispose(); + BaseBones.Dispose(); + MergeBones.Dispose(); + SavedMerge.Dispose(); + ShouldWriteBase.Dispose(); + ShouldWriteMerge.Dispose(); + WroteAny.Dispose(); + + _disposed = true; + } + + private bool DoCompute(out JobHandle handle) + { + handle = default; + + if (_disposed) return false; + + WroteAny.Value = 0; + + LastOp.Complete(); + + var readBase = new ReadBone() + { + _state = BaseBones, + }.Schedule(_baseBoneAccess); + LastOp = handle = new Compute() + { + BaseBones = BaseBones, + MergeBones = MergeBones, + SavedMerge = SavedMerge, + ShouldWriteBase = ShouldWriteBase, + ShouldWriteMerge = ShouldWriteMerge, + WroteAny = WroteAny.GetParallel(), + }.Schedule(_mergeBoneAccess, readBase); + + // Check parents haven't changed + for (int i = 0; i < _baseBones.Length; i++) + { + if (_baseBones[i].parent != _baseParentBones[i] || _mergeBones[i].parent != _mergeParentBones[i]) + { + return false; + } + } + + return true; + } + + public bool IsStable() + { + if (!DoCompute(out var compute)) return false; + + compute.Complete(); + + return WroteAny.Value == 0; + } + + public LockResult Execute() + { + if (!DoCompute(out var compute)) return LockResult.Failed; + + var commitBase = new Commit() + { + BoneState = BaseBones, + ShouldWrite = ShouldWriteBase, + }.Schedule(_baseBoneAccess, compute); + var commitMerge = new Commit() + { + BoneState = MergeBones, + ShouldWrite = ShouldWriteMerge, + }.Schedule(_mergeBoneAccess, compute); + + commitBase.Complete(); + commitMerge.Complete(); + + if (WroteAny.Value == 0) + { + return LockResult.NoOp; + } + else + { + return LockResult.Success; + } + } + } +} \ No newline at end of file diff --git a/Packages/nadena.dev.modular-avatar/Runtime/ArmatureAwase/BidirectionalArmatureLock.cs.meta b/Packages/nadena.dev.modular-avatar/Runtime/ArmatureAwase/BidirectionalArmatureLock.cs.meta new file mode 100644 index 00000000..0af5ca72 --- /dev/null +++ b/Packages/nadena.dev.modular-avatar/Runtime/ArmatureAwase/BidirectionalArmatureLock.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 9e5ed2de355448b0934da7691cd6b584 +timeCreated: 1693712306 \ No newline at end of file diff --git a/Packages/nadena.dev.modular-avatar/Runtime/ArmatureAwase/IArmatureLock.cs b/Packages/nadena.dev.modular-avatar/Runtime/ArmatureAwase/IArmatureLock.cs new file mode 100644 index 00000000..a6ac2748 --- /dev/null +++ b/Packages/nadena.dev.modular-avatar/Runtime/ArmatureAwase/IArmatureLock.cs @@ -0,0 +1,10 @@ +using System; + +namespace nadena.dev.modular_avatar.core.armature_lock +{ + internal interface IArmatureLock : IDisposable + { + LockResult Execute(); + bool IsStable(); + } +} \ No newline at end of file diff --git a/Packages/nadena.dev.modular-avatar/Runtime/ArmatureAwase/IArmatureLock.cs.meta b/Packages/nadena.dev.modular-avatar/Runtime/ArmatureAwase/IArmatureLock.cs.meta new file mode 100644 index 00000000..6aa2aaef --- /dev/null +++ b/Packages/nadena.dev.modular-avatar/Runtime/ArmatureAwase/IArmatureLock.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 7b4b88c94c2144128ffbe7f271b28ba2 +timeCreated: 1693712261 \ No newline at end of file diff --git a/Packages/nadena.dev.modular-avatar/Runtime/ArmatureAwase/LockResult.cs b/Packages/nadena.dev.modular-avatar/Runtime/ArmatureAwase/LockResult.cs new file mode 100644 index 00000000..cc6d0246 --- /dev/null +++ b/Packages/nadena.dev.modular-avatar/Runtime/ArmatureAwase/LockResult.cs @@ -0,0 +1,9 @@ +namespace nadena.dev.modular_avatar.core.armature_lock +{ + internal enum LockResult + { + Failed, + Success, + NoOp, + } +} \ No newline at end of file diff --git a/Packages/nadena.dev.modular-avatar/Runtime/ArmatureAwase/LockResult.cs.meta b/Packages/nadena.dev.modular-avatar/Runtime/ArmatureAwase/LockResult.cs.meta new file mode 100644 index 00000000..1df01b91 --- /dev/null +++ b/Packages/nadena.dev.modular-avatar/Runtime/ArmatureAwase/LockResult.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 361faa0a05e34f7b8fbd1b2ae73d27bf +timeCreated: 1693713933 \ No newline at end of file diff --git a/Packages/nadena.dev.modular-avatar/Runtime/ArmatureAwase/OnewayArmatureLock.cs b/Packages/nadena.dev.modular-avatar/Runtime/ArmatureAwase/OnewayArmatureLock.cs new file mode 100644 index 00000000..cc26f80e --- /dev/null +++ b/Packages/nadena.dev.modular-avatar/Runtime/ArmatureAwase/OnewayArmatureLock.cs @@ -0,0 +1,271 @@ +using System; +using System.Collections.Generic; +using nadena.dev.modular_avatar.JacksonDunstan.NativeCollections; +using Unity.Burst; +using Unity.Collections; +using Unity.Jobs; +#if UNITY_EDITOR +using UnityEditor; +#endif +using UnityEngine; +using UnityEngine.Jobs; + +namespace nadena.dev.modular_avatar.core.armature_lock +{ + internal class OnewayArmatureLock : IDisposable, IArmatureLock + { + struct BoneStaticData + { + public Matrix4x4 _mat_l, _mat_r; + } + + private NativeArray _boneStaticData; + private NativeArray _mergeSavedState; + private NativeArray _baseState, _mergeState; + + private NativeIntPtr _fault, _wroteAny; + + private readonly Transform[] _baseBones, _mergeBones, _baseParentBones, _mergeParentBones; + private TransformAccessArray _baseBonesAccessor, _mergeBonesAccessor; + + private bool _disposed; + private JobHandle LastOp; + + [BurstCompile] + struct WriteBone : IJobParallelForTransform + { + [ReadOnly] public NativeIntPtr _fault, _shouldWrite; + + [ReadOnly] public NativeArray _values; + + public void Execute(int index, TransformAccess transform) + { + if (_fault.Value == 0 && _shouldWrite.Value != 0) + { + var val = _values[index]; + transform.localPosition = val.localPosition; + transform.localRotation = val.localRotation; + transform.localScale = val.localScale; + } + } + } + + [BurstCompile] + struct ComputePosition : IJobParallelFor + { + [ReadOnly] public NativeArray _boneStatic; + + [ReadOnly] public NativeArray _mergeState; + [ReadOnly] public NativeArray _baseState; + + public NativeArray _mergeSavedState; + + public NativeIntPtr.Parallel _fault, _wroteAny; + + public void Execute(int index) + { + var boneStatic = _boneStatic[index]; + var mergeState = _mergeState[index]; + var baseState = _baseState[index]; + var mergeSaved = _mergeSavedState[index]; + + var basePos = baseState.localPosition; + var baseRot = baseState.localRotation; + var baseScale = baseState.localScale; + + if (TransformState.Differs(mergeSaved, mergeState)) + { + _fault.Increment(); + } + + var relTransform = boneStatic._mat_l * Matrix4x4.TRS(basePos, baseRot, baseScale) * boneStatic._mat_r; + + var targetMergePos = relTransform.MultiplyPoint(Vector3.zero); + var targetMergeRot = relTransform.rotation; + var targetMergeScale = relTransform.lossyScale; + + var newState = new TransformState + { + localPosition = targetMergePos, + localRotation = targetMergeRot, + localScale = targetMergeScale + }; + + if (TransformState.Differs(mergeSaved, newState)) + { + _wroteAny.SetOne(); + _mergeSavedState[index] = newState; + } + } + } + + public OnewayArmatureLock(IReadOnlyList<(Transform, Transform)> mergeToBase) + { + _boneStaticData = new NativeArray(mergeToBase.Count, Allocator.Persistent); + _mergeSavedState = new NativeArray(mergeToBase.Count, Allocator.Persistent); + _baseState = new NativeArray(mergeToBase.Count, Allocator.Persistent); + _mergeState = new NativeArray(mergeToBase.Count, Allocator.Persistent); + + _fault = new NativeIntPtr(Allocator.Persistent); + _wroteAny = new NativeIntPtr(Allocator.Persistent); + + _baseBones = new Transform[mergeToBase.Count]; + _mergeBones = new Transform[mergeToBase.Count]; + _baseParentBones = new Transform[mergeToBase.Count]; + _mergeParentBones = new Transform[mergeToBase.Count]; + + for (int i = 0; i < mergeToBase.Count; i++) + { + var (mergeBone, baseBone) = mergeToBase[i]; + var mergeParent = mergeBone.parent; + var baseParent = baseBone.parent; + + if (mergeParent == null || baseParent == null) + { + throw new Exception("Can't handle root objects"); + } + + _baseBones[i] = baseBone; + _mergeBones[i] = mergeBone; + _baseParentBones[i] = baseParent; + _mergeParentBones[i] = mergeParent; + + _baseState[i] = TransformState.FromTransform(baseBone); + _mergeSavedState[i] = _mergeState[i] = TransformState.FromTransform(mergeBone); + + // We want to emulate the hierarchy: + // baseParent + // - baseBone + // - v_mergeBone + // + // However our hierarchy actually is: + // mergeParent + // - mergeBone + // + // Our question is: What is the local affine transform of mergeBone -> mergeParent space, given a new + // baseBone -> baseParent affine transform? + + // First, relative to baseBone, what is the local affine transform of mergeBone? + var mat_l = baseBone.worldToLocalMatrix * mergeBone.localToWorldMatrix; + // We also find parent -> mergeParent + var mat_r = mergeParent.worldToLocalMatrix * baseParent.localToWorldMatrix; + // Now we can multiply: + // (baseParent -> mergeParent) * (baseBone -> baseParent) * (mergeBone -> baseBone) + // = (baseParent -> mergeParent) * (mergeBone -> baseParent) + // = (mergeBone -> mergeParent) + + _boneStaticData[i] = new BoneStaticData() + { + _mat_l = mat_r, + _mat_r = mat_l + }; + } + + _baseBonesAccessor = new TransformAccessArray(_baseBones); + _mergeBonesAccessor = new TransformAccessArray(_mergeBones); + +#if UNITY_EDITOR + AssemblyReloadEvents.beforeAssemblyReload += Dispose; +#endif + } + + private bool DoCompute(out JobHandle handle) + { + handle = default; + if (_disposed) return false; + + _fault.Value = 0; + _wroteAny.Value = 0; + + var jobReadBase = new ReadBone + { + _state = _baseState + }.Schedule(_baseBonesAccessor); + var jobReadMerged = new ReadBone + { + _state = _mergeState + }.Schedule(_mergeBonesAccessor); + var readAll = JobHandle.CombineDependencies(jobReadBase, jobReadMerged); + LastOp = handle = new ComputePosition + { + _boneStatic = _boneStaticData, + _mergeState = _mergeState, + _baseState = _baseState, + _mergeSavedState = _mergeSavedState, + _fault = _fault.GetParallel(), + _wroteAny = _wroteAny.GetParallel(), + }.Schedule(_baseBones.Length, 32, readAll); + + // Validate parents while that job is running + for (int i = 0; i < _baseBones.Length; i++) + { + if (_baseBones[i].parent != _baseParentBones[i] || _mergeBones[i].parent != _mergeParentBones[i]) + { + return false; + } + } + + return true; + } + + public bool IsStable() + { + if (!DoCompute(out var compute)) return false; + + compute.Complete(); + + return _fault.Value == 0 && _wroteAny.Value == 0; + } + + /// + /// Executes the armature lock job. + /// + /// True if successful, false if cached data was invalidated and needs recreating + public LockResult Execute() + { + if (!DoCompute(out var compute)) return LockResult.Failed; + + var commit = new WriteBone() + { + _fault = _fault, + _values = _mergeSavedState, + _shouldWrite = _wroteAny + }.Schedule(_mergeBonesAccessor, compute); + + commit.Complete(); + + if (_fault.Value != 0) + { + return LockResult.Failed; + } + else if (_wroteAny.Value == 0) + { + return LockResult.NoOp; + } + else + { + return LockResult.Success; + } + } + + public void Dispose() + { + if (_disposed) return; + + LastOp.Complete(); + _boneStaticData.Dispose(); + _mergeSavedState.Dispose(); + _baseState.Dispose(); + _mergeState.Dispose(); + _fault.Dispose(); + _wroteAny.Dispose(); + _baseBonesAccessor.Dispose(); + _mergeBonesAccessor.Dispose(); + _disposed = true; + +#if UNITY_EDITOR + AssemblyReloadEvents.beforeAssemblyReload -= Dispose; +#endif + } + } +} \ No newline at end of file diff --git a/Packages/nadena.dev.modular-avatar/Runtime/ArmatureAwase/OnewayArmatureLock.cs.meta b/Packages/nadena.dev.modular-avatar/Runtime/ArmatureAwase/OnewayArmatureLock.cs.meta new file mode 100644 index 00000000..8016af0b --- /dev/null +++ b/Packages/nadena.dev.modular-avatar/Runtime/ArmatureAwase/OnewayArmatureLock.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 869a3bad24fd44d8964b6a7dca81bd26 +timeCreated: 1693640255 \ No newline at end of file diff --git a/Packages/nadena.dev.modular-avatar/Runtime/ArmatureAwase/ReadBone.cs b/Packages/nadena.dev.modular-avatar/Runtime/ArmatureAwase/ReadBone.cs new file mode 100644 index 00000000..719404e5 --- /dev/null +++ b/Packages/nadena.dev.modular-avatar/Runtime/ArmatureAwase/ReadBone.cs @@ -0,0 +1,22 @@ +using Unity.Burst; +using Unity.Collections; +using UnityEngine.Jobs; + +namespace nadena.dev.modular_avatar.core.armature_lock +{ + [BurstCompile] + internal struct ReadBone : IJobParallelForTransform + { + public NativeArray _state; + + public void Execute(int index, TransformAccess transform) + { + _state[index] = new TransformState + { + localPosition = transform.localPosition, + localRotation = transform.localRotation, + localScale = transform.localScale + }; + } + } +} \ No newline at end of file diff --git a/Packages/nadena.dev.modular-avatar/Runtime/ArmatureAwase/ReadBone.cs.meta b/Packages/nadena.dev.modular-avatar/Runtime/ArmatureAwase/ReadBone.cs.meta new file mode 100644 index 00000000..e653c21e --- /dev/null +++ b/Packages/nadena.dev.modular-avatar/Runtime/ArmatureAwase/ReadBone.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: df590c12d16249608a9d8a8204b154bf +timeCreated: 1693712551 \ No newline at end of file diff --git a/Packages/nadena.dev.modular-avatar/Runtime/ArmatureAwase/TransformState.cs b/Packages/nadena.dev.modular-avatar/Runtime/ArmatureAwase/TransformState.cs new file mode 100644 index 00000000..18cad3be --- /dev/null +++ b/Packages/nadena.dev.modular-avatar/Runtime/ArmatureAwase/TransformState.cs @@ -0,0 +1,49 @@ +using System.Runtime.CompilerServices; +using Unity.Burst; +using UnityEditor; +using UnityEngine; + +namespace nadena.dev.modular_avatar.core.armature_lock +{ + internal struct TransformState + { + private const float POS_EPSILON = 0.00001f; + private const float ROT_EPSILON = 0.00001f; + private const float SCALE_EPSILON = 0.00001f; + + public Vector3 localPosition; + public Quaternion localRotation; + public Vector3 localScale; + + public static TransformState FromTransform(Transform mergeBone) + { + return new TransformState + { + localPosition = mergeBone.localPosition, + localRotation = mergeBone.localRotation, + localScale = mergeBone.localScale + }; + } + + public void ToTransform(Transform bone) + { + Undo.RecordObject(bone, Undo.GetCurrentGroupName()); + bone.localPosition = localPosition; + bone.localRotation = localRotation; + bone.localScale = localScale; + } + + [BurstCompile] + [MethodImpl(MethodImplOptions.AggressiveInlining)] + public static bool Differs(TransformState self, TransformState other) + { + var deltaMergePos = (self.localPosition - other.localPosition).sqrMagnitude; + var deltaMergeRot = self.localRotation * Quaternion.Inverse(other.localRotation); + var deltaMergeScale = (self.localScale - other.localScale).sqrMagnitude; + + return (deltaMergePos > POS_EPSILON + || Quaternion.Angle(deltaMergeRot, Quaternion.identity) > ROT_EPSILON + || deltaMergeScale > SCALE_EPSILON); + } + } +} \ No newline at end of file diff --git a/Packages/nadena.dev.modular-avatar/Runtime/ArmatureAwase/TransformState.cs.meta b/Packages/nadena.dev.modular-avatar/Runtime/ArmatureAwase/TransformState.cs.meta new file mode 100644 index 00000000..ed041d03 --- /dev/null +++ b/Packages/nadena.dev.modular-avatar/Runtime/ArmatureAwase/TransformState.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 47655dad667d40afa5b75d67913c069c +timeCreated: 1693712494 \ No newline at end of file diff --git a/Packages/nadena.dev.modular-avatar/Runtime/ModularAvatarMergeArmature.cs b/Packages/nadena.dev.modular-avatar/Runtime/ModularAvatarMergeArmature.cs index 8018b837..e33f22f1 100644 --- a/Packages/nadena.dev.modular-avatar/Runtime/ModularAvatarMergeArmature.cs +++ b/Packages/nadena.dev.modular-avatar/Runtime/ModularAvatarMergeArmature.cs @@ -24,69 +24,102 @@ using System; using System.Collections.Generic; +using nadena.dev.modular_avatar.core.armature_lock; using UnityEngine; -#if UNITY_EDITOR -using UnityEditor; -#endif +using UnityEngine.Serialization; namespace nadena.dev.modular_avatar.core { + [Serializable] + public enum ArmatureLockMode + { + Legacy, + NotLocked, + BaseToMerge, + BidirectionalExact + } + [ExecuteInEditMode] [DisallowMultipleComponent] [AddComponentMenu("Modular Avatar/MA Merge Armature")] public class ModularAvatarMergeArmature : AvatarTagComponent { - private const float POS_EPSILON = 0.001f * 0.001f; - private const float ROT_EPSILON = 0.001f * 0.001f; - public AvatarObjectReference mergeTarget = new AvatarObjectReference(); public GameObject mergeTargetObject => mergeTarget.Get(this); public string prefix = ""; public string suffix = ""; - public bool locked = false; + + [FormerlySerializedAs("locked")] public bool legacyLocked; + + public ArmatureLockMode LockMode = ArmatureLockMode.Legacy; + public bool mangleNames = true; - private class BoneBinding + private ArmatureLockController _lockController; + + internal Transform FindCorrespondingBone(Transform bone, Transform baseParent) { - public Transform baseBone; - public Transform mergeBone; + var childName = bone.gameObject.name; - public Vector3 lastLocalPos; - public Vector3 lastLocalScale; - public Quaternion lastLocalRot; + if (!childName.StartsWith(prefix) || !childName.EndsWith(suffix)) return null; + var targetObjectName = childName.Substring(prefix.Length, + childName.Length - prefix.Length - suffix.Length); + return baseParent.Find(targetObjectName); } - private List lockedBones; - protected override void OnValidate() { base.OnValidate(); + MigrateLockConfig(); + RuntimeUtil.delayCall(SetLockMode); + } - RuntimeUtil.delayCall(() => + private void SetLockMode() + { + if (_lockController == null) { - if (this == null) return; + _lockController = ArmatureLockController.ForMerge(this, GetBonesForLock); + } - CheckLock(); - }); + if (_lockController.Mode != LockMode) + { + _lockController.Mode = LockMode; + + if (!_lockController.IsStable()) + { + _lockController.Mode = LockMode = ArmatureLockMode.NotLocked; + } + } + + _lockController.Enabled = isActiveAndEnabled; + } + + private void MigrateLockConfig() + { + if (LockMode == ArmatureLockMode.Legacy) + { + LockMode = legacyLocked ? ArmatureLockMode.BidirectionalExact : ArmatureLockMode.BaseToMerge; + } } private void OnEnable() { - RuntimeUtil.delayCall(CheckLock); + MigrateLockConfig(); + + SetLockMode(); } private void OnDisable() { - RuntimeUtil.delayCall(CheckLock); + _lockController.Enabled = false; } protected override void OnDestroy() { base.OnDestroy(); -#if UNITY_EDITOR - EditorApplication.update -= EditorUpdate; -#endif + _lockController?.Dispose(); + _lockController = null; } public override void ResolveReferences() @@ -94,116 +127,32 @@ namespace nadena.dev.modular_avatar.core mergeTarget?.Get(this); } - void EditorUpdate() + private List<(Transform, Transform)> GetBonesForLock() { - if (this == null) - { -#if UNITY_EDITOR - EditorApplication.update -= EditorUpdate; -#endif - return; - } + var mergeRoot = this.transform; + var baseRoot = mergeTarget.Get(this); - if (!locked || lockedBones == null) - { - CheckLock(); - } + if (baseRoot == null) return null; - if (lockedBones != null) + List<(Transform, Transform)> mergeBones = new List<(Transform, Transform)>(); + + ScanHierarchy(mergeRoot, baseRoot.transform); + + return mergeBones; + + + void ScanHierarchy(Transform merge, Transform baseBone) { - foreach (var bone in lockedBones) + foreach (Transform t in merge) { - if (bone.baseBone == null || bone.mergeBone == null) + var baseChild = FindCorrespondingBone(t, baseBone); + if (baseChild != null) { - lockedBones = null; - break; - } - - var mergeBone = bone.mergeBone; - var correspondingObject = bone.baseBone; - bool lockBasePosition = bone.baseBone == mergeTargetObject.transform; - - if ((mergeBone.localPosition - bone.lastLocalPos).sqrMagnitude > POS_EPSILON - || (mergeBone.localScale - bone.lastLocalScale).sqrMagnitude > POS_EPSILON - || Quaternion.Angle(bone.lastLocalRot, mergeBone.localRotation) > ROT_EPSILON) - { - if (lockBasePosition) mergeBone.position = correspondingObject.position; - else correspondingObject.localPosition = mergeBone.localPosition; - - correspondingObject.localScale = mergeBone.localScale; - correspondingObject.localRotation = mergeBone.localRotation; - } - else - { - if (lockBasePosition) mergeBone.position = correspondingObject.position; - else mergeBone.localPosition = correspondingObject.localPosition; - mergeBone.localScale = correspondingObject.localScale; - mergeBone.localRotation = correspondingObject.localRotation; - } - - bone.lastLocalPos = mergeBone.localPosition; - bone.lastLocalScale = mergeBone.localScale; - bone.lastLocalRot = mergeBone.localRotation; - } - } - } - - void CheckLock() - { - if (RuntimeUtil.isPlaying) return; - -#if UNITY_EDITOR - EditorApplication.update -= EditorUpdate; -#endif - - bool shouldLock = locked && isActiveAndEnabled; - bool wasLocked = lockedBones != null; - if (shouldLock != wasLocked) - { - if (!shouldLock) - { - lockedBones = null; - } - else - { - if (mergeTargetObject == null) return; - lockedBones = new List(); - - foreach (var xform in GetComponentsInChildren(true)) - { - Transform baseObject = FindCorresponding(xform); - - if (baseObject == null) continue; - - lockedBones.Add(new BoneBinding() - { - baseBone = baseObject, - mergeBone = xform, - lastLocalPos = xform.localPosition, - lastLocalScale = xform.localScale, - lastLocalRot = xform.localRotation - }); + mergeBones.Add((t, baseChild)); + ScanHierarchy(t, baseChild); } } } - -#if UNITY_EDITOR - if (shouldLock) - { - EditorApplication.update += EditorUpdate; - } -#endif - } - - private Transform FindCorresponding(Transform xform) - { - if (xform == null) return null; - if (xform == transform) return mergeTargetObject.transform; - - var correspondingParent = FindCorresponding(xform.parent); - if (correspondingParent == null) return null; - - return correspondingParent.Find(prefix + xform.name + suffix); } public void InferPrefixSuffix() diff --git a/Packages/nadena.dev.modular-avatar/Runtime/Util.meta b/Packages/nadena.dev.modular-avatar/Runtime/Util.meta new file mode 100644 index 00000000..d1291dba --- /dev/null +++ b/Packages/nadena.dev.modular-avatar/Runtime/Util.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 6599bbb2aea142b1896d8db008b3759e +timeCreated: 1693642951 \ No newline at end of file diff --git a/Packages/nadena.dev.modular-avatar/Runtime/Util/NativeIntPtr.cs b/Packages/nadena.dev.modular-avatar/Runtime/Util/NativeIntPtr.cs new file mode 100644 index 00000000..43b4f6af --- /dev/null +++ b/Packages/nadena.dev.modular-avatar/Runtime/Util/NativeIntPtr.cs @@ -0,0 +1,392 @@ +//----------------------------------------------------------------------- +// +// Copyright 2018 Jackson Dunstan +// +// Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +// +//----------------------------------------------------------------------- + +using System; +using System.Diagnostics; +using System.Runtime.InteropServices; +using System.Threading; +using Unity.Collections; +using Unity.Collections.LowLevel.Unsafe; + +namespace nadena.dev.modular_avatar.JacksonDunstan.NativeCollections +{ + /// + /// A pointer to an int stored in native (i.e. unmanaged) memory + /// + [NativeContainer] + [NativeContainerSupportsDeallocateOnJobCompletion] + [DebuggerTypeProxy(typeof(NativeIntPtrDebugView))] + [DebuggerDisplay("Value = {Value}")] + [StructLayout(LayoutKind.Sequential)] + public unsafe struct NativeIntPtr : IDisposable + { + /// + /// An atomic write-only version of the object suitable for use in a + /// ParallelFor job + /// + [NativeContainer] + [NativeContainerIsAtomicWriteOnly] + public struct Parallel + { + /// + /// Pointer to the value in native memory + /// + [NativeDisableUnsafePtrRestriction] internal readonly int* m_Buffer; + +#if ENABLE_UNITY_COLLECTIONS_CHECKS + /// + /// A handle to information about what operations can be safely + /// performed on the object at any given time. + /// + internal AtomicSafetyHandle m_Safety; + + /// + /// Create a parallel version of the object + /// + /// + /// + /// Pointer to the value + /// + /// + /// + /// Atomic safety handle for the object + /// + internal Parallel(int* value, AtomicSafetyHandle safety) + { + m_Buffer = value; + m_Safety = safety; + } +#else + /// + /// Create a parallel version of the object + /// + /// + /// + /// Pointer to the value + /// + internal Parallel(int* value) + { + m_Buffer = value; + } +#endif + /// + /// Sets this flag value to one. + /// + /// (added in Modular Avatar) + [WriteAccessRequired] + public void SetOne() + { + RequireWriteAccess(); + *m_Buffer = 1; + } + + /// + /// Increment the stored value + /// + /// + /// + /// This object + /// + [WriteAccessRequired] + public void Increment() + { + RequireWriteAccess(); + Interlocked.Increment(ref *m_Buffer); + } + + /// + /// Decrement the stored value + /// + /// + /// + /// This object + /// + [WriteAccessRequired] + public void Decrement() + { + RequireWriteAccess(); + Interlocked.Decrement(ref *m_Buffer); + } + + /// + /// Add to the stored value + /// + /// + /// + /// Value to add. Use negative values for subtraction. + /// + /// + /// + /// This object + /// + [WriteAccessRequired] + public void Add(int value) + { + RequireWriteAccess(); + Interlocked.Add(ref *m_Buffer, value); + } + + /// + /// Throw an exception if the object isn't writable + /// + [Conditional("ENABLE_UNITY_COLLECTIONS_CHECKS")] + private void RequireWriteAccess() + { +#if ENABLE_UNITY_COLLECTIONS_CHECKS + AtomicSafetyHandle.CheckWriteAndThrow(m_Safety); +#endif + } + } + + /// + /// Pointer to the value in native memory. Must be named exactly this + /// way to allow for [NativeContainerSupportsDeallocateOnJobCompletion] + /// + [NativeDisableUnsafePtrRestriction] internal int* m_Buffer; + + /// + /// Allocator used to create the backing memory + /// + /// This field must be named this way to comply with + /// [NativeContainerSupportsDeallocateOnJobCompletion] + /// + internal readonly Allocator m_AllocatorLabel; + + // These fields are all required when safety checks are enabled +#if ENABLE_UNITY_COLLECTIONS_CHECKS + /// + /// A handle to information about what operations can be safely + /// performed on the object at any given time. + /// + private AtomicSafetyHandle m_Safety; + + /// + /// A handle that can be used to tell if the object has been disposed + /// yet or not, which allows for error-checking double disposal. + /// + [NativeSetClassTypeToNullOnSchedule] private DisposeSentinel m_DisposeSentinel; +#endif + + /// + /// Allocate memory and set the initial value + /// + /// + /// + /// Allocator to allocate and deallocate with. Must be valid. + /// + /// + /// + /// Initial value of the allocated memory + /// + public NativeIntPtr(Allocator allocator, int initialValue = 0) + { + // Require a valid allocator + if (allocator <= Allocator.None) + { + throw new ArgumentException( + "Allocator must be Temp, TempJob or Persistent", + "allocator"); + } + + // Allocate the memory for the value + m_Buffer = (int*) UnsafeUtility.Malloc( + sizeof(int), + UnsafeUtility.AlignOf(), + allocator); + + // Store the allocator to use when deallocating + m_AllocatorLabel = allocator; + + // Create the dispose sentinel +#if ENABLE_UNITY_COLLECTIONS_CHECKS +#if UNITY_2018_3_OR_NEWER + DisposeSentinel.Create(out m_Safety, out m_DisposeSentinel, 0, allocator); +#else + DisposeSentinel.Create(out m_Safety, out m_DisposeSentinel, 0); +#endif +#endif + + // Set the initial value + *m_Buffer = initialValue; + } + + /// + /// Get or set the contained value + /// + /// This operation requires read access to the node for 'get' and write + /// access to the node for 'set'. + /// + /// + /// + /// The contained value + /// + public int Value + { + get + { + RequireReadAccess(); + return *m_Buffer; + } + + [WriteAccessRequired] + set + { + RequireWriteAccess(); + *m_Buffer = value; + } + } + + /// + /// Get a version of this object suitable for use in a ParallelFor job + /// + /// + /// + /// A version of this object suitable for use in a ParallelFor job + /// + public Parallel GetParallel() + { +#if ENABLE_UNITY_COLLECTIONS_CHECKS + Parallel parallel = new Parallel(m_Buffer, m_Safety); + AtomicSafetyHandle.UseSecondaryVersion(ref parallel.m_Safety); +#else + Parallel parallel = new Parallel(m_Buffer); +#endif + return parallel; + } + + /// + /// Check if the underlying unmanaged memory has been created and not + /// freed via a call to . + /// + /// This operation has no access requirements. + /// + /// This operation is O(1). + /// + /// + /// + /// Initially true when a non-default constructor is called but + /// initially false when the default constructor is used. After + /// is called, this becomes false. Note that + /// calling on one copy of this object doesn't + /// result in this becoming false for all copies if it was true before. + /// This property should not be used to check whether the object + /// is usable, only to check whether it was ever usable. + /// + public bool IsCreated + { + get { return m_Buffer != null; } + } + + /// + /// Release the object's unmanaged memory. Do not use it after this. Do + /// not call on copies of the object either. + /// + /// This operation requires write access. + /// + /// This complexity of this operation is O(1) plus the allocator's + /// deallocation complexity. + /// + [WriteAccessRequired] + public void Dispose() + { + RequireWriteAccess(); + +// Make sure we're not double-disposing +#if ENABLE_UNITY_COLLECTIONS_CHECKS +#if UNITY_2018_3_OR_NEWER + DisposeSentinel.Dispose(ref m_Safety, ref m_DisposeSentinel); +#else + DisposeSentinel.Dispose(m_Safety, ref m_DisposeSentinel); +#endif +#endif + + UnsafeUtility.Free(m_Buffer, m_AllocatorLabel); + m_Buffer = null; + } + + /// + /// Set whether both read and write access should be allowed. This is + /// used for automated testing purposes only. + /// + /// + /// + /// If both read and write access should be allowed + /// + [Conditional("ENABLE_UNITY_COLLECTIONS_CHECKS")] + public void TestUseOnlySetAllowReadAndWriteAccess( + bool allowReadOrWriteAccess) + { +#if ENABLE_UNITY_COLLECTIONS_CHECKS + AtomicSafetyHandle.SetAllowReadOrWriteAccess( + m_Safety, + allowReadOrWriteAccess); +#endif + } + + /// + /// Throw an exception if the object isn't readable + /// + [Conditional("ENABLE_UNITY_COLLECTIONS_CHECKS")] + private void RequireReadAccess() + { +#if ENABLE_UNITY_COLLECTIONS_CHECKS + AtomicSafetyHandle.CheckReadAndThrow(m_Safety); +#endif + } + + /// + /// Throw an exception if the object isn't writable + /// + [Conditional("ENABLE_UNITY_COLLECTIONS_CHECKS")] + private void RequireWriteAccess() + { +#if ENABLE_UNITY_COLLECTIONS_CHECKS + AtomicSafetyHandle.CheckWriteAndThrow(m_Safety); +#endif + } + } + + /// + /// Provides a debugger view of . + /// + internal sealed class NativeIntPtrDebugView + { + /// + /// The object to provide a debugger view for + /// + private NativeIntPtr m_Ptr; + + /// + /// Create the debugger view + /// + /// + /// + /// The object to provide a debugger view for + /// + public NativeIntPtrDebugView(NativeIntPtr ptr) + { + m_Ptr = ptr; + } + + /// + /// Get the viewed object's value + /// + /// + /// + /// The viewed object's value + /// + public int Value + { + get { return m_Ptr.Value; } + } + } +} \ No newline at end of file diff --git a/Packages/nadena.dev.modular-avatar/Runtime/Util/NativeIntPtr.cs.meta b/Packages/nadena.dev.modular-avatar/Runtime/Util/NativeIntPtr.cs.meta new file mode 100644 index 00000000..d8cf10ae --- /dev/null +++ b/Packages/nadena.dev.modular-avatar/Runtime/Util/NativeIntPtr.cs.meta @@ -0,0 +1,3 @@ +fileFormatVersion: 2 +guid: 84f8f9617c5a45b4ad9ca1cac1ed9b43 +timeCreated: 1693642959 \ No newline at end of file diff --git a/Packages/nadena.dev.modular-avatar/Runtime/nadena.dev.modular-avatar.core.asmdef b/Packages/nadena.dev.modular-avatar/Runtime/nadena.dev.modular-avatar.core.asmdef index c9ce0f1b..08b01da9 100644 --- a/Packages/nadena.dev.modular-avatar/Runtime/nadena.dev.modular-avatar.core.asmdef +++ b/Packages/nadena.dev.modular-avatar/Runtime/nadena.dev.modular-avatar.core.asmdef @@ -1,9 +1,11 @@ { "name": "nadena.dev.modular-avatar.core", - "references": [], + "references": [ + "GUID:2665a8d13d1b3f18800f46e256720795" + ], "includePlatforms": [], "excludePlatforms": [], - "allowUnsafeCode": false, + "allowUnsafeCode": true, "overrideReferences": true, "precompiledReferences": [ "VRCSDKBase.dll", diff --git a/docs/docs/reference/merge-armature.md b/docs/docs/reference/merge-armature.md index 92dc77cb..404f81e0 100644 --- a/docs/docs/reference/merge-armature.md +++ b/docs/docs/reference/merge-armature.md @@ -35,11 +35,21 @@ Where necessary, PhysBone objects will have their targets updated, and ParentCon As of Modular Avatar 1.7.0, it is now possible to perform nested merges - that is, merge an armature A into B, then merge B into C. Modular Avatar will automatically determine the correct order to apply these merges. -## Locked mode +## Position lock mode -If the locked option is enabled, the position and rotation of the merged bones will be locked to their parents in the editor. This is a two-way relationship; if you move the merged bone, the avatar's bone will move, and vice versa. +Position locking allows the outfit to follow the movement of the base avatar, even in edit mode. This is useful for +testing animations and poses, and for creating screenshots. There are three options for position lock mode: -This is intended for use when animating non-humanoid bones. For example, you could use this to build an animator which can animate cat-ear movements. +* Not locked - the outfit will not follow the base avatar in edit mode +* Base =======> Target (Unidirectional) - When the base avatar moves, the outfit will move too. However, if you move the +outfit, the base avatar will not move. This mode will preserve any adjustments you've made to the outfit's fit, and is +recommended for normal use. +* Base <======> Target (Bidirectional) - When the base avatar moves, the outfit will move too. If you move the outfit, +the base avatar will move too. This mode is useful for certain advanced use cases, such as creating a prefab which +animates the base avatar's hair or animal ears. + +When you set up an outfit with "setup outfit", the position lock mode will be set to "Base =======> Target +(Unidirectional)". You can change this in the inspector if desired. ## Object references diff --git a/docs/docs/reference/merge-armature.png b/docs/docs/reference/merge-armature.png index ff49f6b00b04b6a82a6180962d2d084db61dcf24..c0a79d4dce9b10883fe854992863d66e4a1600dc 100644 GIT binary patch literal 59708 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 U^252>QxxEMC9ft|A!`=)UvXvr=>Px# literal 27573 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

G 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�@1lp#Gpi>?9HTSjIY0}uH4BdjPyO}zjV3M07(TeKi zXwA``<<`|UvOM_$8LGjvU!m>-!)i3i98qx*fkk7G6im|~_ur(Q-GNt;rC(Sd_ z7>{UB*h%0SJ}`T)1LLmWAZ1ZE13`IS%cVd)c{n}wdfvZ#ckivVvlZyR`A*Zf5s3fo z)%hA>T>4v=H{K{IkTR?x^#Lo~<`Z<%08VcWvbpkH1k7q_=$Tyxc>WpW(Z_@B@eW^4 zuYtIMgTrgEqr_|XNq?bzYIbV4yyq4UPUbQ>NUkipqvnjZA)M3yl$0C~))k+dtt1vW87tE|QiccIHmTNJB@NyQ}RsAgdkLnq3D62M+}@8p%kj?gCrG0_<(N zla?x_j!f4}mtRhKU^QQ@@k`fZor4-~!>jF>Cd+5Vg)j(geerp&pKtXVuzr;)uyV8dzmn zk>V*{!=R}ms87Pf{Zzh#l&m6UXh^C9N}Kv^9Fs9JNTV`xH6Zm?A~$SG7q1Lcg4AdN z2O$A8h(e0ZKz5s8{AQGydColO$S(GExg0Rzq^{%Pi8W;-d$sg zlX84tV%BzF^=Ab3_n9|tzlGa3gHLs?XqK1c;`jF7upH-7(~k61Bayo(n6K_c)XYnZ5@N)UDs1DI^XbI|(Og%C9eE)j+Dw8D>YGbPONej#2uSliYoJ7UuGu`sBkdIhw z_a(S{SUQ4l6+ccbsiWr>3WC1uN!P_6$}O_K&rOrn_OeRm9cE55=r=hzH$-O~z07Fb zzTKJa1tmx>y_|#E!S!|u-`SRV@>p_T;ZJNkWKm0VwWoE+tGa}@+X)qN`ir0zfNTEh zu6i8i!q7u7SKE86euV((XvU0SO@E7()h1cSNusd7U^&1=`$N7rm3J0yKERygHJct% z9%%Dqr|tTLLyO{SF+CDb_MS-$%95W$x7w^e3W zb1N93fZ5LKDNpwi#=2o$*p<*SSWACcKMR*VW%DlX<>^_M`WO;J)#8@L(}(hDcg0f` zu_Su|RN7eWDaVj6E7dfjPL^!?qfXZ2u}5&*cABb(ywabdCuQW{<{kOO%S$;Gc#LZGRjo=mr`MqaB3AD6D`51-2czcEl zQ=CC8A*V$S1nq|08f*d$0JnJEw=I^oZ`GnQ7-QbbKG|e&C;!7RbCsIXzH_!Jpln(kNV;= zzJ2)5ZnQRRRpE_3VVY9B_*MjOM++OR(=j}bWHpdm>&Rt3yQ9%>fBR<1K`Mc=_jZcs z@0j0rspwg1Piw(QozP(aAyytnOpgd7A=l1U^(6C)5aG2D0g;TL*a_?^KktC3bYn(N zTf#0=a8qB@te!H%VBo>Rn_?aBEK~T+n9{61!NI2vhKh@8+=y}DHpw&r0Q2h3vi8k> z>W@lP_HOiXzrQrro@HjUIRh5?kq^(&6v$u$=ib=!s!NT{3|>`KxWfc)e(gMdEvj1% zBai*sPwJF1hxC)!mN>1CU=4BUo(C9($D~T~tA+cN`hX`U6kAGG{?O?>^WF6r1V8&r zI#j8=#q;J)FM_ar;PpbqZq$p92Y>m$2qyo3i6BBRIUMqBhi#B9%NB%n-JhPGei;=- z|9bmxwt-?)r`+Q)xbSa=GZ18U^f+>ogK;*?Z!~d`Nw)KgKA_;Vt%nk57oSWZ2rY=? zz-!Gt`Q#u{O(&BDft`}+_i<~lppB9Fo~|3Dm@UD^{NkN`_tVSWdDn{1EiLMakt!=| z@HFT|fm#~a*D<+3OWEA{OE3vdaM3_~QJFs(sdy-Ub^(q#sh|qU>e!X!=reimFagvD z?jC>#<~5)LJz%=VCwWK{~@UBlzq30ou(V((J6(wZi^0FwCq^XJ8$b*oZ?(OYGVatgU0`Ydf;F!ASJ4{^bhwe%Z8JF1w zXR4;5GIw17QNqH)-%93zrP(&eiX!;27s&{K)hWODyppWMZWQC)hNL!%U5WGC+=2E( z6Fl`wkJjf0ky6Zla9xE21R7?@`j)_r)v>X$F>8uM_YS0Ma3Q`Ff>GDs#pkGVMhm=k zidI<3h_tX6scQ5>iuw?pgCyPE9ZrsnG_(*G;|_bVBWdfH)0*`NP^oAK+<}71t+s^6-%VxM$F4|#!=5moSt@}wiPM(}23l9ux2VmmpU3oo0wiijK zp!k#2YtNcQ2eDxs4>a4X(xq$gl_ox1O7NKGAfDk$b93dq|H@o{w}uO0i~H7VL{umY zu-ICe-dhN_2}AS0)wLeWjog>MLi&(76^3zNx=+eu!;U3dcEEzNs}k zh6FJP1rdLTkDH!AS#l=8ceJdnV*YVTcs$95l!Y#*FHpoJL@db2(c>QE)-L%r$eonV zq%M?jf0zxhY6P3w@*%CQCG;C(VguLmFM4K zQnsRFnxtx2P%}R=3x@tMU?jjA=%%^Vk<4<+Nx|d{Rjqm6{@DfgGr=I4|Cq1X_ge2x z7oc<{g~OAQ&Z!moiU^zc>K>6@7>ZlJ#$qVxFH}lMBd( z9SkIMQ$W+YND!AVr82auqS$kRyZS_t5$e=QbmjrGEqur+o=@5+J=Ta_mnnZ+ zNq$(N%gxA~mO`(Piwq4Ng~wT0d_4oiZf@f2a{G>PzogEi@Ggez$d(^{#b6E%7k#Me z?^o!ojh15`6it6p)$!SjU(HT1>vE?3qfrDZK|--`9eoXgM%<^8gO&uySYA|pBZdeh zEO4v%=Ge7v0-)iu9Ivr`!D1qmT_|Pm>Fh7Nd{AMJMK$h==$qpp1nSF(vtiy$&fq z(>PN-3tykHITKZq~6kfXy3;7?A|*Yi}D&W58X?}Pkj`P5tDM^{J1?fe71J<#;p)-ud_G} z$fQk(hLo}*0w^-FzR{cwlFgWk?4k}5%Jj`zy;EnBM{;!ce$7CJGASnK=J%>9zbKwF zi&3dziCJE^b&jizOeuW_#qG zbc!Kp6c|RXw(A4Urpu+AcbYBjgR+zd$QvcXwn;a+G(&uE)cXi(29F&QeYDaz!o}(C z2j6LAZ{}<4=aX`7sGXhb*};gDpL1S@yEcFYMnk)rG;L{d3f}*qkQ&9SF@Mz+?5%^= zc-X%G%>%vp=+6fwK0|mP2qY?vLJIzo7h-7HQ($;Ur);LKoe5vHMRHa71~v<0 ターゲット(一方向) - ベースアバターが動くと衣装も動きます。衣装を動かしてもベースアバターは動きません。 +このモードは衣装のフィット調整を保持すので、通常の衣装導入なら推奨です。 +* アバター <======> ターゲット(双方向) - ベースアバターが動くと衣装も動きます。衣装を動かすとベースアバターも動きます。 +このモードは、ベースアバターの髪やケモミミを動かすアニメーションを作るなど、高度な用途向けです。 + +「Setup Outfit」で衣装を導入すると、位置追従モードは「アバター =======> ターゲット(一方向)」に自動設定されます。 +必要に応じてインスペクタで変更してください。 ## オブジェクト引用 diff --git a/docs/i18n/ja/docusaurus-plugin-content-docs/current/reference/merge-armature.png b/docs/i18n/ja/docusaurus-plugin-content-docs/current/reference/merge-armature.png index c4c088147f924972e4084acc90970c46f7079f92..67a5aecc994919111f8b3e002e4956bba91b9eac 100644 GIT binary patch literal 70153 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