diff --git a/Assets/UniGLTF/Runtime/UniGLTF/UniGLTFVersion.cs b/Assets/UniGLTF/Runtime/UniGLTF/UniGLTFVersion.cs index a1aad4c02..3e158725e 100644 --- a/Assets/UniGLTF/Runtime/UniGLTF/UniGLTFVersion.cs +++ b/Assets/UniGLTF/Runtime/UniGLTF/UniGLTFVersion.cs @@ -4,8 +4,8 @@ namespace UniGLTF public static partial class UniGLTFVersion { public const int MAJOR = 2; - public const int MINOR = 48; + public const int MINOR = 49; public const int PATCH = 0; - public const string VERSION = "2.48.0"; + public const string VERSION = "2.49.0"; } } diff --git a/Assets/UniGLTF/package.json b/Assets/UniGLTF/package.json index 32d9a03fb..f24d9de5f 100644 --- a/Assets/UniGLTF/package.json +++ b/Assets/UniGLTF/package.json @@ -1,6 +1,6 @@ { "name": "com.vrmc.gltf", - "version": "0.112.0", + "version": "0.113.0", "displayName": "UniGLTF", "description": "GLTF importer and exporter", "unity": "2019.4", @@ -11,7 +11,7 @@ "name": "VRM Consortium" }, "dependencies": { - "com.vrmc.vrmshaders": "0.112.0", + "com.vrmc.vrmshaders": "0.113.0", "com.unity.modules.animation": "1.0.0" }, "samples": [ diff --git a/Assets/VRM/Runtime/Format/VRMVersion.cs b/Assets/VRM/Runtime/Format/VRMVersion.cs index 94b0dab09..a69a315b1 100644 --- a/Assets/VRM/Runtime/Format/VRMVersion.cs +++ b/Assets/VRM/Runtime/Format/VRMVersion.cs @@ -4,8 +4,8 @@ namespace VRM public static partial class VRMVersion { public const int MAJOR = 0; - public const int MINOR = 112; + public const int MINOR = 113; public const int PATCH = 0; - public const string VERSION = "0.112.0"; + public const string VERSION = "0.113.0"; } } diff --git a/Assets/VRM/package.json b/Assets/VRM/package.json index fe20812b2..6b0af7bfa 100644 --- a/Assets/VRM/package.json +++ b/Assets/VRM/package.json @@ -1,6 +1,6 @@ { "name": "com.vrmc.univrm", - "version": "0.112.0", + "version": "0.113.0", "displayName": "VRM", "description": "VRM importer", "unity": "2019.4", @@ -14,8 +14,8 @@ "name": "VRM Consortium" }, "dependencies": { - "com.vrmc.vrmshaders": "0.112.0", - "com.vrmc.gltf": "0.112.0", + "com.vrmc.vrmshaders": "0.113.0", + "com.vrmc.gltf": "0.113.0", "com.unity.ugui": "1.0.0" }, "samples": [ diff --git a/Assets/VRM10/Samples~/URPSample/Settings/UniversalRenderPipelineAsset.asset b/Assets/VRM10/Samples~/URPSample/Settings/UniversalRenderPipelineAsset.asset index a9311a774..09d0fb918 100644 --- a/Assets/VRM10/Samples~/URPSample/Settings/UniversalRenderPipelineAsset.asset +++ b/Assets/VRM10/Samples~/URPSample/Settings/UniversalRenderPipelineAsset.asset @@ -12,8 +12,8 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: bf2edee5c58d82540a51f03df9d42094, type: 3} m_Name: UniversalRenderPipelineAsset m_EditorClassIdentifier: - k_AssetVersion: 6 - k_AssetPreviousVersion: 5 + k_AssetVersion: 9 + k_AssetPreviousVersion: 9 m_RendererType: 1 m_RendererData: {fileID: 0} m_RendererDataList: @@ -27,6 +27,9 @@ MonoBehaviour: m_SupportsHDR: 1 m_MSAA: 4 m_RenderScale: 1 + m_UpscalingFilter: 0 + m_FsrOverrideSharpness: 0 + m_FsrSharpness: 0.92 m_MainLightRenderingMode: 1 m_MainLightShadowsSupported: 1 m_MainLightShadowmapResolution: 2048 @@ -34,21 +37,34 @@ MonoBehaviour: m_AdditionalLightsPerObjectLimit: 4 m_AdditionalLightShadowsSupported: 1 m_AdditionalLightsShadowmapResolution: 512 + m_AdditionalLightsShadowResolutionTierLow: 128 + m_AdditionalLightsShadowResolutionTierMedium: 256 + m_AdditionalLightsShadowResolutionTierHigh: 512 + m_ReflectionProbeBlending: 0 + m_ReflectionProbeBoxProjection: 0 m_ShadowDistance: 50 m_ShadowCascadeCount: 4 m_Cascade2Split: 0.25 m_Cascade3Split: {x: 0.1, y: 0.3} m_Cascade4Split: {x: 0.067, y: 0.2, z: 0.467} + m_CascadeBorder: 0.1 m_ShadowDepthBias: 1 m_ShadowNormalBias: 1 + m_AnyShadowsSupported: 1 m_SoftShadowsSupported: 1 + m_ConservativeEnclosingSphere: 0 + m_NumIterationsEnclosingSphere: 64 + m_AdditionalLightsCookieResolution: 2048 + m_AdditionalLightsCookieFormat: 3 m_UseSRPBatcher: 1 m_SupportsDynamicBatching: 0 m_MixedLightingSupported: 1 + m_SupportsLightLayers: 0 m_DebugLevel: 0 m_UseAdaptivePerformance: 1 m_ColorGradingMode: 0 m_ColorGradingLutSize: 32 + m_UseFastSRGBLinearConversion: 0 m_ShadowType: 1 m_LocalShadowsSupported: 0 m_LocalShadowsAtlasResolution: 256 diff --git a/Assets/VRM10/Samples~/VRM10Viewer/Motions/BvhMotion.cs b/Assets/VRM10/Samples~/VRM10Viewer/Motions/BvhMotion.cs new file mode 100644 index 000000000..0a801d555 --- /dev/null +++ b/Assets/VRM10/Samples~/VRM10Viewer/Motions/BvhMotion.cs @@ -0,0 +1,54 @@ +using System.Collections.Generic; +using System.IO; +using UniHumanoid; +using UnityEngine; + +namespace UniVRM10.VRM10Viewer +{ + public class BvhMotion : IMotion + { + UniHumanoid.BvhImporterContext m_context; + public Transform Root => m_context?.Root.transform; + public SkinnedMeshRenderer m_boxMan; + public SkinnedMeshRenderer BoxMan => m_boxMan; + (INormalizedPoseProvider, ITPoseProvider) m_controlRig; + (INormalizedPoseProvider, ITPoseProvider) IMotion.ControlRig => m_controlRig; + public IDictionary ExpressionMap { get; } = new Dictionary(); + public BvhMotion(UniHumanoid.BvhImporterContext context) + { + m_context = context; + var provider = new AnimatorPoseProvider(m_context.Root.transform, m_context.Root.GetComponent()); + m_controlRig = (provider, provider); + + // create SkinnedMesh for bone visualize + var animator = m_context.Root.GetComponent(); + m_boxMan = SkeletonMeshUtility.CreateRenderer(animator); + var material = new Material(Shader.Find("Standard")); + BoxMan.sharedMaterial = material; + var mesh = BoxMan.sharedMesh; + mesh.name = "box-man"; + } + + public static BvhMotion LoadBvhFromText(string source, string path = "tmp.bvh") + { + var context = new UniHumanoid.BvhImporterContext(); + context.Parse(path, source); + context.Load(); + return new BvhMotion(context); + } + public static BvhMotion LoadBvhFromPath(string path) + { + return LoadBvhFromText(File.ReadAllText(path), path); + } + + public void ShowBoxMan(bool enable) + { + m_boxMan.enabled = enable; + } + + public void Dispose() + { + GameObject.Destroy(m_context.Root); + } + } +} diff --git a/Assets/VRM10/Samples~/VRM10Viewer/VRM10Motion.cs.meta b/Assets/VRM10/Samples~/VRM10Viewer/Motions/BvhMotion.cs.meta similarity index 83% rename from Assets/VRM10/Samples~/VRM10Viewer/VRM10Motion.cs.meta rename to Assets/VRM10/Samples~/VRM10Viewer/Motions/BvhMotion.cs.meta index a3c573986..32ed60374 100644 --- a/Assets/VRM10/Samples~/VRM10Viewer/VRM10Motion.cs.meta +++ b/Assets/VRM10/Samples~/VRM10Viewer/Motions/BvhMotion.cs.meta @@ -1,5 +1,5 @@ fileFormatVersion: 2 -guid: 08f06b12436bf594b9982c6a8ec71374 +guid: 8bed75b815cb24843a50063a9dd7376e MonoImporter: externalObjects: {} serializedVersion: 2 diff --git a/Assets/VRM10/Samples~/VRM10Viewer/Motions/IMotion.cs b/Assets/VRM10/Samples~/VRM10Viewer/Motions/IMotion.cs new file mode 100644 index 000000000..656548b24 --- /dev/null +++ b/Assets/VRM10/Samples~/VRM10Viewer/Motions/IMotion.cs @@ -0,0 +1,14 @@ +using System; +using System.Collections.Generic; +using UnityEngine; + +namespace UniVRM10.VRM10Viewer +{ + public interface IMotion : IDisposable + { + (INormalizedPoseProvider, ITPoseProvider) ControlRig { get; } + IDictionary ExpressionMap { get; } + + void ShowBoxMan(bool enable); + } +} diff --git a/Assets/VRM10/Samples~/VRM10Viewer/Motions/IMotion.cs.meta b/Assets/VRM10/Samples~/VRM10Viewer/Motions/IMotion.cs.meta new file mode 100644 index 000000000..bdc7beafd --- /dev/null +++ b/Assets/VRM10/Samples~/VRM10Viewer/Motions/IMotion.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: bd8db8a4bdc3e7f40a0a7a1bcd554137 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/VRM10/Samples~/VRM10Viewer/Motions/VrmAnimation.cs b/Assets/VRM10/Samples~/VRM10Viewer/Motions/VrmAnimation.cs new file mode 100644 index 000000000..2954251b5 --- /dev/null +++ b/Assets/VRM10/Samples~/VRM10Viewer/Motions/VrmAnimation.cs @@ -0,0 +1,191 @@ +using System.Collections.Generic; +using System.Threading.Tasks; +using UniGLTF; +using UniJSON; +using UnityEngine; +using VRMShaders; + +namespace UniVRM10.VRM10Viewer +{ + public class VrmAnimation : IMotion + { + private readonly VrmAnimationInstance m_instance; + + (INormalizedPoseProvider, ITPoseProvider) IMotion.ControlRig => m_instance.ControlRig; + IDictionary IMotion.ExpressionMap => m_instance.ExpressionMap; + + public VrmAnimation(VrmAnimationInstance instance, + Vector3 hips = default, Dictionary map = null) + { + m_instance = instance; + if (instance.GetComponent() is Animation animation) + { + if (animation != null) + { + animation.Play(); + } + else + { + // experimental: set pose + var animator = instance.GetComponent(); + animator.GetBoneTransform(HumanBodyBones.Hips).localPosition = hips; + foreach (var kv in map) + { + var t = animator.GetBoneTransform(kv.Key); + if (t != null) + { + t.localRotation = kv.Value; + } + } + } + } + } + + public void ShowBoxMan(bool enable) + { + if (m_instance.BoxMan != null) + { + m_instance.BoxMan.enabled = enable; + } + } + + public void Dispose() + { + if (m_instance.BoxMan != null) + { + GameObject.Destroy(m_instance.BoxMan.gameObject); + } + } + + public static async Task LoadVrmAnimationFromPathAsync(string path) + { + using GltfData data = new AutoGltfFileParser(path).Parse(); + using var loader = new VrmAnimationImporter(data); + var instance = await loader.LoadAsync(new ImmediateCaller()); + return new VrmAnimation(instance.GetComponent()); + } + + static Vector3 ToVec3(JsonNode j) + { + return new Vector3(-j[0].GetSingle(), j[1].GetSingle(), j[2].GetSingle()); + } + + static Quaternion ToQuat(JsonNode j) + { + return new Quaternion(j[0].GetSingle(), -j[1].GetSingle(), -j[2].GetSingle(), j[3].GetSingle()); + } + + static (Vector3, Dictionary) GetPose(JsonNode humanoid) + { + Vector3 root = default; + var map = new Dictionary(); + + if (humanoid.TryGet("translation", out var translation)) + { + root = ToVec3(translation); + } + if (humanoid.TryGet("rotations", out var rotations)) + { + foreach (var kv in rotations.ObjectItems()) + { + switch (kv.Key.GetString()) + { + case "hips": map.Add(HumanBodyBones.Hips, ToQuat(kv.Value)); break; + case "spine": map.Add(HumanBodyBones.Spine, ToQuat(kv.Value)); break; + case "chest": map.Add(HumanBodyBones.Chest, ToQuat(kv.Value)); break; + case "upperChest": map.Add(HumanBodyBones.UpperChest, ToQuat(kv.Value)); break; + case "neck": map.Add(HumanBodyBones.Neck, ToQuat(kv.Value)); break; + case "head": map.Add(HumanBodyBones.Head, ToQuat(kv.Value)); break; + // case "leftEye": map.Add(HumanBodyBones.leftEye, ToQuat(kv.Value)); break; + // case "rightEye": map.Add(HumanBodyBones.rightEye, ToQuat(kv.Value)); break; + case "jaw": map.Add(HumanBodyBones.Jaw, ToQuat(kv.Value)); break; + case "leftShoulder": map.Add(HumanBodyBones.LeftShoulder, ToQuat(kv.Value)); break; + case "leftUpperArm": map.Add(HumanBodyBones.LeftUpperArm, ToQuat(kv.Value)); break; + case "leftLowerArm": map.Add(HumanBodyBones.LeftLowerArm, ToQuat(kv.Value)); break; + case "leftHand": map.Add(HumanBodyBones.LeftHand, ToQuat(kv.Value)); break; + case "rightShoulder": map.Add(HumanBodyBones.RightShoulder, ToQuat(kv.Value)); break; + case "rightUpperArm": map.Add(HumanBodyBones.RightUpperArm, ToQuat(kv.Value)); break; + case "rightLowerArm": map.Add(HumanBodyBones.RightLowerArm, ToQuat(kv.Value)); break; + case "rightHand": map.Add(HumanBodyBones.RightHand, ToQuat(kv.Value)); break; + case "leftUpperLeg": map.Add(HumanBodyBones.LeftUpperLeg, ToQuat(kv.Value)); break; + case "leftLowerLeg": map.Add(HumanBodyBones.LeftLowerLeg, ToQuat(kv.Value)); break; + case "leftFoot": map.Add(HumanBodyBones.LeftFoot, ToQuat(kv.Value)); break; + case "leftToes": map.Add(HumanBodyBones.LeftToes, ToQuat(kv.Value)); break; + case "rightUpperLeg": map.Add(HumanBodyBones.RightUpperLeg, ToQuat(kv.Value)); break; + case "rightLowerLeg": map.Add(HumanBodyBones.RightLowerLeg, ToQuat(kv.Value)); break; + case "rightFoot": map.Add(HumanBodyBones.RightFoot, ToQuat(kv.Value)); break; + case "rightToes": map.Add(HumanBodyBones.RightToes, ToQuat(kv.Value)); break; + case "leftThumbMetacarpal": map.Add(HumanBodyBones.LeftThumbProximal, ToQuat(kv.Value)); break; + case "leftThumbProximal": map.Add(HumanBodyBones.LeftThumbIntermediate, ToQuat(kv.Value)); break; + case "leftThumbDistal": map.Add(HumanBodyBones.LeftThumbDistal, ToQuat(kv.Value)); break; + case "leftIndexProximal": map.Add(HumanBodyBones.LeftIndexProximal, ToQuat(kv.Value)); break; + case "leftIndexIntermediate": map.Add(HumanBodyBones.LeftIndexIntermediate, ToQuat(kv.Value)); break; + case "leftIndexDistal": map.Add(HumanBodyBones.LeftIndexDistal, ToQuat(kv.Value)); break; + case "leftMiddleProximal": map.Add(HumanBodyBones.LeftMiddleProximal, ToQuat(kv.Value)); break; + case "leftMiddleIntermediate": map.Add(HumanBodyBones.LeftMiddleIntermediate, ToQuat(kv.Value)); break; + case "leftMiddleDistal": map.Add(HumanBodyBones.LeftMiddleDistal, ToQuat(kv.Value)); break; + case "leftRingProximal": map.Add(HumanBodyBones.LeftRingProximal, ToQuat(kv.Value)); break; + case "leftRingIntermediate": map.Add(HumanBodyBones.LeftRingIntermediate, ToQuat(kv.Value)); break; + case "leftRingDistal": map.Add(HumanBodyBones.LeftRingDistal, ToQuat(kv.Value)); break; + case "leftLittleProximal": map.Add(HumanBodyBones.LeftLittleProximal, ToQuat(kv.Value)); break; + case "leftLittleIntermediate": map.Add(HumanBodyBones.LeftLittleIntermediate, ToQuat(kv.Value)); break; + case "leftLittleDistal": map.Add(HumanBodyBones.LeftLittleDistal, ToQuat(kv.Value)); break; + case "rightThumbMetacarpal": map.Add(HumanBodyBones.RightThumbProximal, ToQuat(kv.Value)); break; + case "rightThumbProximal": map.Add(HumanBodyBones.RightThumbIntermediate, ToQuat(kv.Value)); break; + case "rightThumbDistal": map.Add(HumanBodyBones.RightThumbDistal, ToQuat(kv.Value)); break; + case "rightIndexProximal": map.Add(HumanBodyBones.RightIndexProximal, ToQuat(kv.Value)); break; + case "rightIndexIntermediate": map.Add(HumanBodyBones.RightIndexIntermediate, ToQuat(kv.Value)); break; + case "rightIndexDistal": map.Add(HumanBodyBones.RightIndexDistal, ToQuat(kv.Value)); break; + case "rightMiddleProximal": map.Add(HumanBodyBones.RightMiddleProximal, ToQuat(kv.Value)); break; + case "rightMiddleIntermediate": map.Add(HumanBodyBones.RightMiddleIntermediate, ToQuat(kv.Value)); break; + case "rightMiddleDistal": map.Add(HumanBodyBones.RightMiddleDistal, ToQuat(kv.Value)); break; + case "rightRingProximal": map.Add(HumanBodyBones.RightRingProximal, ToQuat(kv.Value)); break; + case "rightRingIntermediate": map.Add(HumanBodyBones.RightRingIntermediate, ToQuat(kv.Value)); break; + case "rightRingDistal": map.Add(HumanBodyBones.RightRingDistal, ToQuat(kv.Value)); break; + case "rightLittleProximal": map.Add(HumanBodyBones.RightLittleProximal, ToQuat(kv.Value)); break; + case "rightLittleIntermediate": map.Add(HumanBodyBones.RightLittleIntermediate, ToQuat(kv.Value)); break; + case "rightLittleDistal": map.Add(HumanBodyBones.RightLittleDistal, ToQuat(kv.Value)); break; + } + } + } + + return (root, map); + } + + public static async Task LoadVrmAnimationPose(string text) + { + using GltfData data = GlbLowLevelParser.ParseGltf( + "tmp.vrma", + text, + new List(), // .gltf file has no chunks. + new FileSystemStorage("_dummy_root_"), // .gltf file has resource path at file system. + new MigrationFlags() + ); + using var loader = new VrmAnimationImporter(data); + var instance = await loader.LoadAsync(new ImmediateCaller()); + + if (data.GLTF.extensions is UniGLTF.glTFExtensionImport extensions) + { + foreach (var kv in extensions.ObjectItems()) + { + if (kv.Key.GetString() == "VRMC_vrm_animation") + { + if (kv.Value.TryGet("extensions", out var inner_extensions)) + { + if (inner_extensions.TryGet("VRMC_vrm_pose", out var pose)) + { + if (pose.TryGet("humanoid", out var humanoid)) + { + var (root, map) = GetPose(humanoid); + return new VrmAnimation(instance.GetComponent(), root, map); + } + } + } + } + } + } + + throw new System.Exception("no pose"); + } + } +} diff --git a/Assets/VRM10/Samples~/VRM10Viewer/Motions/VrmAnimation.cs.meta b/Assets/VRM10/Samples~/VRM10Viewer/Motions/VrmAnimation.cs.meta new file mode 100644 index 000000000..1ea946b9b --- /dev/null +++ b/Assets/VRM10/Samples~/VRM10Viewer/Motions/VrmAnimation.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: f0180f844d447bc45889d6c72a2d4ec4 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/VRM10/Samples~/VRM10Viewer/VRM10Motion.cs b/Assets/VRM10/Samples~/VRM10Viewer/VRM10Motion.cs deleted file mode 100644 index 62b293e1a..000000000 --- a/Assets/VRM10/Samples~/VRM10Viewer/VRM10Motion.cs +++ /dev/null @@ -1,298 +0,0 @@ -using System; -using System.Collections.Generic; -using System.IO; -using System.Linq; -using System.Threading.Tasks; -using UniGLTF; -using UniHumanoid; -using UniJSON; -using UnityEngine; -using VRMShaders; - -namespace UniVRM10.VRM10Viewer -{ - public interface IMotion : IDisposable - { - (INormalizedPoseProvider, ITPoseProvider) ControlRig { get; } - IDictionary ExpressionMap { get; } - - void ShowBoxMan(bool enable); - } - - public class BvhMotion : IMotion - { - UniHumanoid.BvhImporterContext m_context; - public Transform Root => m_context?.Root.transform; - public SkinnedMeshRenderer m_boxMan; - public SkinnedMeshRenderer BoxMan => m_boxMan; - (INormalizedPoseProvider, ITPoseProvider) m_controlRig; - (INormalizedPoseProvider, ITPoseProvider) IMotion.ControlRig => m_controlRig; - public IDictionary ExpressionMap { get; } = new Dictionary(); - public BvhMotion(UniHumanoid.BvhImporterContext context) - { - m_context = context; - var provider = new AnimatorPoseProvider(m_context.Root.transform, m_context.Root.GetComponent()); - m_controlRig = (provider, provider); - - // create SkinnedMesh for bone visualize - var animator = m_context.Root.GetComponent(); - m_boxMan = SkeletonMeshUtility.CreateRenderer(animator); - var material = new Material(Shader.Find("Standard")); - BoxMan.sharedMaterial = material; - var mesh = BoxMan.sharedMesh; - mesh.name = "box-man"; - } - - public static BvhMotion LoadBvhFromText(string source, string path = "tmp.bvh") - { - var context = new UniHumanoid.BvhImporterContext(); - context.Parse(path, source); - context.Load(); - return new BvhMotion(context); - } - public static BvhMotion LoadBvhFromPath(string path) - { - return LoadBvhFromText(File.ReadAllText(path), path); - } - - public void ShowBoxMan(bool enable) - { - m_boxMan.enabled = enable; - } - - public void Dispose() - { - GameObject.Destroy(m_context.Root); - } - } - - public class VrmAnimation : IMotion - { - UniGLTF.RuntimeGltfInstance m_instance; - public SkinnedMeshRenderer m_boxMan; - public SkinnedMeshRenderer BoxMan => m_boxMan; - (INormalizedPoseProvider, ITPoseProvider) m_controlRig; - (INormalizedPoseProvider, ITPoseProvider) IMotion.ControlRig => m_controlRig; - public IDictionary ExpressionMap { get; } = new Dictionary(); - - public VrmAnimation(UniGLTF.RuntimeGltfInstance instance) - { - m_instance = instance; - if (instance.GetComponent() is Animation animation) - { - animation.Play(); - } - - var humanoid = instance.gameObject.AddComponent(); - if (humanoid.AssignBonesFromAnimator()) - { - var provider = new InitRotationPoseProvider(instance.transform, humanoid); - m_controlRig = (provider, provider); - - // create SkinnedMesh for bone visualize - var animator = instance.GetComponent(); - m_boxMan = SkeletonMeshUtility.CreateRenderer(animator); - var material = new Material(Shader.Find("Standard")); - BoxMan.sharedMaterial = material; - var mesh = BoxMan.sharedMesh; - mesh.name = "box-man"; - } - } - - public void ShowBoxMan(bool enable) - { - if (m_boxMan != null) - { - m_boxMan.enabled = enable; - } - } - - public void Dispose() - { - if (m_boxMan != null) - { - GameObject.Destroy(m_boxMan.gameObject); - } - } - - static int? GetNodeIndex(UniGLTF.Extensions.VRMC_vrm_animation.Humanoid humanoid, HumanBodyBones bone) - { - switch (bone) - { - case HumanBodyBones.Hips: return humanoid.HumanBones.Hips?.Node; - case HumanBodyBones.LeftUpperLeg: return humanoid.HumanBones.LeftUpperLeg?.Node; - case HumanBodyBones.RightUpperLeg: return humanoid.HumanBones.RightUpperLeg?.Node; - case HumanBodyBones.LeftLowerLeg: return humanoid.HumanBones.LeftLowerLeg?.Node; - case HumanBodyBones.RightLowerLeg: return humanoid.HumanBones.RightLowerLeg?.Node; - case HumanBodyBones.LeftFoot: return humanoid.HumanBones.LeftFoot?.Node; - case HumanBodyBones.RightFoot: return humanoid.HumanBones.RightFoot?.Node; - case HumanBodyBones.Spine: return humanoid.HumanBones.Spine?.Node; - case HumanBodyBones.Chest: return humanoid.HumanBones.Chest?.Node; - case HumanBodyBones.Neck: return humanoid.HumanBones.Neck?.Node; - case HumanBodyBones.Head: return humanoid.HumanBones.Head?.Node; - case HumanBodyBones.LeftShoulder: return humanoid.HumanBones.LeftShoulder?.Node; - case HumanBodyBones.RightShoulder: return humanoid.HumanBones.RightShoulder?.Node; - case HumanBodyBones.LeftUpperArm: return humanoid.HumanBones.LeftUpperArm?.Node; - case HumanBodyBones.RightUpperArm: return humanoid.HumanBones.RightUpperArm?.Node; - case HumanBodyBones.LeftLowerArm: return humanoid.HumanBones.LeftLowerArm?.Node; - case HumanBodyBones.RightLowerArm: return humanoid.HumanBones.RightLowerArm?.Node; - case HumanBodyBones.LeftHand: return humanoid.HumanBones.LeftHand?.Node; - case HumanBodyBones.RightHand: return humanoid.HumanBones.RightHand?.Node; - case HumanBodyBones.LeftToes: return humanoid.HumanBones.LeftToes?.Node; - case HumanBodyBones.RightToes: return humanoid.HumanBones.RightToes?.Node; - // case HumanBodyBones.LeftEye: return humanoid.HumanBones.LeftEye?.Node; - // case HumanBodyBones.RightEye: return humanoid.HumanBones.RightEye?.Node; - case HumanBodyBones.Jaw: return humanoid.HumanBones.Jaw?.Node; - case HumanBodyBones.LeftThumbProximal: return humanoid.HumanBones.LeftThumbMetacarpal?.Node; // Metacarpal - case HumanBodyBones.LeftThumbIntermediate: return humanoid.HumanBones.LeftThumbProximal?.Node; // Proximal - case HumanBodyBones.LeftThumbDistal: return humanoid.HumanBones.LeftThumbDistal?.Node; - case HumanBodyBones.LeftIndexProximal: return humanoid.HumanBones.LeftIndexProximal?.Node; - case HumanBodyBones.LeftIndexIntermediate: return humanoid.HumanBones.LeftIndexIntermediate?.Node; - case HumanBodyBones.LeftIndexDistal: return humanoid.HumanBones.LeftIndexDistal?.Node; - case HumanBodyBones.LeftMiddleProximal: return humanoid.HumanBones.LeftMiddleProximal?.Node; - case HumanBodyBones.LeftMiddleIntermediate: return humanoid.HumanBones.LeftMiddleIntermediate?.Node; - case HumanBodyBones.LeftMiddleDistal: return humanoid.HumanBones.LeftMiddleDistal?.Node; - case HumanBodyBones.LeftRingProximal: return humanoid.HumanBones.LeftRingProximal?.Node; - case HumanBodyBones.LeftRingIntermediate: return humanoid.HumanBones.LeftRingIntermediate?.Node; - case HumanBodyBones.LeftRingDistal: return humanoid.HumanBones.LeftRingDistal?.Node; - case HumanBodyBones.LeftLittleProximal: return humanoid.HumanBones.LeftLittleProximal?.Node; - case HumanBodyBones.LeftLittleIntermediate: return humanoid.HumanBones.LeftLittleIntermediate?.Node; - case HumanBodyBones.LeftLittleDistal: return humanoid.HumanBones.LeftLittleDistal?.Node; - case HumanBodyBones.RightThumbProximal: return humanoid.HumanBones.RightThumbMetacarpal?.Node; // Metacarpal - case HumanBodyBones.RightThumbIntermediate: return humanoid.HumanBones.RightThumbProximal?.Node; // Proximal - case HumanBodyBones.RightThumbDistal: return humanoid.HumanBones.RightThumbDistal?.Node; - case HumanBodyBones.RightIndexProximal: return humanoid.HumanBones.RightIndexProximal?.Node; - case HumanBodyBones.RightIndexIntermediate: return humanoid.HumanBones.RightIndexIntermediate?.Node; - case HumanBodyBones.RightIndexDistal: return humanoid.HumanBones.RightIndexDistal?.Node; - case HumanBodyBones.RightMiddleProximal: return humanoid.HumanBones.RightMiddleProximal?.Node; - case HumanBodyBones.RightMiddleIntermediate: return humanoid.HumanBones.RightMiddleIntermediate?.Node; - case HumanBodyBones.RightMiddleDistal: return humanoid.HumanBones.RightMiddleDistal?.Node; - case HumanBodyBones.RightRingProximal: return humanoid.HumanBones.RightRingProximal?.Node; - case HumanBodyBones.RightRingIntermediate: return humanoid.HumanBones.RightRingIntermediate?.Node; - case HumanBodyBones.RightRingDistal: return humanoid.HumanBones.RightRingDistal?.Node; - case HumanBodyBones.RightLittleProximal: return humanoid.HumanBones.RightLittleProximal?.Node; - case HumanBodyBones.RightLittleIntermediate: return humanoid.HumanBones.RightLittleIntermediate?.Node; - case HumanBodyBones.RightLittleDistal: return humanoid.HumanBones.RightLittleDistal?.Node; - case HumanBodyBones.UpperChest: return humanoid.HumanBones.UpperChest?.Node; - } - return default; - } - - static Dictionary GetHumanMap(GltfData data, IReadOnlyList nodes) - { - var humanMap = new Dictionary(); - if (data.GLTF.extensions is UniGLTF.glTFExtensionImport extensions) - { - foreach (var kv in extensions.ObjectItems()) - { - if (kv.Key.GetString() == "VRMC_vrm_animation") - { - var animation = UniGLTF.Extensions.VRMC_vrm_animation.GltfDeserializer.Deserialize(kv.Value); - if (animation.Humanoid != null) - { - foreach (HumanBodyBones bone in UniGLTF.Utils.CachedEnum.GetValues()) - { - // Debug.Log($"{bone} => {index}"); - var node = GetNodeIndex(animation.Humanoid, bone); - if (node.HasValue) - { - humanMap.Add(bone, nodes[node.Value]); - } - } - } - } - } - } - return humanMap; - } - - static List<(ExpressionKey, Transform)> GetExpressions(GltfData data, IReadOnlyList nodes) - { - var expressions = new List<(ExpressionKey, Transform)>(); - if (data.GLTF.extensions is UniGLTF.glTFExtensionImport extensions) - { - foreach (var kv in extensions.ObjectItems()) - { - if (kv.Key.GetString() == "VRMC_vrm_animation") - { - var animation = UniGLTF.Extensions.VRMC_vrm_animation.GltfDeserializer.Deserialize(kv.Value); - if (animation.Expressions != null) - { - foreach (ExpressionPreset preset in UniGLTF.Utils.CachedEnum.GetValues()) - { - var node = GetNodeIndex(animation.Expressions, preset); - if (node.HasValue) - { - expressions.Add((ExpressionKey.CreateFromPreset(preset), nodes[node.Value])); - } - } - } - } - } - } - return expressions; - } - - static int? GetNodeIndex(UniGLTF.Extensions.VRMC_vrm_animation.Expressions expressions, ExpressionPreset preset) - { - switch (preset) - { - case ExpressionPreset.happy: return expressions.Preset?.Happy?.Node; - case ExpressionPreset.angry: return expressions.Preset?.Angry?.Node; - case ExpressionPreset.sad: return expressions.Preset?.Sad?.Node; - case ExpressionPreset.relaxed: return expressions.Preset?.Relaxed?.Node; - case ExpressionPreset.surprised: return expressions.Preset?.Surprised?.Node; - case ExpressionPreset.aa: return expressions.Preset?.Aa?.Node; - case ExpressionPreset.ih: return expressions.Preset?.Ih?.Node; - case ExpressionPreset.ou: return expressions.Preset?.Ou?.Node; - case ExpressionPreset.ee: return expressions.Preset?.Ee?.Node; - case ExpressionPreset.oh: return expressions.Preset?.Oh?.Node; - case ExpressionPreset.blink: return expressions.Preset?.Blink?.Node; - case ExpressionPreset.blinkLeft: return expressions.Preset?.BlinkLeft?.Node; - case ExpressionPreset.blinkRight: return expressions.Preset?.BlinkRight?.Node; - case ExpressionPreset.lookUp: return expressions.Preset?.LookUp?.Node; - case ExpressionPreset.lookDown: return expressions.Preset?.LookDown?.Node; - case ExpressionPreset.lookLeft: return expressions.Preset?.LookLeft?.Node; - case ExpressionPreset.lookRight: return expressions.Preset?.LookRight?.Node; - case ExpressionPreset.neutral: return expressions.Preset?.Neutral?.Node; - } - return default; - } - - public static async Task LoadVrmAnimationFromPathAsync(string path) - { - // - // GetHumanoid Mapping - // - using (GltfData data = new AutoGltfFileParser(path).Parse()) - using (var loader = new UniGLTF.ImporterContext(data)) - { - loader.InvertAxis = Axes.X; - var instance = await loader.LoadAsync(new ImmediateCaller()); - - // VRMA-humanoid - var humanMap = GetHumanMap(data, loader.Nodes); - if (humanMap.Count > 0) - { - var description = AvatarDescription.Create(humanMap); - // - // avatar - // - var avatar = description.CreateAvatar(instance.Root.transform); - avatar.name = "Avatar"; - // AvatarDescription = description; - var animator = instance.gameObject.AddComponent(); - animator.avatar = avatar; - } - - // VRMA-expression - var animation = new VrmAnimation(instance); - foreach (var (preset, transform) in GetExpressions(data, loader.Nodes)) - { - animation.ExpressionMap.Add(preset, transform); - } - return animation; - } - } - } -} diff --git a/Assets/VRM10/Samples~/VRM10Viewer/VRM10Viewer.unity b/Assets/VRM10/Samples~/VRM10Viewer/VRM10Viewer.unity index ec6186e61..1346fb42d 100644 --- a/Assets/VRM10/Samples~/VRM10Viewer/VRM10Viewer.unity +++ b/Assets/VRM10/Samples~/VRM10Viewer/VRM10Viewer.unity @@ -152,6 +152,7 @@ RectTransform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 1189866557} m_Father: {fileID: 1767738854} @@ -228,9 +229,10 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 339774397} - m_RootOrder: 13 + m_RootOrder: 14 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 0, y: 0} @@ -305,6 +307,7 @@ RectTransform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 339774397} - {fileID: 1087391117} @@ -346,6 +349,7 @@ RectTransform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 1270311309} m_Father: {fileID: 602093298} @@ -423,6 +427,7 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 1923525315} m_Father: {fileID: 339774397} @@ -543,6 +548,7 @@ RectTransform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 450042406} m_Father: {fileID: 935566651} @@ -619,6 +625,7 @@ RectTransform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 2010083454} m_RootOrder: 0 @@ -696,6 +703,7 @@ MonoBehaviour: m_Script: {fileID: 11500000, guid: 4f231c4fb786f3946a6b90b886c48677, type: 3} m_Name: m_EditorClassIdentifier: + m_SendPointerHoverToParent: 1 m_HorizontalAxis: Horizontal m_VerticalAxis: Vertical m_SubmitButton: Submit @@ -728,6 +736,7 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 0} m_RootOrder: 5 @@ -761,9 +770,10 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 339774397} - m_RootOrder: 3 + m_RootOrder: 4 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 0, y: 0} @@ -851,6 +861,7 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 1.2, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 1629460662} m_Father: {fileID: 0} @@ -884,6 +895,7 @@ RectTransform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 452923209} m_RootOrder: 0 @@ -959,6 +971,7 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 800895692} m_Father: {fileID: 644517400} @@ -1039,6 +1052,7 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 644517400} m_RootOrder: 8 @@ -1119,6 +1133,7 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 0} m_RootOrder: 1 @@ -1134,6 +1149,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -1215,10 +1231,12 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 1621794411} - {fileID: 2009818432} - {fileID: 168425995} + - {fileID: 1307084561} - {fileID: 224350191} - {fileID: 1791103379} - {fileID: 1311520909} @@ -1332,6 +1350,7 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 1434602809} m_RootOrder: 0 @@ -1449,6 +1468,7 @@ RectTransform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 175751363} m_RootOrder: 0 @@ -1486,6 +1506,7 @@ RectTransform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 251940584} m_Father: {fileID: 1438613464} @@ -1562,6 +1583,7 @@ RectTransform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 1166391799} m_RootOrder: 0 @@ -1637,6 +1659,7 @@ RectTransform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 644517400} m_RootOrder: 0 @@ -1716,6 +1739,7 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 1922159876} m_RootOrder: 0 @@ -1795,9 +1819,10 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 339774397} - m_RootOrder: 9 + m_RootOrder: 10 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 0, y: 0} @@ -1873,11 +1898,12 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 154330168} - {fileID: 1954133885} m_Father: {fileID: 339774397} - m_RootOrder: 15 + m_RootOrder: 16 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 0, y: 0} @@ -1959,11 +1985,12 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 2010083454} - {fileID: 1081455630} m_Father: {fileID: 339774397} - m_RootOrder: 11 + m_RootOrder: 12 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 0, y: 0} @@ -2046,6 +2073,7 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 1767706907} m_RootOrder: 1 @@ -2126,6 +2154,7 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 491613101} - {fileID: 1636340564} @@ -2245,6 +2274,7 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 852999695} m_Father: {fileID: 644517400} @@ -2325,6 +2355,7 @@ RectTransform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 284921871} m_RootOrder: 0 @@ -2400,6 +2431,7 @@ MeshRenderer: m_CastShadows: 1 m_ReceiveShadows: 1 m_DynamicOccludee: 1 + m_StaticShadowCaster: 0 m_MotionVectors: 1 m_LightProbeUsage: 1 m_ReflectionProbeUsage: 1 @@ -2461,6 +2493,7 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 0.1, y: 0.1, z: 0.1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 0} m_RootOrder: 2 @@ -2509,6 +2542,7 @@ RectTransform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 1181308132} m_Father: {fileID: 644517400} @@ -2589,6 +2623,7 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 1987265555} m_Father: {fileID: 1767706907} @@ -2665,6 +2700,7 @@ RectTransform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 854014594} m_Father: {fileID: 644517400} @@ -2745,6 +2781,7 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 773923919} m_RootOrder: 0 @@ -2824,6 +2861,7 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 827174941} m_RootOrder: 0 @@ -2875,6 +2913,88 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 854014593} m_CullTransparentMesh: 0 +--- !u!1 &910859647 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 910859648} + - component: {fileID: 910859650} + - component: {fileID: 910859649} + m_Layer: 5 + m_Name: Text + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &910859648 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 910859647} + m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: [] + m_Father: {fileID: 1307084561} + m_RootOrder: 0 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 1, y: 1} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 0, y: 0} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &910859649 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 910859647} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 5f7201a12d95ffc409449d95f23cf332, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 0.19607843, g: 0.19607843, b: 0.19607843, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_FontData: + m_Font: {fileID: 10102, guid: 0000000000000000e000000000000000, type: 0} + m_FontSize: 14 + m_FontStyle: 0 + m_BestFit: 0 + m_MinSize: 10 + m_MaxSize: 40 + m_Alignment: 4 + m_AlignByGeometry: 0 + m_RichText: 1 + m_HorizontalOverflow: 0 + m_VerticalOverflow: 0 + m_LineSpacing: 1 + m_Text: 'Paste Pose + +' +--- !u!222 &910859650 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 910859647} + m_CullTransparentMesh: 0 --- !u!1 &926214995 GameObject: m_ObjectHideFlags: 0 @@ -2903,6 +3023,7 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 644517400} m_RootOrder: 15 @@ -2982,6 +3103,7 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 933018278} m_Father: {fileID: 644517400} @@ -3062,6 +3184,7 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 928757301} m_RootOrder: 0 @@ -3141,6 +3264,7 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 1242458543} m_Father: {fileID: 644517400} @@ -3268,11 +3392,12 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 175751363} - {fileID: 1904789319} m_Father: {fileID: 339774397} - m_RootOrder: 10 + m_RootOrder: 11 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 0, y: 0} @@ -3307,9 +3432,10 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 339774397} - m_RootOrder: 8 + m_RootOrder: 9 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 0, y: 0} @@ -3386,6 +3512,7 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 1476033061} m_Father: {fileID: 644517400} @@ -3466,6 +3593,7 @@ RectTransform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 1767738854} m_RootOrder: 1 @@ -3545,6 +3673,7 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 2105159132} m_RootOrder: 0 @@ -3624,6 +3753,7 @@ RectTransform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 634488421} m_RootOrder: 1 @@ -3703,6 +3833,7 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 124675794} m_RootOrder: 1 @@ -3782,6 +3913,7 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 1199975013} m_RootOrder: 0 @@ -3903,6 +4035,7 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 1636340564} m_RootOrder: 0 @@ -3940,6 +4073,7 @@ RectTransform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 1791103379} m_RootOrder: 1 @@ -4019,6 +4153,7 @@ RectTransform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 488934505} m_Father: {fileID: 1791103379} @@ -4095,6 +4230,7 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 1289294208} m_Father: {fileID: 644517400} @@ -4175,6 +4311,7 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 806723449} m_RootOrder: 0 @@ -4254,6 +4391,7 @@ RectTransform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 62367395} m_RootOrder: 0 @@ -4329,6 +4467,7 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 1104290797} m_Father: {fileID: 644517400} @@ -4409,6 +4548,7 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 935554081} m_RootOrder: 0 @@ -4488,6 +4628,7 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 124675794} m_RootOrder: 3 @@ -4567,6 +4708,7 @@ RectTransform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 154330168} m_RootOrder: 0 @@ -4642,6 +4784,7 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 1172469239} m_RootOrder: 0 @@ -4693,6 +4836,128 @@ CanvasRenderer: m_PrefabAsset: {fileID: 0} m_GameObject: {fileID: 1289294207} m_CullTransparentMesh: 0 +--- !u!1 &1307084560 +GameObject: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + serializedVersion: 6 + m_Component: + - component: {fileID: 1307084561} + - component: {fileID: 1307084563} + - component: {fileID: 1307084562} + - component: {fileID: 1307084564} + m_Layer: 5 + m_Name: PastePose + m_TagString: Untagged + m_Icon: {fileID: 0} + m_NavMeshLayer: 0 + m_StaticEditorFlags: 0 + m_IsActive: 1 +--- !u!224 &1307084561 +RectTransform: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1307084560} + m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} + m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 + m_Children: + - {fileID: 910859648} + m_Father: {fileID: 339774397} + m_RootOrder: 3 + m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} + m_AnchorMin: {x: 0, y: 0} + m_AnchorMax: {x: 0, y: 0} + m_AnchoredPosition: {x: 0, y: 0} + m_SizeDelta: {x: 162, y: 30} + m_Pivot: {x: 0.5, y: 0.5} +--- !u!114 &1307084562 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1307084560} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: fe87c0e1cc204ed48ad3b37840f39efc, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Material: {fileID: 0} + m_Color: {r: 1, g: 1, b: 1, a: 1} + m_RaycastTarget: 1 + m_RaycastPadding: {x: 0, y: 0, z: 0, w: 0} + m_Maskable: 1 + m_OnCullStateChanged: + m_PersistentCalls: + m_Calls: [] + m_Sprite: {fileID: 10905, guid: 0000000000000000f000000000000000, type: 0} + m_Type: 1 + m_PreserveAspect: 0 + m_FillCenter: 1 + m_FillMethod: 4 + m_FillAmount: 1 + m_FillClockwise: 1 + m_FillOrigin: 0 + m_UseSpriteMesh: 0 + m_PixelsPerUnitMultiplier: 1 +--- !u!222 &1307084563 +CanvasRenderer: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1307084560} + m_CullTransparentMesh: 0 +--- !u!114 &1307084564 +MonoBehaviour: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1307084560} + m_Enabled: 1 + m_EditorHideFlags: 0 + m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} + m_Name: + m_EditorClassIdentifier: + m_Navigation: + m_Mode: 3 + m_WrapAround: 0 + m_SelectOnUp: {fileID: 0} + m_SelectOnDown: {fileID: 0} + m_SelectOnLeft: {fileID: 0} + m_SelectOnRight: {fileID: 0} + m_Transition: 1 + m_Colors: + m_NormalColor: {r: 1, g: 1, b: 1, a: 1} + m_HighlightedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_PressedColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 1} + m_SelectedColor: {r: 0.9607843, g: 0.9607843, b: 0.9607843, a: 1} + m_DisabledColor: {r: 0.78431374, g: 0.78431374, b: 0.78431374, a: 0.5019608} + m_ColorMultiplier: 1 + m_FadeDuration: 0.1 + m_SpriteState: + m_HighlightedSprite: {fileID: 0} + m_PressedSprite: {fileID: 0} + m_SelectedSprite: {fileID: 0} + m_DisabledSprite: {fileID: 0} + m_AnimationTriggers: + m_NormalTrigger: Normal + m_HighlightedTrigger: Highlighted + m_PressedTrigger: Pressed + m_SelectedTrigger: Highlighted + m_DisabledTrigger: Disabled + m_Interactable: 1 + m_TargetGraphic: {fileID: 1307084562} + m_OnClick: + m_PersistentCalls: + m_Calls: [] --- !u!1 &1307737654 GameObject: m_ObjectHideFlags: 0 @@ -4721,6 +4986,7 @@ RectTransform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 1866921958} m_RootOrder: 0 @@ -4795,11 +5061,12 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 1866921958} - {fileID: 1767669911} m_Father: {fileID: 339774397} - m_RootOrder: 5 + m_RootOrder: 6 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 0, y: 0} @@ -4882,6 +5149,7 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 1633219308} m_RootOrder: 0 @@ -4960,6 +5228,7 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 0} m_RootOrder: 6 @@ -5009,6 +5278,7 @@ RectTransform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 427963461} m_Father: {fileID: 644517400} @@ -5088,11 +5358,12 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 452923209} - {fileID: 2090837017} m_Father: {fileID: 339774397} - m_RootOrder: 14 + m_RootOrder: 15 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 0, y: 0} @@ -5175,6 +5446,7 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 1007924636} m_RootOrder: 0 @@ -5254,9 +5526,10 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 339774397} - m_RootOrder: 6 + m_RootOrder: 7 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 0, y: 0} @@ -5333,6 +5606,7 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 339774397} m_RootOrder: 0 @@ -5479,6 +5753,7 @@ Transform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 241398689} m_RootOrder: 0 @@ -5511,6 +5786,7 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 1322834810} m_Father: {fileID: 644517400} @@ -5591,6 +5867,7 @@ RectTransform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 1111491927} m_Father: {fileID: 644517400} @@ -5671,6 +5948,7 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 644517400} m_RootOrder: 14 @@ -5750,6 +6028,7 @@ RectTransform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 1311520909} m_RootOrder: 1 @@ -5828,11 +6107,12 @@ RectTransform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 826167456} - {fileID: 642985708} m_Father: {fileID: 339774397} - m_RootOrder: 7 + m_RootOrder: 8 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 0, y: 0} @@ -5914,11 +6194,12 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 62367395} - {fileID: 1037763549} m_Father: {fileID: 339774397} - m_RootOrder: 12 + m_RootOrder: 13 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 0, y: 0} @@ -6064,6 +6345,7 @@ RectTransform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 0, y: 0, z: 0} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 124675794} m_Father: {fileID: 0} @@ -6089,6 +6371,7 @@ MonoBehaviour: m_version: {fileID: 1268276256} m_openModel: {fileID: 2009818433} m_openMotion: {fileID: 168425996} + m_pastePose: {fileID: 1307084564} m_showBoxMan: {fileID: 1767706908} m_enableLipSync: {fileID: 935566650} m_enableAutoBlink: {fileID: 634488422} @@ -6143,11 +6426,12 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 1166391799} - {fileID: 1140410864} m_Father: {fileID: 339774397} - m_RootOrder: 4 + m_RootOrder: 5 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} m_AnchorMin: {x: 0, y: 0} m_AnchorMax: {x: 0, y: 0} @@ -6230,6 +6514,7 @@ RectTransform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 1307737655} m_Father: {fileID: 1311520909} @@ -6306,6 +6591,7 @@ RectTransform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 935566651} m_RootOrder: 1 @@ -6385,6 +6671,7 @@ RectTransform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 587234269} m_Father: {fileID: 644517400} @@ -6465,6 +6752,7 @@ RectTransform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 168425995} m_RootOrder: 0 @@ -6546,6 +6834,7 @@ RectTransform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 602093298} m_RootOrder: 1 @@ -6625,6 +6914,7 @@ RectTransform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 2009818432} m_RootOrder: 0 @@ -6706,6 +6996,7 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 826167456} m_RootOrder: 0 @@ -6782,6 +7073,7 @@ RectTransform: m_LocalRotation: {x: -0, y: -0, z: -0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 1963417399} m_Father: {fileID: 339774397} @@ -6902,6 +7194,7 @@ RectTransform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 188310739} m_Father: {fileID: 634488421} @@ -6978,6 +7271,7 @@ RectTransform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 1438613464} m_RootOrder: 1 @@ -7057,6 +7351,7 @@ RectTransform: m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} m_LocalPosition: {x: 0, y: 0, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: - {fileID: 1045380262} m_Father: {fileID: 644517400} @@ -7198,6 +7493,7 @@ Transform: m_LocalRotation: {x: -0.109381616, y: -0.8754262, z: 0.40821788, w: -0.23456965} m_LocalPosition: {x: 0, y: 3, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} + m_ConstrainProportionsScale: 0 m_Children: [] m_Father: {fileID: 0} m_RootOrder: 3 diff --git a/Assets/VRM10/Samples~/VRM10Viewer/VRM10ViewerUI.cs b/Assets/VRM10/Samples~/VRM10Viewer/VRM10ViewerUI.cs index dbfc4bdb3..88969baa9 100644 --- a/Assets/VRM10/Samples~/VRM10Viewer/VRM10ViewerUI.cs +++ b/Assets/VRM10/Samples~/VRM10Viewer/VRM10ViewerUI.cs @@ -21,6 +21,9 @@ namespace UniVRM10.VRM10Viewer [SerializeField] Button m_openMotion = default; + [SerializeField] + Button m_pastePose = default; + [SerializeField] Toggle m_showBoxMan = default; @@ -224,6 +227,7 @@ namespace UniVRM10.VRM10Viewer var buttons = GameObject.FindObjectsOfType