public void PolyDataToMesh() { // VTK to Scimesh Stopwatch stopwatch = Stopwatch.StartNew(); mesh = Scimesh.Vtk.To.Base.polydataToMesh(filename); stopwatch.Stop(); UnityEngine.Debug.Log("VTK to Scimesh time: " + stopwatch.ElapsedMilliseconds); // Serialize Scimesh stopwatch = Stopwatch.StartNew(); long size = 0; using (Stream stream = new MemoryStream()) { BinaryFormatter formatter = new BinaryFormatter(); formatter.Serialize(stream, mesh); size = stream.Length; } stopwatch.Stop(); UnityEngine.Debug.Log("Scimesh size: " + size.ToString() + " bytes"); UnityEngine.Debug.Log("Scimesh serializing time: " + stopwatch.ElapsedMilliseconds); // Scimesh procedures stopwatch = Stopwatch.StartNew(); mesh.EvaluateCellsNeighbourCells(); stopwatch.Stop(); UnityEngine.Debug.Log("EvaluateCellsNeighbourCells time: " + stopwatch.ElapsedMilliseconds + " ms"); stopwatch = Stopwatch.StartNew(); mesh.EvaluatePointsNeighbourPoints(Scimesh.Base.Mesh.Neighbours.InFaces); stopwatch.Stop(); UnityEngine.Debug.Log("EvaluatePointsNeighbourPoints time: " + stopwatch.ElapsedMilliseconds + " ms"); // Set Scimesh MeshFilter stopwatch = Stopwatch.StartNew(); int[] cellIndices = new int[mesh.cells.Length]; for (int i = 0; i < cellIndices.Length; i++) { cellIndices [i] = i; } mf = new Scimesh.Base.MeshFilter(new int[0], new int[0], new int[0], cellIndices); stopwatch.Stop(); UnityEngine.Debug.Log("Scimesh to UnityMesh " + stopwatch.ElapsedMilliseconds + " ms"); // Scimesh to UnityMesh stopwatch = Stopwatch.StartNew(); Mesh[] unityMeshes = Scimesh.Base.To.Unity.MeshToUnityMesh(mesh, mf); foreach (Transform child in gameObject.transform) { GameObject.DestroyImmediate(child.gameObject); } for (int i = 0; i < unityMeshes.Length; i++) { GameObject childMesh = new GameObject(); childMesh.transform.parent = gameObject.transform; MeshFilter meshFilter = childMesh.AddComponent <MeshFilter> (); meshFilter.sharedMesh = unityMeshes [i]; MeshRenderer meshRenderer = childMesh.AddComponent <MeshRenderer> (); meshRenderer.material = meshMaterial; } stopwatch.Stop(); UnityEngine.Debug.Log("Scimesh to UnityMesh " + stopwatch.ElapsedMilliseconds + " ms"); }
public void ReadXmlMultiBlockDataToUnity() { UnityEngine.Debug.Log(System.Reflection.MethodBase.GetCurrentMethod().Name); Clear(); Stopwatch stopwatch = Stopwatch.StartNew(); Scimesh.Base.Mesh[] ms = Scimesh.Third.Activiz.To.Base.rXmlMBDataToMesh(xmlMultiBlockDataFilename); Scimesh.Base.MeshFilter[] mfs = new Scimesh.Base.MeshFilter[ms.Length]; stopwatch.Stop(); UnityEngine.Debug.Log(string.Format("Reading time: {0} ms, {1} ticks", stopwatch.ElapsedMilliseconds, stopwatch.ElapsedTicks)); for (int i = 0; i < ms.Length; i++) { // Scimesh to UnityMesh stopwatch = Stopwatch.StartNew(); //// Serialize Scimesh //long size = 0; //using (Stream stream = new MemoryStream()) //{ // BinaryFormatter formatter = new BinaryFormatter(); // formatter.Serialize(stream, ms[i]); // size = stream.Length; //} //stopwatch.Stop(); //UnityEngine.Debug.Log("Scimesh size: " + size.ToString() + " bytes"); //UnityEngine.Debug.Log("Scimesh serializing time: " + stopwatch.ElapsedMilliseconds); //// Scimesh procedures //stopwatch = Stopwatch.StartNew(); //ms[i].EvaluateCellsNeighbourCells(); //stopwatch.Stop(); //UnityEngine.Debug.Log("EvaluateCellsNeighbourCells time: " + stopwatch.ElapsedMilliseconds + " ms"); //stopwatch = Stopwatch.StartNew(); //ms[i].EvaluatePointsNeighbourPoints(Scimesh.Base.Mesh.Neighbours.InFaces); //stopwatch.Stop(); //UnityEngine.Debug.Log("EvaluatePointsNeighbourPoints time: " + stopwatch.ElapsedMilliseconds + " ms"); //// Set Scimesh MeshFilter //stopwatch = Stopwatch.StartNew(); ////int[] cellIndices = new int[ms[i].cells.Length]; ////for (int j = 0; j < cellIndices.Length; j++) ////{ //// cellIndices[j] = j; ////} ////mfs[i] = new Scimesh.Base.MeshFilter(cellIndices); //stopwatch.Stop(); //UnityEngine.Debug.Log("Scimesh to UnityMesh " + stopwatch.ElapsedMilliseconds + " ms"); // Scimesh to UnityMesh //stopwatch = Stopwatch.StartNew(); mfs[i] = Scimesh.Base.To.Base.boundaryFacesMeshFilter2(ms[i]); Mesh[] ums = Scimesh.Base.To.Unity.MeshToUnityMesh(ms[i], mfs[i]); stopwatch.Stop(); UnityEngine.Debug.Log(string.Format("Scimesh to UnityMesh time: {0} ms, {1} ticks", stopwatch.ElapsedMilliseconds, stopwatch.ElapsedTicks)); // Unity stopwatch = Stopwatch.StartNew(); GameObject blockMesh = new GameObject(); blockMesh.transform.parent = gameObject.transform; for (int j = 0; j < ums.Length; j++) { GameObject childMesh = new GameObject(); childMesh.transform.parent = blockMesh.gameObject.transform; MeshFilter meshFilter = childMesh.AddComponent <MeshFilter>(); meshFilter.sharedMesh = ums[j]; MeshRenderer meshRenderer = childMesh.AddComponent <MeshRenderer>(); meshRenderer.material = mat; } stopwatch.Stop(); UnityEngine.Debug.Log(string.Format("Unity time: {0} ms, {1} ticks", stopwatch.ElapsedMilliseconds, stopwatch.ElapsedTicks)); } }
public void ReadPolydataToUnity() { UnityEngine.Debug.Log(System.Reflection.MethodBase.GetCurrentMethod().Name); Clear(); Stopwatch stopwatch = Stopwatch.StartNew(); Scimesh.Base.Mesh[] ms = new Scimesh.Base.Mesh[1]; Scimesh.Base.MeshFilter[] mfs = new Scimesh.Base.MeshFilter[1]; ms[0] = Scimesh.Third.Activiz.To.Base.rPolydataToMesh(polydataFilename); stopwatch.Stop(); UnityEngine.Debug.Log(string.Format("Reading time: {0} ms, {1} ticks", stopwatch.ElapsedMilliseconds, stopwatch.ElapsedTicks)); UnityEngine.Debug.Log("Serialising"); stopwatch = Stopwatch.StartNew(); long size = 0; using (Stream stream = new MemoryStream()) { BinaryFormatter formatter = new BinaryFormatter(); formatter.Serialize(stream, ms[0]); size = stream.Length; } stopwatch.Stop(); UnityEngine.Debug.Log("Scimesh size: " + size.ToString() + " bytes"); UnityEngine.Debug.Log(string.Format("Elapsed time: {0} ms, {1} ticks", stopwatch.ElapsedMilliseconds, stopwatch.ElapsedTicks)); UnityEngine.Debug.Log("Scimesh evaluations"); stopwatch = Stopwatch.StartNew(); ms[0].EvaluateCellsNeighbourCells(); stopwatch.Stop(); UnityEngine.Debug.Log(string.Format("Elapsed time: {0} ms, {1} ticks", stopwatch.ElapsedMilliseconds, stopwatch.ElapsedTicks)); stopwatch = Stopwatch.StartNew(); ms[0].EvaluatePointsNeighbourPoints(Scimesh.Base.Mesh.Neighbours.InFaces); stopwatch.Stop(); UnityEngine.Debug.Log(string.Format("Elapsed time: {0} ms, {1} ticks", stopwatch.ElapsedMilliseconds, stopwatch.ElapsedTicks)); UnityEngine.Debug.Log("Scimesh MeshFilter initialisation"); stopwatch = Stopwatch.StartNew(); int[] cellIndices = new int[ms[0].cells.Length]; for (int i = 0; i < cellIndices.Length; i++) { cellIndices[i] = i; } mfs[0] = new Scimesh.Base.MeshFilter(new int[0], new int[0], new int[0], cellIndices); stopwatch.Stop(); UnityEngine.Debug.Log(string.Format("Elapsed time: {0} ms, {1} ticks", stopwatch.ElapsedMilliseconds, stopwatch.ElapsedTicks)); UnityEngine.Debug.Log("Unity mesh initialisation"); stopwatch = Stopwatch.StartNew(); Mesh[] unityMeshes = Scimesh.Base.To.Unity.MeshToUnityMesh(ms[0], mfs[0]); foreach (Transform child in gameObject.transform) { GameObject.DestroyImmediate(child.gameObject); } for (int i = 0; i < unityMeshes.Length; i++) { GameObject childMesh = new GameObject(); childMesh.transform.parent = gameObject.transform; MeshFilter meshFilter = childMesh.AddComponent <MeshFilter>(); meshFilter.sharedMesh = unityMeshes[i]; MeshRenderer meshRenderer = childMesh.AddComponent <MeshRenderer>(); meshRenderer.material = mat; } stopwatch.Stop(); UnityEngine.Debug.Log(string.Format("Elapsed time: {0} ms, {1} ticks", stopwatch.ElapsedMilliseconds, stopwatch.ElapsedTicks)); }