public static CompositeMesh LoadHeadMesh([NotNull] string filePath) { var meshList = new List <PrettyMesh>(); var manager = new AssetsManager(); manager.LoadFiles(filePath); foreach (var assetFile in manager.assetsFileList) { foreach (var obj in assetFile.Objects) { if (obj.type != ClassIDType.Mesh) { continue; } var mesh = obj as Mesh; if (mesh == null) { throw new ArgumentNullException(nameof(mesh), "One of head meshes is null."); } var m = new MeshWrapper(manager.assetsFileList, mesh, TexturedMaterialExtraProperties.Head); meshList.Add(m); } } var result = CompositeMesh.FromMeshes(meshList.ToArray()); return(result); }
public static MeshWrapper LoadBodyMesh([NotNull] string filePath) { MeshWrapper result = null; var manager = new AssetsManager(); manager.LoadFiles(filePath); foreach (var assetFile in manager.assetsFileList) { foreach (var obj in assetFile.Objects) { if (obj.type != ClassIDType.Mesh) { continue; } var mesh = obj as Mesh; if (mesh == null) { throw new ArgumentNullException(nameof(mesh), "Body mesh is null."); } result = new MeshWrapper(manager.assetsFileList, mesh, TexturedMaterialExtraProperties.Body); break; } } return(result); }
public static PrettyMesh LoadBodyMesh() { MeshWrapper result = null; var manager = new AssetsManager(); manager.LoadFiles(BodyModelFilePath); var lookup = SerializedObjectsLookup.Create(manager); foreach (var assetFile in manager.assetsFileList) { foreach (var obj in assetFile.Objects) { if (obj.type != ClassIDType.Mesh) { continue; } var mesh = obj as Mesh; if (mesh == null) { throw new ArgumentNullException(nameof(mesh), "Body mesh is null."); } result = new MeshWrapper(lookup, mesh, TexturedMaterialExtraProperties.Body); break; } } return(result); }
void Update() { if (batches.Count > 0) { for (int i = 0; i < batches.Count; i++) { MeshWrapper wrapper = batches[i]; Graphics.DrawMesh(wrapper.mesh, wrapper.location, Quaternion.identity, cubeMaterial, 0); } } }
public static MeshWrapper <VoxelVertex> GenerateMesh(VkDevice device, VkPhysicalDevice physicalDevice) { MeshWrapper <VoxelVertex> mesh = new MeshWrapper <VoxelVertex>(); mesh.CreateMesh(() => { Stopwatch stopwatch = Stopwatch.StartNew(); Mesh <VoxelVertex> meshlocal = _DoGenerateMesh(device, physicalDevice, true); Console.WriteLine($"Total time taken to make mesh: {((double)stopwatch.ElapsedTicks) / Stopwatch.Frequency * 1000} ms"); return(meshlocal); }, () =>//Quick mesh { Stopwatch stopwatch = Stopwatch.StartNew(); Mesh <VoxelVertex> meshlocal = _DoGenerateMesh(device, physicalDevice, false); Console.WriteLine($"Total time taken to make mesh: {((double)stopwatch.ElapsedTicks) / Stopwatch.Frequency * 1000} ms"); return(meshlocal); }); return(mesh); }
/// <summary> /// Receives Parasite Data from a given ID /// </summary> /// <param name="id"></param> /// <returns></returns> public static object[] ReceiveData(string id) { // List<object> outPut = new List<object>(); RequestData rd = new RequestData(); string data = ""; DataType dataType = DataType.Mesh; int vertices = 0; int faces = 0; System.Diagnostics.Stopwatch sw = new System.Diagnostics.Stopwatch(); sw.Start(); DataContainer dataContainer = rd.RequestDataLocal(id); int dataCount = dataContainer.Data.Length; object[] outPut = new object[dataCount]; Parallel.For(0, dataCount, i => { // for (int i = 0; i < dataContainer.Data.Length; i++) // { for (int j = 0; j < dataContainer.Data[i].Length; j++) { if (dataContainer.Data[i][j].Node is Parasite_Mesh mesh) { if (mesh.VertexColors == null) { Mesh m = DynamoConversion.ToDynamoType(mesh); vertices = m.VertexPositions.Length; faces = m.FaceIndices.Length; outPut[i] = m; dataType = DataType.Mesh; } else { Mesh m = DynamoConversion.ToDynamoType(mesh); MeshWrapper wrapper = new MeshWrapper(m.VertexNormals, m.VertexPositions, mesh.VertexColors); outPut[i] = wrapper; } } else if (dataContainer.Data[i][j].Node is Parasite_NurbsCurve nurbsCurve) { outPut[i] = DynamoConversion.ToDynamoType(nurbsCurve); } else if (dataContainer.Data[i][j].Node is Parasite_BrepSurface brepSrf) { outPut[i] = DynamoConversion.ToDynamoType(brepSrf); } else { throw new ParasiteNotImplementedExceptions("Type conversion not implemented yet!"); } } //} }); sw.Stop(); switch (dataType) { case DataType.Mesh: data = string.Format("Time taken to load mesh with {0} vertices and {1} faces: {2} seconds ", vertices, faces, (sw.ElapsedMilliseconds * 0.001).ToString()); break; } // data = string.Format("Time taken to load {0} elements: {1} seconds ", outPut.Length.ToString(), (sw.ElapsedMilliseconds * 0.001).ToString()); MessageBox.Show(data, "Parasite.IO Data", MessageBoxButtons.OK, MessageBoxIcon.Information); return(outPut); }