diff --git a/Assets/UniGLTF/Runtime/UniGLTF/UniGLTFVersion.cs b/Assets/UniGLTF/Runtime/UniGLTF/UniGLTFVersion.cs index 2ee6f2e01..1a06bbd57 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 = 34; - public const int PATCH = 1; - public const string VERSION = "2.34.1"; + public const int MINOR = 35; + public const int PATCH = 0; + public const string VERSION = "2.35.0"; } } diff --git a/Assets/UniGLTF/package.json b/Assets/UniGLTF/package.json index 4bd1024b9..e7f57c286 100644 --- a/Assets/UniGLTF/package.json +++ b/Assets/UniGLTF/package.json @@ -1,6 +1,6 @@ { "name": "com.vrmc.gltf", - "version": "0.98.1", + "version": "0.99.0", "displayName": "UniGLTF", "description": "GLTF importer and exporter", "unity": "2019.4", @@ -11,6 +11,6 @@ "name": "VRM Consortium" }, "dependencies": { - "com.vrmc.vrmshaders": "0.98.1" + "com.vrmc.vrmshaders": "0.99.0" } } \ No newline at end of file diff --git a/Assets/VRM/Runtime/Format/VRMVersion.cs b/Assets/VRM/Runtime/Format/VRMVersion.cs index ac18e2cf9..abb1af93c 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 = 98; - public const int PATCH = 1; - public const string VERSION = "0.98.1"; + public const int MINOR = 99; + public const int PATCH = 0; + public const string VERSION = "0.99.0"; } } diff --git a/Assets/VRM/Samples~/BlendShapeMenu.meta b/Assets/VRM/Samples~/BlendShapeMenu.meta new file mode 100644 index 000000000..13cbe9d10 --- /dev/null +++ b/Assets/VRM/Samples~/BlendShapeMenu.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 2da5e77dc9a21b643ab911c711e319bc +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/VRM/Samples~/BlendShapeMenu/BlendShapeMenu.cs b/Assets/VRM/Samples~/BlendShapeMenu/BlendShapeMenu.cs new file mode 100644 index 000000000..7cbdc8ee4 --- /dev/null +++ b/Assets/VRM/Samples~/BlendShapeMenu/BlendShapeMenu.cs @@ -0,0 +1,180 @@ +using System.IO; +using System.Text; +using UnityEditor; +using UnityEngine; + +namespace VRM.Sample.BlendShapeMenu +{ + public static class BlendShapeMenu + { + static string[] NAMES = new string[] + { + "BrowInnerUp", + "BrowDownLeft", + "BrowDownRight", + "BrowOuterUpLeft", + "BrowOuterUpRight", + "EyeLookUpLeft", + "EyeLookUpRight", + "EyeLookDownLeft", + "EyeLookDownRight", + "EyeLookInLeft", + "EyeLookInRight", + "EyeLookOutLeft", + "EyeLookOutRight", + "EyeBlinkLeft", + "EyeBlinkRight", + "EyeSquintRight", + "EyeSquintLeft", + "EyeWideLeft", + "EyeWideRight", + "CheekPuff", + "CheekSquintLeft", + "CheekSquintRight", + "NoseSneerLeft", + "NoseSneerRight", + "JawOpen", + "JawForward", + "JawLeft", + "JawRight", + "MouthFunnel", + "MouthPucker", + "MouthLeft", + "MouthRight", + "MouthRollUpper", + "MouthRollLower", + "MouthShrugUpper", + "MouthShrugLower", + "MouthClose", + "MouthSmileLeft", + "MouthSmileRight", + "MouthFrownLeft", + "MouthFrownRight", + "MouthDimpleLeft", + "MouthDimpleRight", + "MouthUpperUpLeft", + "MouthUpperUpRight", + "MouthLowerDownLeft", + "MouthLowerDownRight", + "MouthPressLeft", + "MouthPressRight", + "MouthStretchLeft", + "MouthStretchRight", + "TongueOut", + }; + + /// + /// fullpath C:/path/to/project/Assets/some.preset to Assets/some.preset + /// + /// + static string ToUnityPath(string src) + { + if (!src.StartsWith(Application.dataPath)) + { + // not in Assets + throw new System.Exception("not in Assets"); + } + + return "Assets" + src.Substring(Application.dataPath.Length); + } + + [MenuItem("CONTEXT/BlendShapeAvatar/Add ARKit FaceTracking BlendShapes")] + public static void AddARKitFaceTrackingBlendShapes(MenuCommand command) + { + // Debug.Log(command.context); + var avatar = command.context as BlendShapeAvatar; + if (avatar == null) + { + Debug.LogError("no context"); + return; + } + + var assetPath = AssetDatabase.GetAssetPath(avatar); + + var dir = EditorUtility.SaveFolderPanel("blendshape folder", assetPath, ""); + if (string.IsNullOrEmpty(dir)) + { + // cancel + return; + } + + var assetDir = ToUnityPath(dir); + var sb = new StringBuilder(); + foreach (var name in NAMES) + { + if (avatar.Clips.Find(x => x.Preset == BlendShapePreset.Unknown && x.BlendShapeName == name)) + { + // already exists + continue; + } + + // new blendshape clip + var clip = ScriptableObject.CreateInstance(); + clip.Preset = BlendShapePreset.Unknown; + clip.name = name; + clip.BlendShapeName = name; + + // write blendshape clip + var clipPath = $"{assetDir}/{name}.asset"; + sb.AppendLine($"{clipPath}"); + AssetDatabase.CreateAsset(clip, clipPath); + + // add to avatar + avatar.Clips.Add(clip); + } + + Debug.Log("Create\n" + sb.ToString()); + } + + [MenuItem("CONTEXT/BlendShapeAvatar/Assign all BlendShapes in a folder")] + static void AssginAllBlendShapesInAFolder(MenuCommand command) + { + // Debug.Log(command.context); + var avatar = command.context as BlendShapeAvatar; + if (avatar == null) + { + Debug.LogError("no context"); + return; + } + var assetPath = AssetDatabase.GetAssetPath(avatar); + + var dir = EditorUtility.SaveFolderPanel("blendshape folder", assetPath, ""); + if (string.IsNullOrEmpty(dir)) + { + // cancel + return; + } + + var assetDir = ToUnityPath(dir); + var sb = new StringBuilder(); + foreach (var f in Directory.EnumerateFiles(dir)) + { + var extension = Path.GetExtension(f).ToLower(); + if (extension != ".asset") + { + // not asset + continue; + } + + var clipPath = ToUnityPath(f); + if (clipPath == null) + { + // not BlendShapeClip + continue; + } + + var clip = AssetDatabase.LoadAssetAtPath(clipPath); + if (avatar.Clips.Contains(clip)) + { + // already exists + continue; + } + + sb.AppendLine(clipPath); + avatar.Clips.Add(clip); + } + + Debug.Log($"Assign\n" + sb.ToString()); + } + } +} diff --git a/Assets/VRM/Samples~/BlendShapeMenu/BlendShapeMenu.cs.meta b/Assets/VRM/Samples~/BlendShapeMenu/BlendShapeMenu.cs.meta new file mode 100644 index 000000000..2a257caea --- /dev/null +++ b/Assets/VRM/Samples~/BlendShapeMenu/BlendShapeMenu.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 9de25cae84f592447b30688da0d6c687 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/VRM/Samples~/RuntimeExporterSample/RuntimeExporterSample.unity b/Assets/VRM/Samples~/RuntimeExporterSample/RuntimeExporterSample.unity index e7c464c24..62cddd2cf 100644 --- a/Assets/VRM/Samples~/RuntimeExporterSample/RuntimeExporterSample.unity +++ b/Assets/VRM/Samples~/RuntimeExporterSample/RuntimeExporterSample.unity @@ -44,7 +44,7 @@ RenderSettings: LightmapSettings: m_ObjectHideFlags: 0 serializedVersion: 11 - m_GIWorkflowMode: 0 + m_GIWorkflowMode: 1 m_GISettings: serializedVersion: 2 m_BounceScale: 1 @@ -52,7 +52,7 @@ LightmapSettings: m_AlbedoBoost: 1 m_EnvironmentLightingMode: 0 m_EnableBakedLightmaps: 1 - m_EnableRealtimeLightmaps: 1 + m_EnableRealtimeLightmaps: 0 m_LightmapEditorSettings: serializedVersion: 12 m_Resolution: 2 @@ -72,21 +72,21 @@ LightmapSettings: m_FinalGatherRayCount: 256 m_ReflectionCompression: 2 m_MixedBakeMode: 2 - m_BakeBackend: 0 + m_BakeBackend: 1 m_PVRSampling: 1 m_PVRDirectSampleCount: 32 - m_PVRSampleCount: 500 + m_PVRSampleCount: 512 m_PVRBounces: 2 - m_PVREnvironmentSampleCount: 500 + m_PVREnvironmentSampleCount: 256 m_PVREnvironmentReferencePointCount: 2048 - m_PVRFilteringMode: 2 - m_PVRDenoiserTypeDirect: 0 - m_PVRDenoiserTypeIndirect: 0 - m_PVRDenoiserTypeAO: 0 + m_PVRFilteringMode: 1 + m_PVRDenoiserTypeDirect: 1 + m_PVRDenoiserTypeIndirect: 1 + m_PVRDenoiserTypeAO: 1 m_PVRFilterTypeDirect: 0 m_PVRFilterTypeIndirect: 0 m_PVRFilterTypeAO: 0 - m_PVREnvironmentMIS: 0 + m_PVREnvironmentMIS: 1 m_PVRCulling: 1 m_PVRFilteringGaussRadiusDirect: 1 m_PVRFilteringGaussRadiusIndirect: 5 @@ -121,7 +121,7 @@ NavMeshSettings: debug: m_Flags: 0 m_NavMeshData: {fileID: 0} ---- !u!1 &23707192 +--- !u!1 &1186819954 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -129,234 +129,43 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 23707193} - - component: {fileID: 23707196} - - component: {fileID: 23707195} - - component: {fileID: 23707194} - m_Layer: 5 - m_Name: Export + - component: {fileID: 1186819956} + - component: {fileID: 1186819955} + m_Layer: 0 + m_Name: VRMRuntimeExporter m_TagString: Untagged m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!224 &23707193 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 23707192} - 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_Children: - - {fileID: 1219439930} - m_Father: {fileID: 92488667} - m_RootOrder: 1 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 1} - m_AnchorMax: {x: 0, y: 1} - m_AnchoredPosition: {x: 80, y: -62} - m_SizeDelta: {x: 160, y: 30} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &23707194 +--- !u!114 &1186819955 MonoBehaviour: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 23707192} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Navigation: - m_Mode: 3 - 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: 23707195} - m_OnClick: - m_PersistentCalls: - m_Calls: [] ---- !u!114 &23707195 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 23707192} - 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_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 &23707196 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 23707192} - m_CullTransparentMesh: 0 ---- !u!1 &92488662 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 92488667} - - component: {fileID: 92488666} - - component: {fileID: 92488665} - - component: {fileID: 92488664} - - component: {fileID: 92488663} - m_Layer: 5 - m_Name: Canvas - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!114 &92488663 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 92488662} + m_GameObject: {fileID: 1186819954} m_Enabled: 1 m_EditorHideFlags: 0 m_Script: {fileID: 11500000, guid: 2228c0f2d73b1c54b82488d4f2504222, type: 3} m_Name: m_EditorClassIdentifier: - m_loadButton: {fileID: 1132913042} - m_exportButton: {fileID: 23707194} UseNormalize: 1 ---- !u!114 &92488664 -MonoBehaviour: +--- !u!4 &1186819956 +Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 92488662} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: dc42784cf147c0c48a680349fa168899, type: 3} - m_Name: - m_EditorClassIdentifier: - m_IgnoreReversedGraphics: 1 - m_BlockingObjects: 0 - m_BlockingMask: - serializedVersion: 2 - m_Bits: 4294967295 ---- !u!114 &92488665 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 92488662} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 0cd44c1031e13a943bb63640046fad76, type: 3} - m_Name: - m_EditorClassIdentifier: - m_UiScaleMode: 0 - m_ReferencePixelsPerUnit: 100 - m_ScaleFactor: 1 - m_ReferenceResolution: {x: 800, y: 600} - m_ScreenMatchMode: 0 - m_MatchWidthOrHeight: 0 - m_PhysicalUnit: 3 - m_FallbackScreenDPI: 96 - m_DefaultSpriteDPI: 96 - m_DynamicPixelsPerUnit: 1 ---- !u!223 &92488666 -Canvas: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 92488662} - m_Enabled: 1 - serializedVersion: 3 - m_RenderMode: 0 - m_Camera: {fileID: 0} - m_PlaneDistance: 100 - m_PixelPerfect: 0 - m_ReceivesEvents: 1 - m_OverrideSorting: 0 - m_OverridePixelPerfect: 0 - m_SortingBucketNormalizedSize: 0 - m_AdditionalShaderChannelsFlag: 0 - m_SortingLayerID: 0 - m_SortingOrder: 0 - m_TargetDisplay: 0 ---- !u!224 &92488667 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 92488662} + m_GameObject: {fileID: 1186819954} 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_Children: - - {fileID: 1132913041} - - {fileID: 23707193} + m_LocalScale: {x: 1, y: 1, z: 1} + m_Children: [] m_Father: {fileID: 0} 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: 0, y: 0} - m_Pivot: {x: 0, y: 0} ---- !u!1 &258802523 +--- !u!1 &1538405295 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -364,10 +173,10 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 258802527} - - component: {fileID: 258802526} - - component: {fileID: 258802525} - - component: {fileID: 258802524} + - component: {fileID: 1538405299} + - component: {fileID: 1538405298} + - component: {fileID: 1538405297} + - component: {fileID: 1538405296} m_Layer: 0 m_Name: Plane m_TagString: Untagged @@ -375,13 +184,27 @@ GameObject: m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!23 &258802524 +--- !u!64 &1538405296 +MeshCollider: + m_ObjectHideFlags: 0 + m_CorrespondingSourceObject: {fileID: 0} + m_PrefabInstance: {fileID: 0} + m_PrefabAsset: {fileID: 0} + m_GameObject: {fileID: 1538405295} + m_Material: {fileID: 0} + m_IsTrigger: 0 + m_Enabled: 1 + serializedVersion: 4 + m_Convex: 0 + m_CookingOptions: 30 + m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} +--- !u!23 &1538405297 MeshRenderer: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 258802523} + m_GameObject: {fileID: 1538405295} m_Enabled: 1 m_CastShadows: 1 m_ReceiveShadows: 1 @@ -402,7 +225,7 @@ MeshRenderer: m_LightProbeVolumeOverride: {fileID: 0} m_ScaleInLightmap: 1 m_ReceiveGI: 1 - m_PreserveUVs: 1 + m_PreserveUVs: 0 m_IgnoreNormalsForChartDetection: 0 m_ImportantGI: 0 m_StitchLightmapSeams: 1 @@ -414,35 +237,21 @@ MeshRenderer: m_SortingLayerID: 0 m_SortingLayer: 0 m_SortingOrder: 0 ---- !u!64 &258802525 -MeshCollider: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 258802523} - m_Material: {fileID: 0} - m_IsTrigger: 0 - m_Enabled: 1 - serializedVersion: 4 - m_Convex: 0 - m_CookingOptions: 30 - m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} ---- !u!33 &258802526 +--- !u!33 &1538405298 MeshFilter: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 258802523} + m_GameObject: {fileID: 1538405295} m_Mesh: {fileID: 10209, guid: 0000000000000000e000000000000000, type: 0} ---- !u!4 &258802527 +--- !u!4 &1538405299 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 258802523} + m_GameObject: {fileID: 1538405295} 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} @@ -450,7 +259,7 @@ Transform: m_Father: {fileID: 0} m_RootOrder: 2 m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1109443755 +--- !u!1 &1760773430 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -458,210 +267,8 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 1109443760} - - component: {fileID: 1109443759} - - component: {fileID: 1109443756} - m_Layer: 0 - m_Name: Main Camera - m_TagString: MainCamera - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!81 &1109443756 -AudioListener: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1109443755} - m_Enabled: 1 ---- !u!20 &1109443759 -Camera: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1109443755} - m_Enabled: 1 - serializedVersion: 2 - m_ClearFlags: 1 - m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} - m_projectionMatrixMode: 1 - m_GateFitMode: 2 - m_FOVAxisMode: 0 - m_SensorSize: {x: 36, y: 24} - m_LensShift: {x: 0, y: 0} - m_FocalLength: 50 - m_NormalizedViewPortRect: - serializedVersion: 2 - x: 0 - y: 0 - width: 1 - height: 1 - near clip plane: 0.3 - far clip plane: 10 - field of view: 60 - orthographic: 0 - orthographic size: 5 - m_Depth: -1 - m_CullingMask: - serializedVersion: 2 - m_Bits: 4294967295 - m_RenderingPath: -1 - m_TargetTexture: {fileID: 0} - m_TargetDisplay: 0 - m_TargetEye: 3 - m_HDR: 1 - m_AllowMSAA: 1 - m_AllowDynamicResolution: 0 - m_ForceIntoRT: 0 - m_OcclusionCulling: 1 - m_StereoConvergence: 10 - m_StereoSeparation: 0.022 ---- !u!4 &1109443760 -Transform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1109443755} - m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 1, z: -2} - m_LocalScale: {x: 1, y: 1, z: 1} - m_Children: [] - m_Father: {fileID: 0} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1132913040 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1132913041} - - component: {fileID: 1132913044} - - component: {fileID: 1132913043} - - component: {fileID: 1132913042} - m_Layer: 5 - m_Name: Load - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &1132913041 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1132913040} - 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_Children: - - {fileID: 1543803958} - m_Father: {fileID: 92488667} - m_RootOrder: 0 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} - m_AnchorMin: {x: 0, y: 1} - m_AnchorMax: {x: 0, y: 1} - m_AnchoredPosition: {x: 80, y: -15} - m_SizeDelta: {x: 160, y: 30} - m_Pivot: {x: 0.5, y: 0.5} ---- !u!114 &1132913042 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1132913040} - m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 4e29b1a8efbd4b44bb3f3716e73f07ff, type: 3} - m_Name: - m_EditorClassIdentifier: - m_Navigation: - m_Mode: 3 - 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: 1132913043} - m_OnClick: - m_PersistentCalls: - m_Calls: [] ---- !u!114 &1132913043 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1132913040} - 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_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 &1132913044 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1132913040} - m_CullTransparentMesh: 0 ---- !u!1 &1207079224 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1207079226} - - component: {fileID: 1207079225} + - component: {fileID: 1760773432} + - component: {fileID: 1760773431} m_Layer: 0 m_Name: Directional Light m_TagString: Untagged @@ -669,13 +276,13 @@ GameObject: m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!108 &1207079225 +--- !u!108 &1760773431 Light: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1207079224} + m_GameObject: {fileID: 1760773430} m_Enabled: 1 serializedVersion: 10 m_Type: 1 @@ -730,13 +337,13 @@ Light: m_UseBoundingSphereOverride: 0 m_ShadowRadius: 0 m_ShadowAngle: 0 ---- !u!4 &1207079226 +--- !u!4 &1760773432 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1207079224} + m_GameObject: {fileID: 1760773430} m_LocalRotation: {x: 0.40821788, y: -0.23456968, z: 0.10938163, w: 0.8754261} m_LocalPosition: {x: 0, y: 3, z: 0} m_LocalScale: {x: 1, y: 1, z: 1} @@ -744,7 +351,7 @@ Transform: m_Father: {fileID: 0} m_RootOrder: 1 m_LocalEulerAnglesHint: {x: 50, y: -30, z: 0} ---- !u!1 &1219439929 +--- !u!1 &2092896552 GameObject: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} @@ -752,217 +359,78 @@ GameObject: m_PrefabAsset: {fileID: 0} serializedVersion: 6 m_Component: - - component: {fileID: 1219439930} - - component: {fileID: 1219439932} - - component: {fileID: 1219439931} - m_Layer: 5 - m_Name: Text - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &1219439930 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1219439929} - 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_Children: [] - m_Father: {fileID: 23707193} - 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 &1219439931 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1219439929} - 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_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: Export ---- !u!222 &1219439932 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1219439929} - m_CullTransparentMesh: 0 ---- !u!1 &1474386474 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1474386477} - - component: {fileID: 1474386476} - - component: {fileID: 1474386475} + - component: {fileID: 2092896555} + - component: {fileID: 2092896554} + - component: {fileID: 2092896553} m_Layer: 0 - m_Name: EventSystem - m_TagString: Untagged + m_Name: Main Camera + m_TagString: MainCamera m_Icon: {fileID: 0} m_NavMeshLayer: 0 m_StaticEditorFlags: 0 m_IsActive: 1 ---- !u!114 &1474386475 -MonoBehaviour: +--- !u!81 &2092896553 +AudioListener: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1474386474} + m_GameObject: {fileID: 2092896552} m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 4f231c4fb786f3946a6b90b886c48677, type: 3} - m_Name: - m_EditorClassIdentifier: - m_HorizontalAxis: Horizontal - m_VerticalAxis: Vertical - m_SubmitButton: Submit - m_CancelButton: Cancel - m_InputActionsPerSecond: 10 - m_RepeatDelay: 0.5 - m_ForceModuleActive: 0 ---- !u!114 &1474386476 -MonoBehaviour: +--- !u!20 &2092896554 +Camera: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1474386474} + m_GameObject: {fileID: 2092896552} m_Enabled: 1 - m_EditorHideFlags: 0 - m_Script: {fileID: 11500000, guid: 76c392e42b5098c458856cdf6ecaaaa1, type: 3} - m_Name: - m_EditorClassIdentifier: - m_FirstSelected: {fileID: 0} - m_sendNavigationEvents: 1 - m_DragThreshold: 5 ---- !u!4 &1474386477 + serializedVersion: 2 + m_ClearFlags: 1 + m_BackGroundColor: {r: 0.19215687, g: 0.3019608, b: 0.4745098, a: 0} + m_projectionMatrixMode: 1 + m_GateFitMode: 2 + m_FOVAxisMode: 0 + m_SensorSize: {x: 36, y: 24} + m_LensShift: {x: 0, y: 0} + m_FocalLength: 50 + m_NormalizedViewPortRect: + serializedVersion: 2 + x: 0 + y: 0 + width: 1 + height: 1 + near clip plane: 0.3 + far clip plane: 1000 + field of view: 60 + orthographic: 0 + orthographic size: 5 + m_Depth: -1 + m_CullingMask: + serializedVersion: 2 + m_Bits: 4294967295 + m_RenderingPath: -1 + m_TargetTexture: {fileID: 0} + m_TargetDisplay: 0 + m_TargetEye: 3 + m_HDR: 1 + m_AllowMSAA: 1 + m_AllowDynamicResolution: 0 + m_ForceIntoRT: 0 + m_OcclusionCulling: 1 + m_StereoConvergence: 10 + m_StereoSeparation: 0.022 +--- !u!4 &2092896555 Transform: m_ObjectHideFlags: 0 m_CorrespondingSourceObject: {fileID: 0} m_PrefabInstance: {fileID: 0} m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1474386474} + m_GameObject: {fileID: 2092896552} m_LocalRotation: {x: 0, y: 0, z: 0, w: 1} - m_LocalPosition: {x: 0, y: 0, z: 0} + m_LocalPosition: {x: 0, y: 1, z: -10} m_LocalScale: {x: 1, y: 1, z: 1} m_Children: [] m_Father: {fileID: 0} - m_RootOrder: 4 - m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0} ---- !u!1 &1543803957 -GameObject: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - serializedVersion: 6 - m_Component: - - component: {fileID: 1543803958} - - component: {fileID: 1543803960} - - component: {fileID: 1543803959} - m_Layer: 5 - m_Name: Text - m_TagString: Untagged - m_Icon: {fileID: 0} - m_NavMeshLayer: 0 - m_StaticEditorFlags: 0 - m_IsActive: 1 ---- !u!224 &1543803958 -RectTransform: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1543803957} - 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_Children: [] - m_Father: {fileID: 1132913041} 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 &1543803959 -MonoBehaviour: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1543803957} - 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_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: Load ---- !u!222 &1543803960 -CanvasRenderer: - m_ObjectHideFlags: 0 - m_CorrespondingSourceObject: {fileID: 0} - m_PrefabInstance: {fileID: 0} - m_PrefabAsset: {fileID: 0} - m_GameObject: {fileID: 1543803957} - m_CullTransparentMesh: 0 diff --git a/Assets/VRM/Samples~/RuntimeExporterSample/VRMRuntimeExporter.cs b/Assets/VRM/Samples~/RuntimeExporterSample/VRMRuntimeExporter.cs index 0c39e342c..3d396b37b 100644 --- a/Assets/VRM/Samples~/RuntimeExporterSample/VRMRuntimeExporter.cs +++ b/Assets/VRM/Samples~/RuntimeExporterSample/VRMRuntimeExporter.cs @@ -1,41 +1,39 @@ -using System; -using System.IO; -using System.Linq; -using UniGLTF; +using System.IO; using UnityEngine; -using UnityEngine.UI; -using VRM; using VRMShaders; + namespace VRM.RuntimeExporterSample { public class VRMRuntimeExporter : MonoBehaviour { - [SerializeField] Button m_loadButton = default; - - [SerializeField] Button m_exportButton = default; - [SerializeField] public bool UseNormalize = true; GameObject m_model; - private void Awake() + void OnGUI() { - m_loadButton.onClick.AddListener(OnLoadClicked); + if (GUILayout.Button("Load")) + { + Load(); + } - m_exportButton.onClick.AddListener(OnExportClicked); + GUI.enabled = m_model != null; + + if (GUILayout.Button("Add custom blend shape")) + { + AddBlendShapeClip(m_model); + } + + if (GUILayout.Button("Export")) + { + Export(m_model, UseNormalize); + } } - private void Update() - { - m_exportButton.interactable = (m_model != null); - } - - #region Load - - async void OnLoadClicked() + async void Load() { #if UNITY_STANDALONE_WIN var path = FileDialogForWindows.FileDialog("open VRM", ".vrm"); @@ -50,27 +48,71 @@ namespace VRM.RuntimeExporterSample } var loaded = await VrmUtility.LoadAsync(path); - loaded.ShowMeshes(); loaded.EnableUpdateWhenOffscreen(); - OnLoaded(loaded.gameObject); - } - void OnLoaded(GameObject go) - { if (m_model != null) { GameObject.Destroy(m_model.gameObject); } - m_model = go; - m_model.transform.rotation = Quaternion.Euler(0, 180, 0); + m_model = loaded.gameObject; } - #endregion - #region Export + static void AddBlendShapeClip(GameObject go) + { + // get or create blendshape proxy + var proxy = go.GetComponent(); + if (proxy == null) + { + proxy = go.AddComponent(); + } - void OnExportClicked() + // get or create blendshapeavatar + var avatar = proxy.BlendShapeAvatar; + if (avatar == null) + { + avatar = ScriptableObject.CreateInstance(); + proxy.BlendShapeAvatar = avatar; + } + + // add blendshape clip to avatar.Clips + var clip = ScriptableObject.CreateInstance(); + var name = $"custom#{avatar.Clips.Count}"; + Debug.Log($"Add {name}"); + // unity asset name + clip.name = name; + // vrm export name + clip.BlendShapeName = name; + clip.Preset = BlendShapePreset.Unknown; + + clip.IsBinary = false; + clip.Values = new BlendShapeBinding[] + { + new BlendShapeBinding + { + RelativePath = "mesh/face", // target Renderer relative path from root + Index = 0, // BlendShapeIndex in SkinnedMeshRenderer + Weight = 75f // BlendShape weight, range is [0-100] + }, + }; + clip.MaterialValues = new MaterialValueBinding[] + { + new MaterialValueBinding + { + MaterialName = "Alicia_body", // target_material_name + ValueName = "_Color", // target_material_property_name, + BaseValue = new Vector4(1, 1, 1, 1), // Target value when the Weight value of BlendShapeClip is 0 + TargetValue = new Vector4(0, 0, 0, 1), // Target value when the Weight value of BlendShapeClip is 1 + }, + }; + avatar.Clips.Add(clip); + + // done + } + + + static void Export(GameObject model, bool useNormalize) { //#if UNITY_STANDALONE_WIN #if false @@ -83,7 +125,7 @@ namespace VRM.RuntimeExporterSample return; } - var bytes = UseNormalize ? ExportCustom(m_model) : ExportSimple(m_model); + var bytes = useNormalize ? ExportCustom(model) : ExportSimple(model); File.WriteAllBytes(path, bytes); Debug.LogFormat("export to {0}", path); @@ -116,7 +158,5 @@ namespace VRM.RuntimeExporterSample { Debug.LogFormat("exported"); } - - #endregion } } diff --git a/Assets/VRM/package.json b/Assets/VRM/package.json index cdcfb0eef..5606559ff 100644 --- a/Assets/VRM/package.json +++ b/Assets/VRM/package.json @@ -1,6 +1,6 @@ { "name": "com.vrmc.univrm", - "version": "0.98.1", + "version": "0.99.0", "displayName": "VRM", "description": "VRM importer", "unity": "2019.4", @@ -14,8 +14,8 @@ "name": "VRM Consortium" }, "dependencies": { - "com.vrmc.vrmshaders": "0.98.1", - "com.vrmc.gltf": "0.98.1" + "com.vrmc.vrmshaders": "0.99.0", + "com.vrmc.gltf": "0.99.0" }, "samples": [ { diff --git a/Assets/VRM10/package.json b/Assets/VRM10/package.json index a7ff83602..c86e9719a 100644 --- a/Assets/VRM10/package.json +++ b/Assets/VRM10/package.json @@ -1,6 +1,6 @@ { "name": "com.vrmc.vrm", - "version": "0.98.1", + "version": "0.99.0", "displayName": "VRM-1.0β", "description": "VRM-1.0β importer", "unity": "2019.4", @@ -14,8 +14,8 @@ "name": "VRM Consortium" }, "dependencies": { - "com.vrmc.vrmshaders": "0.98.1", - "com.vrmc.gltf": "0.98.1" + "com.vrmc.vrmshaders": "0.99.0", + "com.vrmc.gltf": "0.99.0" }, "samples": [ { diff --git a/Assets/VRMShaders/package.json b/Assets/VRMShaders/package.json index 2dc116209..833d27219 100644 --- a/Assets/VRMShaders/package.json +++ b/Assets/VRMShaders/package.json @@ -1,6 +1,6 @@ { "name": "com.vrmc.vrmshaders", - "version": "0.98.1", + "version": "0.99.0", "displayName": "VRM Shaders", "description": "VRM Shaders", "unity": "2019.4",