public BoundHolder LoadMeshes(DirectoryInfo dir, int id) { string directoryPath = dir.FullName; int countOfFiles = 0; string extension = ".dat"; foreach (FileInfo f in dir.GetFiles()) { //UnityEngine.Debug.Log(f.FullName); if (extension.Equals(Path.GetExtension(f.FullName))) { countOfFiles++; } } BoundHolder result = new BoundHolder(); string filename = "Mesh_With_BoundingBox_" + id + extension; string filepath = Path.Combine(directoryPath, filename); byte[] readByteArray = File.ReadAllBytes(filepath).Skip(24).ToArray(); result = result.DesirializeMeshes(readByteArray); return(result); }
public void SplitBounds() { float sizeX = (bounds.max.x - bounds.min.x) / xDirCount; float sizeY = (bounds.max.y - bounds.min.y) / yDirCount; float sizeZ = (bounds.max.z - bounds.min.z) / zDirCount; Vector3 subSize = new Vector3(sizeX, sizeY, sizeZ); Vector3 subCenter; int index = 0; float xStartPoint = bounds.min.x; float yStartPoint = bounds.min.y; float zStartPoint = bounds.min.z; for (int i = 0; i < zDirCount; i++) { for (int j = 0; j < yDirCount; j++) { for (int k = 0; k < xDirCount; k++) { subCenter = new Vector3(xStartPoint + sizeX / 2, yStartPoint + sizeY / 2, zStartPoint + sizeZ / 2); subBounds[index++] = new BoundHolder(subCenter, subSize); xStartPoint += sizeX; } xStartPoint = bounds.min.x; yStartPoint += sizeY; } xStartPoint = bounds.min.x; yStartPoint = bounds.min.y; zStartPoint += sizeZ; } }
public BoundHolder[] LoadBoundingBox(DirectoryInfo Dir) { string directoryPath = Dir.FullName; int countOfFiles = 0; string extension = ".dat"; foreach (FileInfo f in Dir.GetFiles()) { //UnityEngine.Debug.Log(f.FullName); if (extension.Equals(Path.GetExtension(f.FullName))) { countOfFiles++; } } BoundHolder[] results = new BoundHolder[countOfFiles]; for (int i = 0; i < countOfFiles; i++) { string filename = "Mesh_With_BoundingBox_" + i + extension; string filepath = Path.Combine(directoryPath, filename); byte[] readByteArray = File.ReadAllBytes(filepath); results[i] = new BoundHolder(); results[i] = results[i].DesirializeBounds(readByteArray); results[i].id = i; } return(results); }
public void LoadMesh(int index) { List <DirectoryInfo> directoryInfoList = rs.GetDirectoryList(); int selected = rs.GetSelectedRoom(); BoundHolder bh = rs.LoadMeshes(directoryInfoList[selected], index); loadedMeshes[index] = new LoadedMeshHolder(bh); }
public BoundHolder DesirializeBounds(byte[] data) { BoundHolder result = new BoundHolder(); using (MemoryStream ms = new MemoryStream(data)) { using (BinaryReader br = new BinaryReader(ms)) { result.subBound = readBounds(br); } return(result); } }
public BoundHolder DesirializeMeshes(byte[] data) { BoundHolder result = new BoundHolder(); using (MemoryStream ms = new MemoryStream(data)) { using (BinaryReader br = new BinaryReader(ms)) { result.meshInBBox = readMesh(br); } return(result); } }
private void putTrianglesIntoBoundingBox(Mesh m) { for (int index = 0; index < m.triangles.Length; index += 3) { int vertexIndex = m.triangles[0 + index]; Vector3 worldPoint = trans.TransformPoint(m.vertices[vertexIndex]); BoundHolder b = FindBoundingBox(worldPoint); int[] triangle = new int[3]; triangle[0] = m.triangles[0 + index]; triangle[1] = m.triangles[1 + index]; triangle[2] = m.triangles[2 + index]; b.AddTriangle(triangle); } }
private void putTrianglesIntoBoundingBox(Mesh[] meshes, Transform[] transforms) { for (int i = 0; i < meshes.Length; i++) { int vertexIndex = 0; BoundHolder b = null; int[] triangle = new int[3]; Vector3[] verticesCopy = meshes[i].vertices; Vector3[] normalsCopy = meshes[i].normals; Color[] colorsCopy = meshes[i].colors; int[] trianglesCopy = meshes[i].triangles; for (int index = 0; index < trianglesCopy.Length; index += 3) { vertexIndex = trianglesCopy[0 + index]; Vector3 worldPoint = transforms[i].TransformPoint(verticesCopy[vertexIndex]); b = FindBoundingBox(worldPoint); triangle[0] = trianglesCopy[0 + index]; triangle[1] = trianglesCopy[1 + index]; triangle[2] = trianglesCopy[2 + index]; if (!(b.meshes.ContainsKey(i))) { MeshInBBox m = new MeshInBBox(i); m.AddArrays(triangle, verticesCopy, normalsCopy, colorsCopy, trianglesCopy); b.meshes.Add(i, m); } else { b.meshes[i].AddArrays(triangle, verticesCopy, normalsCopy, colorsCopy, trianglesCopy); } } } }
public LoadedMeshHolder(BoundHolder bh) { meshes = bh.meshInBBox; }