From 3a0ae1749ec61c9c785da369c92ae4e30cb318e2 Mon Sep 17 00:00:00 2001 From: PoChangSu Date: Thu, 18 Jun 2020 17:41:25 +0900 Subject: [PATCH 1/6] Add mesh utility --- Assets/MeshUtility.meta | 8 + Assets/MeshUtility/Editor.meta | 8 + Assets/MeshUtility/Editor/MeshUtility.cs | 251 ++++++++++++++++++ Assets/MeshUtility/Editor/MeshUtility.cs.meta | 11 + Assets/MeshUtility/MeshUtility.asmdef | 3 + Assets/MeshUtility/MeshUtility.asmdef.meta | 7 + Assets/MeshUtility/package.json | 9 + Assets/MeshUtility/package.json.meta | 7 + 8 files changed, 304 insertions(+) create mode 100644 Assets/MeshUtility.meta create mode 100644 Assets/MeshUtility/Editor.meta create mode 100644 Assets/MeshUtility/Editor/MeshUtility.cs create mode 100644 Assets/MeshUtility/Editor/MeshUtility.cs.meta create mode 100644 Assets/MeshUtility/MeshUtility.asmdef create mode 100644 Assets/MeshUtility/MeshUtility.asmdef.meta create mode 100644 Assets/MeshUtility/package.json create mode 100644 Assets/MeshUtility/package.json.meta diff --git a/Assets/MeshUtility.meta b/Assets/MeshUtility.meta new file mode 100644 index 0000000000..28298acd3e --- /dev/null +++ b/Assets/MeshUtility.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: f11c20c3f50e40b4f8f6259f8e0886e0 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MeshUtility/Editor.meta b/Assets/MeshUtility/Editor.meta new file mode 100644 index 0000000000..9c63441d45 --- /dev/null +++ b/Assets/MeshUtility/Editor.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 1e0d906064b5cad4394c89ec960a887e +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MeshUtility/Editor/MeshUtility.cs b/Assets/MeshUtility/Editor/MeshUtility.cs new file mode 100644 index 0000000000..af19d098ec --- /dev/null +++ b/Assets/MeshUtility/Editor/MeshUtility.cs @@ -0,0 +1,251 @@ +using System.Collections.Generic; +using System.IO; +using System.Linq; +using UnityEngine; +using UnityEditor; + +namespace MeshUtility +{ + public class MeshUtility : MonoBehaviour + { + const string ASSET_SUFFIX = ".mesh.asset"; + + private enum BlendShapeLogic + { + WithBlendShape, + WithoutBlendShape, + } + + [MenuItem("Mesh Utility/Extract BlendShape Mesh")] + static void CreateGameObjectWithBlendShapeMeshSeparate() + { + var go = Selection.activeTransform.gameObject; + + if (go.GetComponentsInChildren().Length > 0) + { + ExtractBlendShapeMeshFromSkinnedMesh(go); + go.SetActive(false); + } + else + { + EditorUtility.DisplayDialog("Error", "No skinnedMeshRenderer contained", "ok"); + } + } + + private static void ExtractBlendShapeMeshFromSkinnedMesh(GameObject go) + { + var outputObject = Instantiate(go); + var skinnedMeshRenderers = outputObject.GetComponentsInChildren(); + foreach (var skinnedMeshRenderer in skinnedMeshRenderers) + { + if (skinnedMeshRenderer.sharedMesh.blendShapeCount > 0) + { + BlendShapeDivide(skinnedMeshRenderer); + } + } + } + + private static void BlendShapeDivide(SkinnedMeshRenderer skinnedMeshRendererInput) + { + var indicesUsedByBlendShape = new Dictionary(); + var mesh = skinnedMeshRendererInput.sharedMesh; + var zeroMovement = new Vector3(0, 0, 0); + + // retrieve the original BlendShape data + for (int i = 0; i < mesh.blendShapeCount; ++i) + { + var deltaVertices = new Vector3[mesh.vertexCount]; + var deltaNormals = new Vector3[mesh.vertexCount]; + var deltaTangents = new Vector3[mesh.vertexCount]; + mesh.GetBlendShapeFrameVertices(i, 0, deltaVertices, deltaNormals, deltaTangents); + + for (int j = 0; j < deltaVertices.Length; j++) + { + if (!deltaVertices[j].Equals(zeroMovement)) + { + if (!indicesUsedByBlendShape.Values.Contains(j)) + { + indicesUsedByBlendShape.Add(indicesUsedByBlendShape.Count, j); + } + } + } + } + + var subMeshCount = mesh.subMeshCount; + var submeshesWithoutBlendShape = new int[subMeshCount][]; + var submeshesWithBlendShape = new int[subMeshCount][]; + var vertexIndexWithBlendShape = new Dictionary(); + var vertexCounterWithBlendShape = 0; + var vertexIndexWithoutBlendShape = new Dictionary(); + var vertexCounterWithoutBlendShape = 0; + + // check blendshape's vertex index from submesh + for (int i = 0; i < subMeshCount; i++) + { + var triangle = mesh.GetTriangles(i); + var submeshWithBlendShape = new List(); + var meshWithoutBlendShape = new List(); + + for (int j = 0; j < triangle.Length; j += 3) + { + if (indicesUsedByBlendShape.Values.Contains(triangle[j]) || + indicesUsedByBlendShape.Values.Contains(triangle[j + 1]) || + indicesUsedByBlendShape.Values.Contains(triangle[j + 2])) + { + BuildNewTriangleList(vertexIndexWithBlendShape, triangle, j, submeshWithBlendShape, ref vertexCounterWithBlendShape); + } + else + { + BuildNewTriangleList(vertexIndexWithoutBlendShape, triangle, j, meshWithoutBlendShape, ref vertexCounterWithoutBlendShape); + } + } + submeshesWithBlendShape[i] = submeshWithBlendShape.ToArray(); + submeshesWithoutBlendShape[i] = meshWithoutBlendShape.ToArray(); + } + + // check if any BlendShape exists + if (submeshesWithoutBlendShape.Any(x => x.Length != 0)) + { + // put the mesh without BlendShape in a new SkinnedMeshRenderer + var srcGameObject = skinnedMeshRendererInput.gameObject; + var srcTransform = skinnedMeshRendererInput.transform.parent; + var targetObjectForMeshWithoutBS = Instantiate(srcGameObject); + targetObjectForMeshWithoutBS.name = srcGameObject.name + "_WithoutBlendShape"; + targetObjectForMeshWithoutBS.transform.SetParent(srcTransform); + var skinnedMeshRendererWithoutBS = targetObjectForMeshWithoutBS.GetComponent(); + + // build meshes with/without BlendShape + BuildNewMesh(skinnedMeshRendererInput, vertexIndexWithBlendShape, submeshesWithBlendShape, BlendShapeLogic.WithBlendShape); + BuildNewMesh(skinnedMeshRendererWithoutBS, vertexIndexWithoutBlendShape, submeshesWithoutBlendShape, BlendShapeLogic.WithoutBlendShape); + } + } + + private static void BuildNewTriangleList(Dictionary newVerticesListLookUp, int[] triangleList, int index, + List newTriangleList, ref int lookupCounter) + { + // build new vertex list and triangle list + // vertex 1 + if (!newVerticesListLookUp.Keys.Contains(triangleList[index])) + { + newVerticesListLookUp.Add(triangleList[index], lookupCounter); + newTriangleList.Add(lookupCounter); + lookupCounter++; + } + else + { + var newVertexIndex = newVerticesListLookUp[triangleList[index]]; + newTriangleList.Add(newVertexIndex); + } + // vertex 2 + if (!newVerticesListLookUp.Keys.Contains(triangleList[index + 1])) + { + newVerticesListLookUp.Add(triangleList[index + 1], lookupCounter); + newTriangleList.Add(lookupCounter); + lookupCounter++; + } + else + { + var newVertexIndex = newVerticesListLookUp[triangleList[index + 1]]; + newTriangleList.Add(newVertexIndex); + } + // vertex 3 + if (!newVerticesListLookUp.Keys.Contains(triangleList[index + 2])) + { + newVerticesListLookUp.Add(triangleList[index + 2], lookupCounter); + newTriangleList.Add(lookupCounter); + lookupCounter++; + } + else + { + var newVertexIndex = newVerticesListLookUp[triangleList[index + 2]]; + newTriangleList.Add(newVertexIndex); + } + } + + private static void BuildNewMesh(SkinnedMeshRenderer skinnedMeshRenderer, Dictionary newIndexLookUpDict, + int[][] subMeshes, BlendShapeLogic blendShapeLabel) + { + // get original mesh data + var materialList = new List(); + skinnedMeshRenderer.GetSharedMaterials(materialList); + var mesh = skinnedMeshRenderer.sharedMesh; + var meshVertices = mesh.vertices; + var meshNormals = mesh.normals; + var meshTangents = mesh.tangents; + var meshColors = mesh.colors; + var meshBoneWeights = mesh.boneWeights; + var meshUVs = mesh.uv; + + // build new mesh + var materialListNew = new List(); + var newMesh = new Mesh(); + + if (mesh.vertexCount > ushort.MaxValue) + { +#if UNITY_2017_3_OR_NEWER + Debug.LogFormat("exceed 65535 vertices: {0}", mesh.vertexCount); + newMesh.indexFormat = UnityEngine.Rendering.IndexFormat.UInt32; +#else + throw new NotImplementedException(String.Format("exceed 65535 vertices: {0}", integrator.Positions.Count.ToString())); +#endif + } + + var newDataLength = newIndexLookUpDict.Count; + var newIndexLookUp = newIndexLookUpDict.Keys.ToArray(); + newMesh.vertices = newIndexLookUp.Select(x => meshVertices[x]).ToArray(); + newMesh.normals = newIndexLookUp.Select(x => meshNormals[x]).ToArray(); + if (meshTangents.Length > 0) newMesh.tangents = newIndexLookUp.Select(x => meshTangents[x]).ToArray(); + if (meshColors.Length > 0) newMesh.colors = newIndexLookUp.Select(x => meshColors[x]).ToArray(); + newMesh.boneWeights = newIndexLookUp.Select(x => meshBoneWeights[x]).ToArray(); + newMesh.uv = newIndexLookUp.Select(x => meshUVs[x]).ToArray(); + newMesh.bindposes = mesh.bindposes; + + // add BlendShape data + if (blendShapeLabel == BlendShapeLogic.WithBlendShape) + { + for (int i = 0; i < mesh.blendShapeCount; i++) + { + // get original BlendShape data + var srcVertices = new Vector3[mesh.vertexCount]; + var srcNormals = new Vector3[mesh.vertexCount]; + var srcTangents = new Vector3[mesh.vertexCount]; + mesh.GetBlendShapeFrameVertices(i, 0, srcVertices, srcNormals, srcTangents); + + // declare the size for the destination array + var dstVertices = new Vector3[newDataLength]; + var dstNormals = new Vector3[newDataLength]; + var dstTangents = new Vector3[newDataLength]; + + dstVertices = newIndexLookUp.Select(x => srcVertices[x]).ToArray(); + dstNormals = newIndexLookUp.Select(x => srcNormals[x]).ToArray(); + dstTangents = newIndexLookUp.Select(x => srcTangents[x]).ToArray(); + newMesh.AddBlendShapeFrame(mesh.GetBlendShapeName(i), mesh.GetBlendShapeFrameWeight(i, 0), + dstVertices, dstNormals, dstTangents); + } + } + + // build material list + var subMeshCounter = 0; + for (int i = 0; i < subMeshes.Length; i++) + { + if (subMeshes[i].Length > 0) + { + newMesh.SetTriangles(subMeshes[i], subMeshCounter); + materialListNew.Add(materialList[i]); + subMeshCounter++; + newMesh.subMeshCount++; + } + } + + newMesh.subMeshCount = subMeshCounter; + skinnedMeshRenderer.sharedMaterials = materialListNew.ToArray(); + skinnedMeshRenderer.sharedMesh = newMesh; + + // save mesh as asset + var directory = Path.GetDirectoryName(AssetDatabase.GetAssetPath(mesh)).Replace("\\", "/"); + var assetPath = directory + "/" + Path.GetFileNameWithoutExtension(mesh.name) + "_" + blendShapeLabel.ToString() + ASSET_SUFFIX; + Debug.LogFormat("CreateAsset: {0}", assetPath); + AssetDatabase.CreateAsset(newMesh, assetPath); + } + } +} \ No newline at end of file diff --git a/Assets/MeshUtility/Editor/MeshUtility.cs.meta b/Assets/MeshUtility/Editor/MeshUtility.cs.meta new file mode 100644 index 0000000000..2fb0aadd16 --- /dev/null +++ b/Assets/MeshUtility/Editor/MeshUtility.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: c1bbe850b95e44740bbbb44064e17d25 +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MeshUtility/MeshUtility.asmdef b/Assets/MeshUtility/MeshUtility.asmdef new file mode 100644 index 0000000000..f161fcafe4 --- /dev/null +++ b/Assets/MeshUtility/MeshUtility.asmdef @@ -0,0 +1,3 @@ +{ + "name": "MeshUtility" +} diff --git a/Assets/MeshUtility/MeshUtility.asmdef.meta b/Assets/MeshUtility/MeshUtility.asmdef.meta new file mode 100644 index 0000000000..ad84160c79 --- /dev/null +++ b/Assets/MeshUtility/MeshUtility.asmdef.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: eedb868807606df4db953419ab9e0780 +AssemblyDefinitionImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MeshUtility/package.json b/Assets/MeshUtility/package.json new file mode 100644 index 0000000000..631b023656 --- /dev/null +++ b/Assets/MeshUtility/package.json @@ -0,0 +1,9 @@ +{ + "name" : "com.vrmc.meshutility", + "displayName" : "MeshUtility", + "version" : "1.0.0", + "unity" : "2018.4", + "description" : "mesh utility", + "keywords" : [ "mesh" ], + "author" : { "name": "VRM Consortium" } +} \ No newline at end of file diff --git a/Assets/MeshUtility/package.json.meta b/Assets/MeshUtility/package.json.meta new file mode 100644 index 0000000000..e590e57a5e --- /dev/null +++ b/Assets/MeshUtility/package.json.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 8ae0f09270317494b8fe54cf2858ffc4 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: From 512c88671b3039c660514f347226d2ab91b10179 Mon Sep 17 00:00:00 2001 From: PoChangSu Date: Mon, 22 Jun 2020 17:29:39 +0900 Subject: [PATCH 2/6] refactoring --- Assets/MeshUtility/Editor/MeshUtility.cs | 80 ++++++++++++------------ 1 file changed, 39 insertions(+), 41 deletions(-) diff --git a/Assets/MeshUtility/Editor/MeshUtility.cs b/Assets/MeshUtility/Editor/MeshUtility.cs index af19d098ec..6e14e69297 100644 --- a/Assets/MeshUtility/Editor/MeshUtility.cs +++ b/Assets/MeshUtility/Editor/MeshUtility.cs @@ -8,7 +8,8 @@ namespace MeshUtility { public class MeshUtility : MonoBehaviour { - const string ASSET_SUFFIX = ".mesh.asset"; + private const string ASSET_SUFFIX = ".mesh.asset"; + private static readonly Vector3 Zero_Movement = Vector3.zero; private enum BlendShapeLogic { @@ -16,14 +17,14 @@ private enum BlendShapeLogic WithoutBlendShape, } - [MenuItem("Mesh Utility/Extract BlendShape Mesh")] - static void CreateGameObjectWithBlendShapeMeshSeparate() + [MenuItem("Mesh Utility/Separate Skinned Meshes Contained BlendShape")] + public static void SeparateSkinnedMeshContainedBlendShape() { var go = Selection.activeTransform.gameObject; if (go.GetComponentsInChildren().Length > 0) { - ExtractBlendShapeMeshFromSkinnedMesh(go); + SeparationProcessing(go); go.SetActive(false); } else @@ -32,7 +33,7 @@ static void CreateGameObjectWithBlendShapeMeshSeparate() } } - private static void ExtractBlendShapeMeshFromSkinnedMesh(GameObject go) + private static void SeparationProcessing(GameObject go) { var outputObject = Instantiate(go); var skinnedMeshRenderers = outputObject.GetComponentsInChildren(); @@ -40,16 +41,15 @@ private static void ExtractBlendShapeMeshFromSkinnedMesh(GameObject go) { if (skinnedMeshRenderer.sharedMesh.blendShapeCount > 0) { - BlendShapeDivide(skinnedMeshRenderer); + SeparatePolyWithBlendShape(skinnedMeshRenderer); } } } - private static void BlendShapeDivide(SkinnedMeshRenderer skinnedMeshRendererInput) + private static void SeparatePolyWithBlendShape(SkinnedMeshRenderer skinnedMeshRendererInput) { var indicesUsedByBlendShape = new Dictionary(); var mesh = skinnedMeshRendererInput.sharedMesh; - var zeroMovement = new Vector3(0, 0, 0); // retrieve the original BlendShape data for (int i = 0; i < mesh.blendShapeCount; ++i) @@ -61,7 +61,7 @@ private static void BlendShapeDivide(SkinnedMeshRenderer skinnedMeshRendererInpu for (int j = 0; j < deltaVertices.Length; j++) { - if (!deltaVertices[j].Equals(zeroMovement)) + if (!deltaVertices[j].Equals(Zero_Movement)) { if (!indicesUsedByBlendShape.Values.Contains(j)) { @@ -72,8 +72,8 @@ private static void BlendShapeDivide(SkinnedMeshRenderer skinnedMeshRendererInpu } var subMeshCount = mesh.subMeshCount; - var submeshesWithoutBlendShape = new int[subMeshCount][]; - var submeshesWithBlendShape = new int[subMeshCount][]; + var submeshesWithBlendShape = new Dictionary(); + var submeshesWithoutBlendShape = new Dictionary(); var vertexIndexWithBlendShape = new Dictionary(); var vertexCounterWithBlendShape = 0; var vertexIndexWithoutBlendShape = new Dictionary(); @@ -84,7 +84,7 @@ private static void BlendShapeDivide(SkinnedMeshRenderer skinnedMeshRendererInpu { var triangle = mesh.GetTriangles(i); var submeshWithBlendShape = new List(); - var meshWithoutBlendShape = new List(); + var submeshWithoutBlendShape = new List(); for (int j = 0; j < triangle.Length; j += 3) { @@ -96,15 +96,17 @@ private static void BlendShapeDivide(SkinnedMeshRenderer skinnedMeshRendererInpu } else { - BuildNewTriangleList(vertexIndexWithoutBlendShape, triangle, j, meshWithoutBlendShape, ref vertexCounterWithoutBlendShape); + BuildNewTriangleList(vertexIndexWithoutBlendShape, triangle, j, submeshWithoutBlendShape, ref vertexCounterWithoutBlendShape); } } - submeshesWithBlendShape[i] = submeshWithBlendShape.ToArray(); - submeshesWithoutBlendShape[i] = meshWithoutBlendShape.ToArray(); + if (submeshWithBlendShape.Count > 0) + submeshesWithBlendShape.Add(i, submeshWithBlendShape.ToArray()); + if (submeshWithoutBlendShape.Count > 0) + submeshesWithoutBlendShape.Add(i, submeshWithoutBlendShape.ToArray()); ; } // check if any BlendShape exists - if (submeshesWithoutBlendShape.Any(x => x.Length != 0)) + if (submeshesWithoutBlendShape.Count > 0) { // put the mesh without BlendShape in a new SkinnedMeshRenderer var srcGameObject = skinnedMeshRendererInput.gameObject; @@ -121,15 +123,15 @@ private static void BlendShapeDivide(SkinnedMeshRenderer skinnedMeshRendererInpu } private static void BuildNewTriangleList(Dictionary newVerticesListLookUp, int[] triangleList, int index, - List newTriangleList, ref int lookupCounter) + List newTriangleList, ref int vertexCounter) { // build new vertex list and triangle list // vertex 1 if (!newVerticesListLookUp.Keys.Contains(triangleList[index])) { - newVerticesListLookUp.Add(triangleList[index], lookupCounter); - newTriangleList.Add(lookupCounter); - lookupCounter++; + newVerticesListLookUp.Add(triangleList[index], vertexCounter); + newTriangleList.Add(vertexCounter); + vertexCounter++; } else { @@ -139,9 +141,9 @@ private static void BuildNewTriangleList(Dictionary newVerticesListLoo // vertex 2 if (!newVerticesListLookUp.Keys.Contains(triangleList[index + 1])) { - newVerticesListLookUp.Add(triangleList[index + 1], lookupCounter); - newTriangleList.Add(lookupCounter); - lookupCounter++; + newVerticesListLookUp.Add(triangleList[index + 1], vertexCounter); + newTriangleList.Add(vertexCounter); + vertexCounter++; } else { @@ -151,9 +153,9 @@ private static void BuildNewTriangleList(Dictionary newVerticesListLoo // vertex 3 if (!newVerticesListLookUp.Keys.Contains(triangleList[index + 2])) { - newVerticesListLookUp.Add(triangleList[index + 2], lookupCounter); - newTriangleList.Add(lookupCounter); - lookupCounter++; + newVerticesListLookUp.Add(triangleList[index + 2], vertexCounter); + newTriangleList.Add(vertexCounter); + vertexCounter++; } else { @@ -163,7 +165,7 @@ private static void BuildNewTriangleList(Dictionary newVerticesListLoo } private static void BuildNewMesh(SkinnedMeshRenderer skinnedMeshRenderer, Dictionary newIndexLookUpDict, - int[][] subMeshes, BlendShapeLogic blendShapeLabel) + Dictionary subMeshes, BlendShapeLogic blendShapeLabel) { // get original mesh data var materialList = new List(); @@ -192,12 +194,13 @@ private static void BuildNewMesh(SkinnedMeshRenderer skinnedMeshRenderer, Dictio var newDataLength = newIndexLookUpDict.Count; var newIndexLookUp = newIndexLookUpDict.Keys.ToArray(); + newMesh.vertices = newIndexLookUp.Select(x => meshVertices[x]).ToArray(); - newMesh.normals = newIndexLookUp.Select(x => meshNormals[x]).ToArray(); + if (meshNormals.Length > 0) newMesh.normals = newIndexLookUp.Select(x => meshNormals[x]).ToArray(); if (meshTangents.Length > 0) newMesh.tangents = newIndexLookUp.Select(x => meshTangents[x]).ToArray(); if (meshColors.Length > 0) newMesh.colors = newIndexLookUp.Select(x => meshColors[x]).ToArray(); - newMesh.boneWeights = newIndexLookUp.Select(x => meshBoneWeights[x]).ToArray(); - newMesh.uv = newIndexLookUp.Select(x => meshUVs[x]).ToArray(); + if (meshBoneWeights.Length > 0) newMesh.boneWeights = newIndexLookUp.Select(x => meshBoneWeights[x]).ToArray(); + if (meshUVs.Length > 0) newMesh.uv = newIndexLookUp.Select(x => meshUVs[x]).ToArray(); newMesh.bindposes = mesh.bindposes; // add BlendShape data @@ -224,20 +227,15 @@ private static void BuildNewMesh(SkinnedMeshRenderer skinnedMeshRenderer, Dictio } } + newMesh.subMeshCount = subMeshes.Count; + var cosMaterialIndex = subMeshes.Keys.ToArray(); + // build material list - var subMeshCounter = 0; - for (int i = 0; i < subMeshes.Length; i++) + for (int i = 0; i < subMeshes.Count; i++) { - if (subMeshes[i].Length > 0) - { - newMesh.SetTriangles(subMeshes[i], subMeshCounter); - materialListNew.Add(materialList[i]); - subMeshCounter++; - newMesh.subMeshCount++; - } + newMesh.SetTriangles(subMeshes[cosMaterialIndex[i]], i); + materialListNew.Add(materialList[cosMaterialIndex[i]]); } - - newMesh.subMeshCount = subMeshCounter; skinnedMeshRenderer.sharedMaterials = materialListNew.ToArray(); skinnedMeshRenderer.sharedMesh = newMesh; From 425a4317d0d94f19e982bddd7b24121410d72763 Mon Sep 17 00:00:00 2001 From: PoChangSu Date: Mon, 22 Jun 2020 17:32:21 +0900 Subject: [PATCH 3/6] upload documentation --- Assets/MeshUtility/CHANGELOG.md | 7 ++ Assets/MeshUtility/CHANGELOG.md.meta | 7 ++ Assets/MeshUtility/Documentation.meta | 8 ++ .../MeshUtility/Documentation/MeshUtility.md | 29 ++++++ .../Documentation/MeshUtility.md.meta | 7 ++ Assets/MeshUtility/Documentation/images.meta | 8 ++ .../images/blendshape_separator.jpg | Bin 0 -> 47176 bytes .../images/blendshape_separator.jpg.meta | 88 ++++++++++++++++++ .../Documentation/images/installation_1.jpg | Bin 0 -> 23760 bytes .../images/installation_1.jpg.meta | 88 ++++++++++++++++++ .../Documentation/images/installation_2.jpg | Bin 0 -> 20387 bytes .../images/installation_2.jpg.meta | 88 ++++++++++++++++++ .../Documentation/images/installation_3.jpg | Bin 0 -> 24575 bytes .../images/installation_3.jpg.meta | 88 ++++++++++++++++++ .../Documentation/images/interface_1.jpg | Bin 0 -> 17973 bytes .../Documentation/images/interface_1.jpg.meta | 88 ++++++++++++++++++ .../Documentation/images/interface_2.jpg | Bin 0 -> 16430 bytes .../Documentation/images/interface_2.jpg.meta | 88 ++++++++++++++++++ .../Documentation/images/interface_3.jpg | Bin 0 -> 26061 bytes .../Documentation/images/interface_3.jpg.meta | 88 ++++++++++++++++++ .../Documentation/images/result_1.jpg | Bin 0 -> 28604 bytes .../Documentation/images/result_1.jpg.meta | 88 ++++++++++++++++++ .../Documentation/images/result_2.jpg | Bin 0 -> 21222 bytes .../Documentation/images/result_2.jpg.meta | 88 ++++++++++++++++++ 24 files changed, 858 insertions(+) create mode 100644 Assets/MeshUtility/CHANGELOG.md create mode 100644 Assets/MeshUtility/CHANGELOG.md.meta create mode 100644 Assets/MeshUtility/Documentation.meta create mode 100644 Assets/MeshUtility/Documentation/MeshUtility.md create mode 100644 Assets/MeshUtility/Documentation/MeshUtility.md.meta create mode 100644 Assets/MeshUtility/Documentation/images.meta create mode 100644 Assets/MeshUtility/Documentation/images/blendshape_separator.jpg create mode 100644 Assets/MeshUtility/Documentation/images/blendshape_separator.jpg.meta create mode 100644 Assets/MeshUtility/Documentation/images/installation_1.jpg create mode 100644 Assets/MeshUtility/Documentation/images/installation_1.jpg.meta create mode 100644 Assets/MeshUtility/Documentation/images/installation_2.jpg create mode 100644 Assets/MeshUtility/Documentation/images/installation_2.jpg.meta create mode 100644 Assets/MeshUtility/Documentation/images/installation_3.jpg create mode 100644 Assets/MeshUtility/Documentation/images/installation_3.jpg.meta create mode 100644 Assets/MeshUtility/Documentation/images/interface_1.jpg create mode 100644 Assets/MeshUtility/Documentation/images/interface_1.jpg.meta create mode 100644 Assets/MeshUtility/Documentation/images/interface_2.jpg create mode 100644 Assets/MeshUtility/Documentation/images/interface_2.jpg.meta create mode 100644 Assets/MeshUtility/Documentation/images/interface_3.jpg create mode 100644 Assets/MeshUtility/Documentation/images/interface_3.jpg.meta create mode 100644 Assets/MeshUtility/Documentation/images/result_1.jpg create mode 100644 Assets/MeshUtility/Documentation/images/result_1.jpg.meta create mode 100644 Assets/MeshUtility/Documentation/images/result_2.jpg create mode 100644 Assets/MeshUtility/Documentation/images/result_2.jpg.meta diff --git a/Assets/MeshUtility/CHANGELOG.md b/Assets/MeshUtility/CHANGELOG.md new file mode 100644 index 0000000000..8e0827e1ae --- /dev/null +++ b/Assets/MeshUtility/CHANGELOG.md @@ -0,0 +1,7 @@ +# Changelog +All notable changes to this package will be documented in this file. + +## [0.0.1] - 2020-07-01 +### Added +- The first release of MeshUtility +- Add MeshSeparator: the mesh with BlendShape can be separated out \ No newline at end of file diff --git a/Assets/MeshUtility/CHANGELOG.md.meta b/Assets/MeshUtility/CHANGELOG.md.meta new file mode 100644 index 0000000000..fdcf1a9a21 --- /dev/null +++ b/Assets/MeshUtility/CHANGELOG.md.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 988849cd155716d4f9c3a8f18a856470 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MeshUtility/Documentation.meta b/Assets/MeshUtility/Documentation.meta new file mode 100644 index 0000000000..3a651bf60b --- /dev/null +++ b/Assets/MeshUtility/Documentation.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 42e2174ab737d474ebaee9d1c19b7934 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MeshUtility/Documentation/MeshUtility.md b/Assets/MeshUtility/Documentation/MeshUtility.md new file mode 100644 index 0000000000..9a6a0f2bfd --- /dev/null +++ b/Assets/MeshUtility/Documentation/MeshUtility.md @@ -0,0 +1,29 @@ +# MeshUtility + +A mesh processing package for mesh separation, etc. + +## MeshSeparator Overview + +MeshSeparator provides a functionality of separating meshes contained BlendShape. Simply select a GameObject with skinned Meshes and click processing. The mesh splitting results are generated in the Assets folder. The model with sparse BlendShape data distributed in a large-volume mesh can be benefited from size reduction and performance improvements after mesh separation. + +## How to use + +Select a GameObject contained skinned mesh and BlendShape: + + + +Select `Mesh Utility` -> `Separate Skinned Meshes Contained BlendShape`: + + + +The separate meshes are saved in the Assets folder. GameObjects with separate meshes are also available in the Hierarchy Window: + + + +In this example, the model's mesh are split into two parts: face and body: + +Face: with BlendShape | Body: without BlendShape +:-------------------------:|:-------------------------: + | + +Note that if all the polygons in a mesh are used by BlendShape, MeshSeparator will not perform mesh separation. \ No newline at end of file diff --git a/Assets/MeshUtility/Documentation/MeshUtility.md.meta b/Assets/MeshUtility/Documentation/MeshUtility.md.meta new file mode 100644 index 0000000000..3e93b85f14 --- /dev/null +++ b/Assets/MeshUtility/Documentation/MeshUtility.md.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 43890cb851a34c5488d15e1a32e7dadc +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MeshUtility/Documentation/images.meta b/Assets/MeshUtility/Documentation/images.meta new file mode 100644 index 0000000000..82cf4db83b --- /dev/null +++ b/Assets/MeshUtility/Documentation/images.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: 19a2e88b29a2db943aee731aafda8a84 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MeshUtility/Documentation/images/blendshape_separator.jpg b/Assets/MeshUtility/Documentation/images/blendshape_separator.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b28eb4622fda1c69a540df1dc9f6cbd1efb57eaf GIT binary patch literal 47176 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

M) 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 literal 0 HcmV?d00001 diff --git a/Assets/MeshUtility/Documentation/images/blendshape_separator.jpg.meta b/Assets/MeshUtility/Documentation/images/blendshape_separator.jpg.meta new file mode 100644 index 0000000000..b013c05fb1 --- /dev/null +++ b/Assets/MeshUtility/Documentation/images/blendshape_separator.jpg.meta @@ -0,0 +1,88 @@ +fileFormatVersion: 2 +guid: a9a09bb093d309947958f67bfe21e095 +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 9 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: -1 + wrapV: -1 + wrapW: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 2 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + vertices: [] + indices: + edges: [] + weights: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MeshUtility/Documentation/images/installation_1.jpg b/Assets/MeshUtility/Documentation/images/installation_1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..bd916403490ebb64f698bf96662238e7d9df2fcc GIT binary patch literal 23760 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 XcM*{^Xwy~UH&eYBzxH#UxgP%?KVag4 literal 0 HcmV?d00001 diff --git a/Assets/MeshUtility/Documentation/images/installation_1.jpg.meta b/Assets/MeshUtility/Documentation/images/installation_1.jpg.meta new file mode 100644 index 0000000000..fcd26b647a --- /dev/null +++ b/Assets/MeshUtility/Documentation/images/installation_1.jpg.meta @@ -0,0 +1,88 @@ +fileFormatVersion: 2 +guid: b3d26d2cfebad4b43a904c4a9978fadf +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 9 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: -1 + wrapV: -1 + wrapW: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 2 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + vertices: [] + indices: + edges: [] + weights: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MeshUtility/Documentation/images/installation_2.jpg b/Assets/MeshUtility/Documentation/images/installation_2.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e31b7ec9af5c18ad88f0ce72f699b4d8b67662a8 GIT binary patch literal 20387 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 X@H;#9-S}I4nI2jM@QxZ*5=Q?8xQ+F_ literal 0 HcmV?d00001 diff --git a/Assets/MeshUtility/Documentation/images/interface_2.jpg.meta b/Assets/MeshUtility/Documentation/images/interface_2.jpg.meta new file mode 100644 index 0000000000..8754427ec2 --- /dev/null +++ b/Assets/MeshUtility/Documentation/images/interface_2.jpg.meta @@ -0,0 +1,88 @@ +fileFormatVersion: 2 +guid: 23c78259991e1cf49a88e110cd18e0ed +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 9 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: -1 + wrapV: -1 + wrapW: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 2 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + vertices: [] + indices: + edges: [] + weights: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MeshUtility/Documentation/images/interface_3.jpg b/Assets/MeshUtility/Documentation/images/interface_3.jpg new file mode 100644 index 0000000000000000000000000000000000000000..e9d52bf4f914888d570e56a011c856a5bdcbe289 GIT binary patch literal 26061 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 literal 0 HcmV?d00001 diff --git a/Assets/MeshUtility/Documentation/images/interface_3.jpg.meta b/Assets/MeshUtility/Documentation/images/interface_3.jpg.meta new file mode 100644 index 0000000000..4dc7751a70 --- /dev/null +++ b/Assets/MeshUtility/Documentation/images/interface_3.jpg.meta @@ -0,0 +1,88 @@ +fileFormatVersion: 2 +guid: c6bc8b3735742bd439c4f5eee478cc1a +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 9 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: -1 + wrapV: -1 + wrapW: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 2 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + vertices: [] + indices: + edges: [] + weights: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MeshUtility/Documentation/images/result_1.jpg b/Assets/MeshUtility/Documentation/images/result_1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..65d704cd109dc5594ae293af46107474e8914df5 GIT binary patch literal 28604 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

$Xx68Ic!dm(@5luoTw?w#oylWe&o~`DfApw9i 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 literal 0 HcmV?d00001 diff --git a/Assets/MeshUtility/Documentation/images/result_1.jpg.meta b/Assets/MeshUtility/Documentation/images/result_1.jpg.meta new file mode 100644 index 0000000000..03db454241 --- /dev/null +++ b/Assets/MeshUtility/Documentation/images/result_1.jpg.meta @@ -0,0 +1,88 @@ +fileFormatVersion: 2 +guid: 1be7c06f1e0cc2a448ad9166891d03dd +TextureImporter: + fileIDToRecycleName: {} + externalObjects: {} + serializedVersion: 9 + mipmaps: + mipMapMode: 0 + enableMipMap: 1 + sRGBTexture: 1 + linearTexture: 0 + fadeOut: 0 + borderMipMap: 0 + mipMapsPreserveCoverage: 0 + alphaTestReferenceValue: 0.5 + mipMapFadeDistanceStart: 1 + mipMapFadeDistanceEnd: 3 + bumpmap: + convertToNormalMap: 0 + externalNormalMap: 0 + heightScale: 0.25 + normalMapFilter: 0 + isReadable: 0 + streamingMipmaps: 0 + streamingMipmapsPriority: 0 + grayScaleToAlpha: 0 + generateCubemap: 6 + cubemapConvolution: 0 + seamlessCubemap: 0 + textureFormat: 1 + maxTextureSize: 2048 + textureSettings: + serializedVersion: 2 + filterMode: -1 + aniso: -1 + mipBias: -100 + wrapU: -1 + wrapV: -1 + wrapW: -1 + nPOTScale: 1 + lightmap: 0 + compressionQuality: 50 + spriteMode: 0 + spriteExtrude: 1 + spriteMeshType: 1 + alignment: 0 + spritePivot: {x: 0.5, y: 0.5} + spritePixelsToUnits: 100 + spriteBorder: {x: 0, y: 0, z: 0, w: 0} + spriteGenerateFallbackPhysicsShape: 1 + alphaUsage: 1 + alphaIsTransparency: 0 + spriteTessellationDetail: -1 + textureType: 0 + textureShape: 1 + singleChannelComponent: 0 + maxTextureSizeSet: 0 + compressionQualitySet: 0 + textureFormatSet: 0 + platformSettings: + - serializedVersion: 2 + buildTarget: DefaultTexturePlatform + maxTextureSize: 2048 + resizeAlgorithm: 0 + textureFormat: -1 + textureCompression: 1 + compressionQuality: 50 + crunchedCompression: 0 + allowsAlphaSplitting: 0 + overridden: 0 + androidETC2FallbackOverride: 0 + spriteSheet: + serializedVersion: 2 + sprites: [] + outline: [] + physicsShape: [] + bones: [] + spriteID: + vertices: [] + indices: + edges: [] + weights: [] + spritePackingTag: + pSDRemoveMatte: 0 + pSDShowRemoveMatteOption: 0 + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MeshUtility/Documentation/images/result_2.jpg b/Assets/MeshUtility/Documentation/images/result_2.jpg new file mode 100644 index 0000000000000000000000000000000000000000..951347eab20921a1c0a08a7ec9caa7eea136b58f GIT binary patch literal 21222 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 Date: Mon, 22 Jun 2020 17:33:02 +0900 Subject: [PATCH 4/6] upload README --- Assets/MeshUtility/README.md | 43 +++++++++++++++++++++++++++++++ Assets/MeshUtility/README.md.meta | 7 +++++ Assets/MeshUtility/package.json | 2 +- 3 files changed, 51 insertions(+), 1 deletion(-) create mode 100644 Assets/MeshUtility/README.md create mode 100644 Assets/MeshUtility/README.md.meta diff --git a/Assets/MeshUtility/README.md b/Assets/MeshUtility/README.md new file mode 100644 index 0000000000..dd3ae4bf98 --- /dev/null +++ b/Assets/MeshUtility/README.md @@ -0,0 +1,43 @@ +# MeshUtility + +Mesh processing tool in Unity platform. + +## MeshSeparator + +Separate the target mesh into different categories based on given conditions. + +Currently support separation of mesh contained BlendShape. See [documentation](Documentation/MeshUtility.md) for more details. + + + +## Import MeshUtility + +There are two ways to import MeshUtility into a Unity project. + +### 1. Unity Package Manager (from Unity 2019) + +You can add MeshUtility package via `UPM`. First click `Window` from menu on top, then select `Package Manager`. + + + +In `Package Manager`, click `Add package from git URL` and paste `https://github.com/UniVRM/UniVRM.git?path=/Assets/MeshUtility`. + + + +Now check your project window. You shall see MeshUtility in the `Packages` folder. + +### 2. Add package name and its url in manifest.json + +Another way of importing MeshUtility is manually adding necessary information in manifest.json, which is in the directory of `Package folder` in your Unity project. Open manifest.json with text editor and add the followings in `dependencies`: + +```json +{ + "dependencies": { + "com.vrmc.meshutility": "https://github.com/UniVRM/UniVRM.git?path=/Assets/MeshUtility", + } +} +``` + +Go back to the Unity project. The system will automatically load the package. + + \ No newline at end of file diff --git a/Assets/MeshUtility/README.md.meta b/Assets/MeshUtility/README.md.meta new file mode 100644 index 0000000000..b5c1eb77b5 --- /dev/null +++ b/Assets/MeshUtility/README.md.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: febba2ec3ea2c9247ab21226ce81f924 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MeshUtility/package.json b/Assets/MeshUtility/package.json index 631b023656..ceba68177a 100644 --- a/Assets/MeshUtility/package.json +++ b/Assets/MeshUtility/package.json @@ -3,7 +3,7 @@ "displayName" : "MeshUtility", "version" : "1.0.0", "unity" : "2018.4", - "description" : "mesh utility", + "description" : "MeshUtility is a package for mesh separation, etc.", "keywords" : [ "mesh" ], "author" : { "name": "VRM Consortium" } } \ No newline at end of file From 93c243b532b2455b2fb5f9a01e69f33f85804866 Mon Sep 17 00:00:00 2001 From: PoChangSu Date: Tue, 23 Jun 2020 14:19:16 +0900 Subject: [PATCH 5/6] update package info and add url link --- .../MeshUtility/Documentation/MeshUtility.md | 26 ++----------------- Assets/MeshUtility/Documentation/notes.meta | 8 ++++++ .../Documentation/notes/MeshSeparator.md | 25 ++++++++++++++++++ .../Documentation/notes/MeshSeparator.md.meta | 7 +++++ Assets/MeshUtility/Editor/MeshUtility.cs | 6 +++++ Assets/MeshUtility/LICENSE.md | 9 +++++++ Assets/MeshUtility/LICENSE.md.meta | 7 +++++ Assets/MeshUtility/README.md | 2 +- Assets/MeshUtility/README.url | 2 ++ Assets/MeshUtility/README.url.meta | 7 +++++ Assets/MeshUtility/package.json | 4 +-- 11 files changed, 76 insertions(+), 27 deletions(-) create mode 100644 Assets/MeshUtility/Documentation/notes.meta create mode 100644 Assets/MeshUtility/Documentation/notes/MeshSeparator.md create mode 100644 Assets/MeshUtility/Documentation/notes/MeshSeparator.md.meta create mode 100644 Assets/MeshUtility/LICENSE.md create mode 100644 Assets/MeshUtility/LICENSE.md.meta create mode 100644 Assets/MeshUtility/README.url create mode 100644 Assets/MeshUtility/README.url.meta diff --git a/Assets/MeshUtility/Documentation/MeshUtility.md b/Assets/MeshUtility/Documentation/MeshUtility.md index 9a6a0f2bfd..0a111e7089 100644 --- a/Assets/MeshUtility/Documentation/MeshUtility.md +++ b/Assets/MeshUtility/Documentation/MeshUtility.md @@ -2,28 +2,6 @@ A mesh processing package for mesh separation, etc. -## MeshSeparator Overview +## Documentation Link -MeshSeparator provides a functionality of separating meshes contained BlendShape. Simply select a GameObject with skinned Meshes and click processing. The mesh splitting results are generated in the Assets folder. The model with sparse BlendShape data distributed in a large-volume mesh can be benefited from size reduction and performance improvements after mesh separation. - -## How to use - -Select a GameObject contained skinned mesh and BlendShape: - - - -Select `Mesh Utility` -> `Separate Skinned Meshes Contained BlendShape`: - - - -The separate meshes are saved in the Assets folder. GameObjects with separate meshes are also available in the Hierarchy Window: - - - -In this example, the model's mesh are split into two parts: face and body: - -Face: with BlendShape | Body: without BlendShape -:-------------------------:|:-------------------------: - | - -Note that if all the polygons in a mesh are used by BlendShape, MeshSeparator will not perform mesh separation. \ No newline at end of file +[MeshSeparator](https://github.com/vrm-c/UniVRM/tree/master/Assets/MeshUtility/Documentation/notes/MeshSeparator.md) \ No newline at end of file diff --git a/Assets/MeshUtility/Documentation/notes.meta b/Assets/MeshUtility/Documentation/notes.meta new file mode 100644 index 0000000000..72f20c27c3 --- /dev/null +++ b/Assets/MeshUtility/Documentation/notes.meta @@ -0,0 +1,8 @@ +fileFormatVersion: 2 +guid: ea010ddf8bf34de4fb36d95afb078702 +folderAsset: yes +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MeshUtility/Documentation/notes/MeshSeparator.md b/Assets/MeshUtility/Documentation/notes/MeshSeparator.md new file mode 100644 index 0000000000..15f74daa0d --- /dev/null +++ b/Assets/MeshUtility/Documentation/notes/MeshSeparator.md @@ -0,0 +1,25 @@ +# MeshSeparator + +MeshSeparator provides a functionality of separating meshes contained BlendShape. Simply select a GameObject with skinned Meshes and click processing. The mesh splitting results are generated in the Assets folder. The model with sparse BlendShape data distributed in a large-volume mesh can be benefited from size reduction and performance improvements after mesh separation. + +## How to use + +Select a GameObject contained skinned mesh and BlendShape: + + + +Select `Mesh Utility` -> `Separate Skinned Meshes Contained BlendShape`: + + + +The separate meshes are saved in the Assets folder. GameObjects with separate meshes are also available in the Hierarchy Window: + + + +In this example, the model's mesh are split into two parts: face and body: + +Face: with BlendShape | Body: without BlendShape +:-------------------------:|:-------------------------: + | + +Note that if all the polygons of a mesh are used by BlendShape, MeshSeparator will not perform mesh separation. \ No newline at end of file diff --git a/Assets/MeshUtility/Documentation/notes/MeshSeparator.md.meta b/Assets/MeshUtility/Documentation/notes/MeshSeparator.md.meta new file mode 100644 index 0000000000..13d9f1f98d --- /dev/null +++ b/Assets/MeshUtility/Documentation/notes/MeshSeparator.md.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: ad5ca4fe4bdde854bb90cb5a3aa267d4 +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MeshUtility/Editor/MeshUtility.cs b/Assets/MeshUtility/Editor/MeshUtility.cs index 6e14e69297..e76afb874a 100644 --- a/Assets/MeshUtility/Editor/MeshUtility.cs +++ b/Assets/MeshUtility/Editor/MeshUtility.cs @@ -33,6 +33,12 @@ public static void SeparateSkinnedMeshContainedBlendShape() } } + [MenuItem("Mesh Utility/MeshSeparator Docs")] + public static void LinkToMeshSeparatorDocs() + { + Application.OpenURL("https://github.com/vrm-c/UniVRM/tree/master/Assets/MeshUtility"); + } + private static void SeparationProcessing(GameObject go) { var outputObject = Instantiate(go); diff --git a/Assets/MeshUtility/LICENSE.md b/Assets/MeshUtility/LICENSE.md new file mode 100644 index 0000000000..7a9585e4b9 --- /dev/null +++ b/Assets/MeshUtility/LICENSE.md @@ -0,0 +1,9 @@ +MIT License + +Copyright (c) 2020 VRM Consortium + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice (including the next paragraph) shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/Assets/MeshUtility/LICENSE.md.meta b/Assets/MeshUtility/LICENSE.md.meta new file mode 100644 index 0000000000..6462af9ec7 --- /dev/null +++ b/Assets/MeshUtility/LICENSE.md.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 5759a25d3024bd94a92b0af38bac243c +TextScriptImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MeshUtility/README.md b/Assets/MeshUtility/README.md index dd3ae4bf98..769f3a173b 100644 --- a/Assets/MeshUtility/README.md +++ b/Assets/MeshUtility/README.md @@ -6,7 +6,7 @@ Mesh processing tool in Unity platform. Separate the target mesh into different categories based on given conditions. -Currently support separation of mesh contained BlendShape. See [documentation](Documentation/MeshUtility.md) for more details. +Currently support BlendShape mesh separation. See [documentation](Documentation/notes/MeshSeparator.md) for more details. diff --git a/Assets/MeshUtility/README.url b/Assets/MeshUtility/README.url new file mode 100644 index 0000000000..79542bae75 --- /dev/null +++ b/Assets/MeshUtility/README.url @@ -0,0 +1,2 @@ +[InternetShortcut] +URL=https://github.com/vrm-c/UniVRM/tree/master/Assets/MeshUtility \ No newline at end of file diff --git a/Assets/MeshUtility/README.url.meta b/Assets/MeshUtility/README.url.meta new file mode 100644 index 0000000000..6ee109b6c5 --- /dev/null +++ b/Assets/MeshUtility/README.url.meta @@ -0,0 +1,7 @@ +fileFormatVersion: 2 +guid: 42e2fc8311d7ef44fa3975996ba1645d +DefaultImporter: + externalObjects: {} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/MeshUtility/package.json b/Assets/MeshUtility/package.json index ceba68177a..f7ed33c4ea 100644 --- a/Assets/MeshUtility/package.json +++ b/Assets/MeshUtility/package.json @@ -1,9 +1,9 @@ { "name" : "com.vrmc.meshutility", "displayName" : "MeshUtility", - "version" : "1.0.0", + "version" : "0.0.1", "unity" : "2018.4", - "description" : "MeshUtility is a package for mesh separation, etc.", + "description" : "MeshUtility is a package for mesh separation, etc. \n\nCheck out the latest information here: ", "keywords" : [ "mesh" ], "author" : { "name": "VRM Consortium" } } \ No newline at end of file From 713083d0e171973884eb9e5d297a126ccb190116 Mon Sep 17 00:00:00 2001 From: PoChangSu Date: Tue, 23 Jun 2020 17:34:37 +0900 Subject: [PATCH 6/6] add validation --- Assets/MeshUtility/Editor/MeshUtility.cs | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/Assets/MeshUtility/Editor/MeshUtility.cs b/Assets/MeshUtility/Editor/MeshUtility.cs index e76afb874a..061bc9976a 100644 --- a/Assets/MeshUtility/Editor/MeshUtility.cs +++ b/Assets/MeshUtility/Editor/MeshUtility.cs @@ -9,7 +9,8 @@ namespace MeshUtility public class MeshUtility : MonoBehaviour { private const string ASSET_SUFFIX = ".mesh.asset"; - private static readonly Vector3 Zero_Movement = Vector3.zero; + private const string MENU_NAME = "Mesh Utility/Separate Skinned Meshes Contained BlendShape"; + private static readonly Vector3 ZERO_MOVEMENT = Vector3.zero; private enum BlendShapeLogic { @@ -17,7 +18,16 @@ private enum BlendShapeLogic WithoutBlendShape, } - [MenuItem("Mesh Utility/Separate Skinned Meshes Contained BlendShape")] + [MenuItem(MENU_NAME, validate = true)] + private static bool ShowLogValidation() + { + if (Selection.activeTransform == null) + return false; + else + return true; + } + + [MenuItem(MENU_NAME)] public static void SeparateSkinnedMeshContainedBlendShape() { var go = Selection.activeTransform.gameObject; @@ -67,7 +77,7 @@ private static void SeparatePolyWithBlendShape(SkinnedMeshRenderer skinnedMeshRe for (int j = 0; j < deltaVertices.Length; j++) { - if (!deltaVertices[j].Equals(Zero_Movement)) + if (!deltaVertices[j].Equals(ZERO_MOVEMENT)) { if (!indicesUsedByBlendShape.Values.Contains(j)) {