From 670c95d30affd72246a4a06c272bc67a2de5fb2e Mon Sep 17 00:00:00 2001 From: ousttrue Date: Fri, 20 Apr 2018 16:54:18 +0900 Subject: [PATCH 01/16] Increment version --- Scripts/Format/VRMVersion.cs | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/Scripts/Format/VRMVersion.cs b/Scripts/Format/VRMVersion.cs index df7605b12..20912a780 100644 --- a/Scripts/Format/VRMVersion.cs +++ b/Scripts/Format/VRMVersion.cs @@ -4,11 +4,11 @@ namespace VRM public static class VRMVersion { public const int MAJOR = 0; - public const int MINOR = 35; + public const int MINOR = 36; - public const string VERSION = "0.35"; + public const string VERSION = "0.36"; - public const string DecrementMenuName = "VRM/Version(0.35) Decrement"; - public const string IncrementMenuName = "VRM/Version(0.35) Increment"; + public const string DecrementMenuName = "VRM/Version(0.36) Decrement"; + public const string IncrementMenuName = "VRM/Version(0.36) Increment"; } } From 2f8fbb4f599e83100cabcdf6d02749e7e236dbb5 Mon Sep 17 00:00:00 2001 From: ousttrue Date: Fri, 20 Apr 2018 19:21:52 +0900 Subject: [PATCH 02/16] Implement Material.textureOffset & Material.textureScaling read/write --- Scripts/Format/VRMImporter.cs | 14 ++++++++++++-- Scripts/Format/glTF_VRM_Material.cs | 7 ++++++- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/Scripts/Format/VRMImporter.cs b/Scripts/Format/VRMImporter.cs index 9808ab9d9..248d6bce4 100644 --- a/Scripts/Format/VRMImporter.cs +++ b/Scripts/Format/VRMImporter.cs @@ -127,8 +127,18 @@ namespace VRM } foreach (var kv in item.vectorProperties) { - var v = new Vector4(kv.Value[0], kv.Value[1], kv.Value[2], kv.Value[3]); - material.SetVector(kv.Key, v); + if (item.textureProperties.ContainsKey(kv.Key)) + { + // texture offset & scale + material.SetTextureOffset(kv.Key, new Vector2(kv.Value[0], kv.Value[1])); + material.SetTextureScale(kv.Key, new Vector2(kv.Value[2], kv.Value[3])); + } + else + { + // vector4 + var v = new Vector4(kv.Value[0], kv.Value[1], kv.Value[2], kv.Value[3]); + material.SetVector(kv.Key, v); + } } foreach (var kv in item.textureProperties) { diff --git a/Scripts/Format/glTF_VRM_Material.cs b/Scripts/Format/glTF_VRM_Material.cs index 9825d54a1..8ed73b21f 100644 --- a/Scripts/Format/glTF_VRM_Material.cs +++ b/Scripts/Format/glTF_VRM_Material.cs @@ -19,7 +19,6 @@ namespace VRM public Dictionary floatProperties = new Dictionary(); public Dictionary vectorProperties = new Dictionary(); public Dictionary textureProperties = new Dictionary(); - public Dictionary keywordMap = new Dictionary(); public Dictionary tagMap = new Dictionary(); @@ -145,6 +144,12 @@ namespace VRM material.textureProperties.Add(name, value); } } + + // offset & scaling + var offset = m.GetTextureOffset(name); + var scaling = m.GetTextureScale(name); + material.vectorProperties.Add(name, + new float[] { offset.x, offset.y, scaling.x, scaling.y }); } break; From 966e382f4765efb4daaf4373db310e2584cf6195 Mon Sep 17 00:00:00 2001 From: ousttrue Date: Fri, 20 Apr 2018 20:45:39 +0900 Subject: [PATCH 03/16] Update UniHumanoid --- UniHumanoid | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/UniHumanoid b/UniHumanoid index e6f56c8ba..fb94c1495 160000 --- a/UniHumanoid +++ b/UniHumanoid @@ -1 +1 @@ -Subproject commit e6f56c8ba8314e409338c3bab224f5f071c974fd +Subproject commit fb94c1495da665bb9fff18e9a2cc2dfb7090b4c3 From 4ec5a5a927dc512409a411dde2584ac30f0c0560 Mon Sep 17 00:00:00 2001 From: ousttrue Date: Fri, 20 Apr 2018 21:17:35 +0900 Subject: [PATCH 04/16] Fix BlendShapeApply --- Scripts/BlendShape/BlendShapeMerger.cs | 135 ++++++++++------------- Scripts/BlendShape/VRMBlendShapeProxy.cs | 8 -- 2 files changed, 60 insertions(+), 83 deletions(-) diff --git a/Scripts/BlendShape/BlendShapeMerger.cs b/Scripts/BlendShape/BlendShapeMerger.cs index 939d555cd..2e41939de 100644 --- a/Scripts/BlendShape/BlendShapeMerger.cs +++ b/Scripts/BlendShape/BlendShapeMerger.cs @@ -15,37 +15,13 @@ namespace VRM Dictionary m_clipMap; Dictionary m_valueMap; - class AccumulatingSetter - { - public Action Setter; - float m_value; - - public void AddValue(float value) - { - m_value += value; - } - - public void Apply(float value) - { - Setter(value); - m_value = 0; - } - - public void Apply() - { - Setter(m_value); - m_value = 0; - } - - public void Clear() - { - m_value = 0; - Apply(); - } - } - Dictionary m_setterMap; Dictionary m_materialMap; - Dictionary m_materialSetterMap; + + Dictionary m_blendShapeValueMap = new Dictionary(); + Dictionary> m_blendShapeSetterMap = new Dictionary>(); + + Dictionary m_materialValueMap = new Dictionary(); + Dictionary> m_materialSetterMap = new Dictionary>(); public BlendShapeMerger(IEnumerable clips, Transform root) { @@ -71,13 +47,12 @@ namespace VRM m_clipMap = clips.ToDictionary(x => BlendShapeKey.CreateFrom(x), x => x); m_valueMap = new Dictionary(); - m_setterMap = new Dictionary(); - m_materialSetterMap = new Dictionary(); + foreach (var kv in m_clipMap) { foreach (var binding in kv.Value.Values) { - if (!m_setterMap.ContainsKey(binding)) + if (!m_blendShapeSetterMap.ContainsKey(binding)) { var _target = root.Find(binding.RelativePath); SkinnedMeshRenderer target = null; @@ -87,13 +62,10 @@ namespace VRM } if (target != null) { - m_setterMap.Add(binding, new AccumulatingSetter - { - Setter = x => + m_blendShapeSetterMap.Add(binding, x => { target.SetBlendShapeWeight(binding.Index, x); - } - }); + }); } else { @@ -109,15 +81,12 @@ namespace VRM Material target; if(m_materialMap.TryGetValue(binding.MaterialName, out target)) { - m_materialSetterMap.Add(binding, new AccumulatingSetter - { - Setter = x => + m_materialSetterMap.Add(binding, x => { //target.SetBlendShapeWeight(binding.Index, x); var propValue = binding.BaseValue + (binding.TargetValue - binding.BaseValue) * x; target.SetColor(binding.ValueName, propValue); - } - }); + }); } else { @@ -129,27 +98,35 @@ namespace VRM } public void Clear() - { - foreach (var kv in m_setterMap) - { - kv.Value.Clear(); - } - } - - public void Restore() { foreach (var kv in m_valueMap.ToArray()) { SetValue(kv.Key, kv.Value, false); } + Apply(); } public void Apply() { - foreach (var kv in m_setterMap) + foreach (var kv in m_blendShapeValueMap) { - kv.Value.Apply(); + Action setter; + if(m_blendShapeSetterMap.TryGetValue(kv.Key, out setter)) + { + setter(kv.Value); + } } + m_blendShapeValueMap.Clear(); + + foreach(var kv in m_materialValueMap) + { + Action setter; + if(m_materialSetterMap.TryGetValue(kv.Key, out setter)) + { + setter(kv.Value); + } + } + m_materialValueMap.Clear(); } public void SetValue(BlendShapeKey key, float value, bool replace) @@ -164,46 +141,54 @@ namespace VRM foreach (var binding in clip.Values) { - AccumulatingSetter handler; - if (m_setterMap.TryGetValue(binding, out handler)) + if (replace) { - if (replace) + // 値置き換え + Action setter; + if(m_blendShapeSetterMap.TryGetValue(binding, out setter)) { - // 値置き換え - handler.Apply(binding.Weight * value); - } - else - { - // 積算 - handler.AddValue(binding.Weight * value); + setter(binding.Weight * value); } } else { - Debug.LogWarningFormat("'{0}' not found", binding); + // 積算 + float acc; + if(m_blendShapeValueMap.TryGetValue(binding, out acc)) + { + m_blendShapeValueMap[binding] = acc + binding.Weight * value; + } + else + { + m_blendShapeValueMap[binding] = binding.Weight * value; + } } } // materialの更新 foreach (var binding in clip.MaterialValues) { - AccumulatingSetter handler; - if(m_materialSetterMap.TryGetValue(binding, out handler)) + if (replace) { - if (replace) + // 値置き換え + Action setter; + if (m_materialSetterMap.TryGetValue(binding, out setter)) { - // 値置き換え - handler.Apply(value); - } - else - { - // 積算 - handler.AddValue(value); + setter(value); } } else { - Debug.LogWarningFormat("'{0}' not found", binding); + // 積算 + float acc; + if (m_materialValueMap.TryGetValue(binding, out acc)) + { + m_materialValueMap[binding] = acc + value; + } + else + { + m_materialValueMap[binding] = value; + } } } } diff --git a/Scripts/BlendShape/VRMBlendShapeProxy.cs b/Scripts/BlendShape/VRMBlendShapeProxy.cs index b103102cf..c22cb5965 100644 --- a/Scripts/BlendShape/VRMBlendShapeProxy.cs +++ b/Scripts/BlendShape/VRMBlendShapeProxy.cs @@ -76,14 +76,6 @@ namespace VRM } } - public void Restore() - { - if (m_merger != null) - { - m_merger.Restore(); - } - } - public void Apply() { if (m_merger != null) From 45a6bb3554cd9261349bf2c5277bd94475892be5 Mon Sep 17 00:00:00 2001 From: ousttrue Date: Sun, 22 Apr 2018 16:08:00 +0900 Subject: [PATCH 05/16] Update UniGLTF --- Scripts/Format/Editor/vrmAssetPostprocessor.cs | 2 +- UniGLTF | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Scripts/Format/Editor/vrmAssetPostprocessor.cs b/Scripts/Format/Editor/vrmAssetPostprocessor.cs index 6f4e07eea..6eb821a50 100644 --- a/Scripts/Format/Editor/vrmAssetPostprocessor.cs +++ b/Scripts/Format/Editor/vrmAssetPostprocessor.cs @@ -36,7 +36,7 @@ namespace VRM //Directory.CreateDirectory(folder); } - var textureName = string.IsNullOrEmpty(image.extra.name) ? string.Format("buffer#{0:00}", i) : image.extra.name; + var textureName = !string.IsNullOrEmpty(image.name) ? image.name: string.Format("buffer#{0:00}", i); var png = Path.Combine(folder, textureName + ".png"); var byteSegment = context.GLTF.GetViewBytes(image.bufferView); File.WriteAllBytes(png, byteSegment.ToArray()); diff --git a/UniGLTF b/UniGLTF index aa21a1fdc..b3e5b194b 160000 --- a/UniGLTF +++ b/UniGLTF @@ -1 +1 @@ -Subproject commit aa21a1fdc8fd87a6226cde3ce2e95487a52ccb42 +Subproject commit b3e5b194b26a79c0606f92c0565f82ceb5a81b71 From 4e6ccb0b4b0110a64602a927e600be7b234717a1 Mon Sep 17 00:00:00 2001 From: ousttrue Date: Sun, 22 Apr 2018 16:14:58 +0900 Subject: [PATCH 06/16] Add extensionsUsed serializer --- Scripts/Format/VRMFormat.cs | 1 + UniGLTF | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/Scripts/Format/VRMFormat.cs b/Scripts/Format/VRMFormat.cs index 0d00a88b5..ebff260fc 100644 --- a/Scripts/Format/VRMFormat.cs +++ b/Scripts/Format/VRMFormat.cs @@ -52,6 +52,7 @@ namespace VRM protected override void SerializeMembers(JsonFormatter f) { + f.KeyValue(() => extensionsUsed); f.KeyValue(() => extensions); base.SerializeMembers(f); } diff --git a/UniGLTF b/UniGLTF index b3e5b194b..b08b853c1 160000 --- a/UniGLTF +++ b/UniGLTF @@ -1 +1 @@ -Subproject commit b3e5b194b26a79c0606f92c0565f82ceb5a81b71 +Subproject commit b08b853c1a3f758d6adff8089ee7ca606e020582 From 10cc20f9732c0c79e93b5f377b177a4ccca77638 Mon Sep 17 00:00:00 2001 From: ousttrue Date: Sun, 22 Apr 2018 17:02:10 +0900 Subject: [PATCH 07/16] Add exporterVersion --- Scripts/Format/VRMFormat.cs | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/Scripts/Format/VRMFormat.cs b/Scripts/Format/VRMFormat.cs index ebff260fc..8121179d5 100644 --- a/Scripts/Format/VRMFormat.cs +++ b/Scripts/Format/VRMFormat.cs @@ -8,8 +8,7 @@ namespace VRM [Serializable] public class glTF_VRM_extensions : JsonSerializableBase { - [Obsolete("use gltf.asset.generator")] - public string version = VRMVersion.VERSION; + public string exporterVersion = "UniVRM-" + VRMVersion.VERSION; public glTF_VRM_Meta meta = new glTF_VRM_Meta(); public glTF_VRM_Humanoid humanoid = new glTF_VRM_Humanoid(); @@ -20,7 +19,7 @@ namespace VRM protected override void SerializeMembers(JsonFormatter f) { - //f.KeyValue(() => version); + f.KeyValue(() => exporterVersion); f.KeyValue(() => meta); f.KeyValue(() => humanoid); f.KeyValue(() => firstPerson); From 7f3cd3696628c29d2ff5cda02c46e856b9d32569 Mon Sep 17 00:00:00 2001 From: ousttrue Date: Sun, 22 Apr 2018 17:20:03 +0900 Subject: [PATCH 08/16] Show & check exporter version --- Scripts/Format/VRMImporterContext.cs | 3 +- Scripts/Format/VRMVersion.cs | 45 ++++++++++++++++++++++++++++ Scripts/Meta/Editor/VRMMetaEditor.cs | 8 +++++ Scripts/Meta/VRMMetaObject.cs | 3 ++ 4 files changed, 58 insertions(+), 1 deletion(-) diff --git a/Scripts/Format/VRMImporterContext.cs b/Scripts/Format/VRMImporterContext.cs index c986b1156..71899779e 100644 --- a/Scripts/Format/VRMImporterContext.cs +++ b/Scripts/Format/VRMImporterContext.cs @@ -38,9 +38,10 @@ namespace VRM { var meta=ScriptableObject.CreateInstance(); meta.name = "Meta"; + meta.ExporterVersion = VRM.extensions.VRM.exporterVersion; var gltfMeta = VRM.extensions.VRM.meta; - meta.Version = gltfMeta.version; + meta.Version = gltfMeta.version; // model version meta.Author = gltfMeta.author; meta.ContactInformation = gltfMeta.contactInformation; meta.Reference = gltfMeta.reference; diff --git a/Scripts/Format/VRMVersion.cs b/Scripts/Format/VRMVersion.cs index 20912a780..db5fea0e2 100644 --- a/Scripts/Format/VRMVersion.cs +++ b/Scripts/Format/VRMVersion.cs @@ -1,4 +1,6 @@ +using System; + namespace VRM { public static class VRMVersion @@ -10,5 +12,48 @@ namespace VRM public const string DecrementMenuName = "VRM/Version(0.36) Decrement"; public const string IncrementMenuName = "VRM/Version(0.36) Increment"; + + public static bool IsNewer(string version) + { + if (string.IsNullOrEmpty(version)) + { + return false; + } + + var prefix = "UniVRM-"; + if (version.StartsWith(prefix)) + { + version = version.Substring(prefix.Length); + } + + var splited = version.Split('.'); + if (splited.Length < 2) + { + return false; + } + + try + { + var major = int.Parse(splited[0]); + var minor = int.Parse(splited[1]); + + if (major < MAJOR) + { + return false; + } + else if (major > MAJOR) + { + return true; + } + else + { + return minor > MINOR; + } + } + catch (Exception) + { + return false; + } + } } } diff --git a/Scripts/Meta/Editor/VRMMetaEditor.cs b/Scripts/Meta/Editor/VRMMetaEditor.cs index 0ebfe72d6..b5e861d22 100644 --- a/Scripts/Meta/Editor/VRMMetaEditor.cs +++ b/Scripts/Meta/Editor/VRMMetaEditor.cs @@ -79,6 +79,14 @@ namespace VRM so.Update(); + GUI.enabled = false; + EditorGUILayout.PropertyField(m_propMap["ExporterVersion"]); + if (VRMVersion.IsNewer(m_propMap["ExporterVersion"].stringValue)) + { + EditorGUILayout.HelpBox("Check UniVRM new version. https://github.com/dwango/UniVRM/releases", MessageType.Warning); + } + GUI.enabled = true; + m_foldoutInfo = EditorGUILayout.Foldout(m_foldoutInfo, "Information"); if (m_foldoutInfo) { diff --git a/Scripts/Meta/VRMMetaObject.cs b/Scripts/Meta/VRMMetaObject.cs index 6c6a3fa83..b614d25a5 100644 --- a/Scripts/Meta/VRMMetaObject.cs +++ b/Scripts/Meta/VRMMetaObject.cs @@ -5,6 +5,9 @@ namespace VRM { public class VRMMetaObject : ScriptableObject { + [SerializeField] + public string ExporterVersion; + #region Info [SerializeField] public string Title; From 9e01f7429e0bdd0dd079c9a26d2093552c4d0703 Mon Sep 17 00:00:00 2001 From: ousttrue Date: Sun, 22 Apr 2018 17:25:28 +0900 Subject: [PATCH 09/16] Update MToon --- MToon | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/MToon b/MToon index 895336276..e07db9264 160000 --- a/MToon +++ b/MToon @@ -1 +1 @@ -Subproject commit 8953362767f9556cbc15cd2c2d649518a7e9dc7a +Subproject commit e07db9264b04febc0440a2a449e4428445f410fd From 8b11e62135bb4829e9f11879eff27b3420a932ec Mon Sep 17 00:00:00 2001 From: ousttrue Date: Wed, 9 May 2018 15:55:29 +0900 Subject: [PATCH 10/16] Update MToon --- MToon | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/MToon b/MToon index e07db9264..ef2c8ff29 160000 --- a/MToon +++ b/MToon @@ -1 +1 @@ -Subproject commit e07db9264b04febc0440a2a449e4428445f410fd +Subproject commit ef2c8ff2959e265260d8918d911191c4e75806c4 From 6dba52f14fef0fbe15c76b9b350d5e3fe96fc05d Mon Sep 17 00:00:00 2001 From: ousttrue Date: Sun, 20 May 2018 05:06:35 +0900 Subject: [PATCH 11/16] skip !GameObject.activeSelf --- .../Editor/BoneNormalizer.cs | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/Scripts/SkinnedMeshUtility/Editor/BoneNormalizer.cs b/Scripts/SkinnedMeshUtility/Editor/BoneNormalizer.cs index 685c05ec6..2da7592a5 100644 --- a/Scripts/SkinnedMeshUtility/Editor/BoneNormalizer.cs +++ b/Scripts/SkinnedMeshUtility/Editor/BoneNormalizer.cs @@ -20,13 +20,14 @@ namespace VRM foreach (Transform child in src) { - var dstChild = new GameObject(child.name); - dstChild.transform.SetParent(dst); - dstChild.transform.position = child.position; // copy position only + if (child.gameObject.activeSelf) + { + var dstChild = new GameObject(child.name); + dstChild.transform.SetParent(dst); + dstChild.transform.position = child.position; // copy position only - //dstChild.AddComponent(); - - CopyAndBuild(child, dstChild.transform, boneMap); + CopyAndBuild(child, dstChild.transform, boneMap); + } } } @@ -125,7 +126,11 @@ namespace VRM // foreach (var src in go.transform.Traverse()) { - var dst = boneMap[src]; + Transform dst; + if(!boneMap.TryGetValue(src, out dst)) + { + continue; + } { // From 61c10da0c10d284ea93cd742c65d6b3fa68edfdb Mon Sep 17 00:00:00 2001 From: ousttrue Date: Sun, 20 May 2018 05:23:33 +0900 Subject: [PATCH 12/16] Update UniGLTF --- UniGLTF | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/UniGLTF b/UniGLTF index b08b853c1..04f8a4cea 160000 --- a/UniGLTF +++ b/UniGLTF @@ -1 +1 @@ -Subproject commit b08b853c1a3f758d6adff8089ee7ca606e020582 +Subproject commit 04f8a4cea3f33a080236342d8a5c95eec9cd8f50 From bf26163c43518513c4fce1b84ead9be7f13fac83 Mon Sep 17 00:00:00 2001 From: ousttrue Date: Sun, 20 May 2018 05:24:26 +0900 Subject: [PATCH 13/16] Implement normalization for MeshRenderer --- .../Editor/BoneNormalizer.cs | 29 ++++++++++++++++++- 1 file changed, 28 insertions(+), 1 deletion(-) diff --git a/Scripts/SkinnedMeshUtility/Editor/BoneNormalizer.cs b/Scripts/SkinnedMeshUtility/Editor/BoneNormalizer.cs index 2da7592a5..778923f5f 100644 --- a/Scripts/SkinnedMeshUtility/Editor/BoneNormalizer.cs +++ b/Scripts/SkinnedMeshUtility/Editor/BoneNormalizer.cs @@ -300,7 +300,7 @@ namespace VRM if (srcRenderer!=null && srcRenderer.enabled) { var dstFilter = dst.gameObject.AddComponent(); - dstFilter.sharedMesh = srcFilter.sharedMesh; + dstFilter.sharedMesh = TransformMesh(srcFilter.sharedMesh, src.localToWorldMatrix); var dstRenderer = dst.gameObject.AddComponent(); dstRenderer.sharedMaterials = srcRenderer.sharedMaterials; @@ -311,5 +311,32 @@ namespace VRM return normalized; } + + static Mesh TransformMesh(Mesh src, Matrix4x4 m) + { + m.SetColumn(3, new Vector4(0, 0, 0, 1)); + + var mesh = new Mesh(); + mesh.name = src.name + "(transformed)"; + + mesh.vertices = src.vertices.Select(x => m.MultiplyPoint(x)).ToArray(); + if(src.normals!=null)mesh.normals = src.normals.Select(x => m.MultiplyVector(x)).ToArray(); + if(src.tangents!=null)mesh.tangents = src.tangents.Select(x => + { + var v = m.MultiplyVector(x); + return new Vector4(v.x, v.y, v.z, x.w); + }).ToArray(); + mesh.uv = src.uv; + mesh.uv2 = src.uv2; + mesh.uv3 = src.uv3; + mesh.uv4 = src.uv4; + mesh.colors = src.colors; + mesh.subMeshCount = src.subMeshCount; + for(int i=0; i Date: Mon, 21 May 2018 14:31:34 +0900 Subject: [PATCH 14/16] Update BoneNormalizer --- .../Editor/BoneNormalizer.cs | 30 ++++++++++++------- 1 file changed, 20 insertions(+), 10 deletions(-) diff --git a/Scripts/SkinnedMeshUtility/Editor/BoneNormalizer.cs b/Scripts/SkinnedMeshUtility/Editor/BoneNormalizer.cs index 778923f5f..09d7bd788 100644 --- a/Scripts/SkinnedMeshUtility/Editor/BoneNormalizer.cs +++ b/Scripts/SkinnedMeshUtility/Editor/BoneNormalizer.cs @@ -320,23 +320,33 @@ namespace VRM mesh.name = src.name + "(transformed)"; mesh.vertices = src.vertices.Select(x => m.MultiplyPoint(x)).ToArray(); - if(src.normals!=null)mesh.normals = src.normals.Select(x => m.MultiplyVector(x)).ToArray(); - if(src.tangents!=null)mesh.tangents = src.tangents.Select(x => + if (src.normals != null && src.normals.Length > 0) { - var v = m.MultiplyVector(x); - return new Vector4(v.x, v.y, v.z, x.w); - }).ToArray(); - mesh.uv = src.uv; - mesh.uv2 = src.uv2; - mesh.uv3 = src.uv3; - mesh.uv4 = src.uv4; - mesh.colors = src.colors; + mesh.normals = src.normals.Select(x => m.MultiplyVector(x)).ToArray(); + } + if (src.tangents != null && src.tangents.Length > 0) + { + mesh.tangents = src.tangents.Select(x => + { + var t = m.MultiplyVector((Vector3)x); + return new Vector4(t.x, t.y, t.z, x.w); + }).ToArray(); + } + + if (src.colors != null && src.colors.Length > 0) mesh.colors = src.colors; + if (src.uv != null && src.uv.Length > 0) mesh.uv = src.uv; + if (src.uv2 != null && src.uv2.Length > 0) mesh.uv2 = src.uv2; + if (src.uv3 != null && src.uv3.Length > 0) mesh.uv3 = src.uv3; + if (src.uv4 != null && src.uv4.Length > 0) mesh.uv4 = src.uv4; + mesh.subMeshCount = src.subMeshCount; for(int i=0; i Date: Mon, 21 May 2018 15:08:06 +0900 Subject: [PATCH 15/16] Move Shaders to Resources/Shaders --- Resources.meta | 9 +++++++++ Shaders.meta => Resources/Shaders.meta | 0 {Shaders => Resources/Shaders}/VRMShaders.shadervariants | 0 .../Shaders}/VRMShaders.shadervariants.meta | 0 {Shaders => Resources/Shaders}/VRMUnlitCutout.shader | 0 .../Shaders}/VRMUnlitCutout.shader.meta | 0 {Shaders => Resources/Shaders}/VRMUnlitTexture.shader | 0 .../Shaders}/VRMUnlitTexture.shader.meta | 0 .../Shaders}/VRMUnlitTransparent.shader | 0 .../Shaders}/VRMUnlitTransparent.shader.meta | 0 .../Shaders}/VRMUnlitTransparentZWrite.shader | 0 .../Shaders}/VRMUnlitTransparentZWrite.shader.meta | 0 12 files changed, 9 insertions(+) create mode 100644 Resources.meta rename Shaders.meta => Resources/Shaders.meta (100%) rename {Shaders => Resources/Shaders}/VRMShaders.shadervariants (100%) rename {Shaders => Resources/Shaders}/VRMShaders.shadervariants.meta (100%) rename {Shaders => Resources/Shaders}/VRMUnlitCutout.shader (100%) rename {Shaders => Resources/Shaders}/VRMUnlitCutout.shader.meta (100%) rename {Shaders => Resources/Shaders}/VRMUnlitTexture.shader (100%) rename {Shaders => Resources/Shaders}/VRMUnlitTexture.shader.meta (100%) rename {Shaders => Resources/Shaders}/VRMUnlitTransparent.shader (100%) rename {Shaders => Resources/Shaders}/VRMUnlitTransparent.shader.meta (100%) rename {Shaders => Resources/Shaders}/VRMUnlitTransparentZWrite.shader (100%) rename {Shaders => Resources/Shaders}/VRMUnlitTransparentZWrite.shader.meta (100%) diff --git a/Resources.meta b/Resources.meta new file mode 100644 index 000000000..dba650264 --- /dev/null +++ b/Resources.meta @@ -0,0 +1,9 @@ +fileFormatVersion: 2 +guid: 48dcd5308bfbc814ba46c9f74a040385 +folderAsset: yes +timeCreated: 1526882640 +licenseType: Pro +DefaultImporter: + userData: + assetBundleName: + assetBundleVariant: diff --git a/Shaders.meta b/Resources/Shaders.meta similarity index 100% rename from Shaders.meta rename to Resources/Shaders.meta diff --git a/Shaders/VRMShaders.shadervariants b/Resources/Shaders/VRMShaders.shadervariants similarity index 100% rename from Shaders/VRMShaders.shadervariants rename to Resources/Shaders/VRMShaders.shadervariants diff --git a/Shaders/VRMShaders.shadervariants.meta b/Resources/Shaders/VRMShaders.shadervariants.meta similarity index 100% rename from Shaders/VRMShaders.shadervariants.meta rename to Resources/Shaders/VRMShaders.shadervariants.meta diff --git a/Shaders/VRMUnlitCutout.shader b/Resources/Shaders/VRMUnlitCutout.shader similarity index 100% rename from Shaders/VRMUnlitCutout.shader rename to Resources/Shaders/VRMUnlitCutout.shader diff --git a/Shaders/VRMUnlitCutout.shader.meta b/Resources/Shaders/VRMUnlitCutout.shader.meta similarity index 100% rename from Shaders/VRMUnlitCutout.shader.meta rename to Resources/Shaders/VRMUnlitCutout.shader.meta diff --git a/Shaders/VRMUnlitTexture.shader b/Resources/Shaders/VRMUnlitTexture.shader similarity index 100% rename from Shaders/VRMUnlitTexture.shader rename to Resources/Shaders/VRMUnlitTexture.shader diff --git a/Shaders/VRMUnlitTexture.shader.meta b/Resources/Shaders/VRMUnlitTexture.shader.meta similarity index 100% rename from Shaders/VRMUnlitTexture.shader.meta rename to Resources/Shaders/VRMUnlitTexture.shader.meta diff --git a/Shaders/VRMUnlitTransparent.shader b/Resources/Shaders/VRMUnlitTransparent.shader similarity index 100% rename from Shaders/VRMUnlitTransparent.shader rename to Resources/Shaders/VRMUnlitTransparent.shader diff --git a/Shaders/VRMUnlitTransparent.shader.meta b/Resources/Shaders/VRMUnlitTransparent.shader.meta similarity index 100% rename from Shaders/VRMUnlitTransparent.shader.meta rename to Resources/Shaders/VRMUnlitTransparent.shader.meta diff --git a/Shaders/VRMUnlitTransparentZWrite.shader b/Resources/Shaders/VRMUnlitTransparentZWrite.shader similarity index 100% rename from Shaders/VRMUnlitTransparentZWrite.shader rename to Resources/Shaders/VRMUnlitTransparentZWrite.shader diff --git a/Shaders/VRMUnlitTransparentZWrite.shader.meta b/Resources/Shaders/VRMUnlitTransparentZWrite.shader.meta similarity index 100% rename from Shaders/VRMUnlitTransparentZWrite.shader.meta rename to Resources/Shaders/VRMUnlitTransparentZWrite.shader.meta From bb6c183d17d7732d4d03c8f0eb57e48201d600e4 Mon Sep 17 00:00:00 2001 From: ousttrue Date: Mon, 21 May 2018 17:24:53 +0900 Subject: [PATCH 16/16] Update MToon --- MToon | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/MToon b/MToon index ef2c8ff29..ec0fe1a73 160000 --- a/MToon +++ b/MToon @@ -1 +1 @@ -Subproject commit ef2c8ff2959e265260d8918d911191c4e75806c4 +Subproject commit ec0fe1a730ab97af0af30081bcba78817e379848