static void TestSplitAndMerge() { var gisPosition = new GisPosition(); var mobjZipFile2 = @"testsplitmerge.objr"; Obj23dTilesTests.SplitObjAndMergeMTilesetsWithZip(mobjZipFile2, "testsplitmerge", gisPosition, 2); }
static void Test3dTile() { var gisPosition = new GisPosition(); var mobjZipFile2 = @"testm3.mobjr"; Obj23dTilesTests.MergeMTilesetsWithZip(mobjZipFile2, "testm4", gisPosition, false); }
public void Test_SplitObj2Tilesets() { CheckObjFiles(); var outputDir = "splitobjmerge"; if (!Directory.Exists(outputDir)) { Directory.CreateDirectory(outputDir); } var objParser = new Obj2Gltf.WaveFront.ObjParser(TestObjFile); var objModel = objParser.GetModel(); var gisPosition = new GisPosition(); var lod = false; var objModels = objModel.Split(2); var objFolder = Path.GetDirectoryName(TestObjFile); var tileConverter = new TilesConverter(objFolder, objModels, gisPosition, new TilesOptions { OutputFolder = outputDir, MergeTileJsonFiles = true }); var tilesetJson = tileConverter.Run(lod); Assert.True(File.Exists(tilesetJson)); }
public void Test_MergeTilesets2() { var name = "mergetest2"; var objFolder = MOfficeFolder; Assert.True(Directory.Exists(objFolder), "Input Folder does not exist!"); var outputDir = name; if (!Directory.Exists(outputDir)) { Directory.CreateDirectory(outputDir); } var gisPosition = new GisPosition(); var lod = true; var objModels = new List <Obj2Gltf.WaveFront.ObjModel>(); foreach (var objFile in Directory.GetFiles(objFolder, "*.obj")) { var op = new Obj2Gltf.WaveFront.ObjParser(objFile); var om = op.GetModel(); objModels.Add(om); } var tileConverter = new TilesConverter(objFolder, objModels, gisPosition, new TilesOptions { OutputFolder = outputDir, MergeTileJsonFiles = true }); var tilesetJson = tileConverter.Run(lod); Assert.True(File.Exists(tilesetJson)); }
public static string MergeMTilesets(string objFolder, string outputDir, GisPosition gisPosition, bool lod) { var tileConverter = new TilesConverter(objFolder, outputDir, gisPosition); return(tileConverter.Run(lod)); //var objFiles = Directory.GetFiles(objFolder, "*.obj"); //var tilesetJson = Utility.MergeTilesets(outputDir, gisPosition, true, objFiles); //return tilesetJson; }
public void Test_BatchTileset() { var folder = @"..\..\..\..\testassets\BatchTests"; Assert.True(Directory.Exists(folder), "Input folder does not exist!"); var outputDir = "BatchTests"; var files = Directory.GetFiles(folder); // obj Files are zipped with mtl files foreach (var f in files) { var name = Path.GetFileNameWithoutExtension(f); var dir = Path.Combine(folder, name); Directory.CreateDirectory(dir); ExtractZipFile(f, String.Empty, dir); } var gisPosition = new GisPosition { Longitude = 0, Latitude = 0, TransHeight = 0 }; var objFiles = Directory.GetFiles(folder, "*.obj", SearchOption.AllDirectories); var tasks = new Task <string> [objFiles.Length]; for (var i = 0; i < objFiles.Length; i++) { var objFile = objFiles[i]; var dd = Path.GetDirectoryName(objFile); var name = "Batched" + Path.GetFileNameWithoutExtension(dd); var outFolder = Path.Combine(outputDir, name); Directory.CreateDirectory(outFolder); tasks[i] = Task.Run(() => TilesConverter.WriteTilesetFile(objFile, outFolder, gisPosition)); } Task.WaitAll(tasks); var strs = new List <string>(); var tilesetListFile = Path.Combine(outputDir, "tileset.txt"); foreach (var t in tasks) { var res = t.Result; var name = Path.GetFileNameWithoutExtension(res); var dir = Path.GetDirectoryName(res); var bName = Path.GetFileNameWithoutExtension(dir); strs.Add($"loadTileSet('{bName}', 'BatchedTest/{bName}/tileset.json');"); } using (var sw = new StreamWriter(tilesetListFile, true, System.Text.Encoding.UTF8)) { foreach (var s in strs) { sw.WriteLine(s); } sw.Flush(); sw.Close(); } }
/// <summary> /// /// </summary> /// <param name="objFile">obj文件路径</param> /// <param name="modelName">模型名称</param> /// <param name="outputDir">导出的文件夹路径</param> /// <param name="gisPosition">GIS坐标</param> /// <returns></returns> public static string WriteTileset(string objFile, string modelName, string outputDir, GisPosition gisPosition) { var name = modelName; if (!Directory.Exists(outputDir)) { Directory.CreateDirectory(outputDir); } return(TilesConverter.WriteTilesetFile(objFile, outputDir, gisPosition)); }
public static string WriteMTilesets(string objFolder, string outputDir, GisPosition gisPosition, bool merge = false) { var tileConverter = new TilesConverter(objFolder, outputDir, gisPosition) { MergeTileJsonFiles = merge }; return(tileConverter.Run()); //var objFiles = Directory.GetFiles(objFolder, "*.obj"); //var tilesetJson = Utility.CombineTilesets(outputDir, gisPosition, objFiles); //return tilesetJson; }
public void Test_WriteTileset() { CheckObjFiles(); var outputDir = "tileset"; if (!Directory.Exists(outputDir)) { Directory.CreateDirectory(outputDir); } var gisPosition = new GisPosition(); TilesConverter.WriteTilesetFile(TestObjFile, outputDir, gisPosition); Assert.True(File.Exists(Path.Combine(outputDir, "tileset.json"))); }
public void Test_WriteTileset2() { CheckObjFiles(); var outputDir = "tileset2"; if (!Directory.Exists(outputDir)) { Directory.CreateDirectory(outputDir); } var objParser = new Obj2Gltf.WaveFront.ObjParser(TestObjFile); var objModel = objParser.GetModel(); var gisPosition = new GisPosition(); TilesConverter.WriteTilesetFile(objModel, Path.GetDirectoryName(TestObjFile), outputDir, gisPosition); Assert.True(File.Exists(Path.Combine(outputDir, "tileset.json"))); }
static void Test3dTiles() { var gisPosition = new GisPosition(); var objZipFile = @"test.objr"; Obj23dTilesTests.WriteTilesetWithZip(objZipFile, "test", gisPosition); var mobjZipFile = @"testm.mobjr"; var tasks = new Task <string> [2]; tasks[0] = Task.Run(() => Obj23dTilesTests.WriteMTilesetsWithZip(mobjZipFile, "testm", gisPosition)); var mobjZipFile2 = @"testm2.mobjr"; tasks[1] = Task.Run(() => Obj23dTilesTests.MergeMTilesetsWithZip(mobjZipFile2, "testm2", gisPosition, true)); Task.WaitAll(tasks); }
public void Test_MergeTilesets() { var name = "mergetest"; var objFolder = MOfficeFolder; Assert.True(Directory.Exists(objFolder), "Input Folder does not exist!"); var outputDir = name; if (!Directory.Exists(outputDir)) { Directory.CreateDirectory(outputDir); } var gisPosition = new GisPosition(); var lod = true; var tileConverter = new TilesConverter(objFolder, outputDir, gisPosition); var tilesetJson = tileConverter.Run(lod); Assert.True(File.Exists(tilesetJson)); }
public void Test_CombineTilesets() { var name = "test"; var objFolder = MOfficeFolder; Assert.True(Directory.Exists(objFolder), "Input Folder does not exist!"); var outputDir = name; //"mtileset"; if (!Directory.Exists(outputDir)) { Directory.CreateDirectory(outputDir); } var gisPosition = new GisPosition(); var tileConverter = new TilesConverter(objFolder, outputDir, gisPosition) { MergeTileJsonFiles = false }; var tilesetJson = tileConverter.Run(); Assert.True(File.Exists(tilesetJson)); }
public static string MergeMTilesetsWithZip(string objZipFile, string outputDir, GisPosition gisPosition, bool lod) { var name = Path.GetFileNameWithoutExtension(objZipFile); var unzipDir = Path.Combine(Path.GetDirectoryName(objZipFile), name); if (Directory.Exists(unzipDir)) { Directory.Delete(unzipDir, true); } Directory.CreateDirectory(unzipDir); try { ExtractZipFile(objZipFile, unzipDir); return(MergeMTilesets(unzipDir, outputDir, gisPosition, lod)); } finally { Directory.Delete(unzipDir, true); } }
public static string WriteTilesetWithZip(string objZipFile, string outputDir, GisPosition gisPosition) { var name = Path.GetFileNameWithoutExtension(objZipFile); var unzipDir = Path.Combine(Path.GetDirectoryName(objZipFile), name); if (Directory.Exists(unzipDir)) { Directory.Delete(unzipDir, true); } Directory.CreateDirectory(unzipDir); try { ExtractZipFile(objZipFile, unzipDir); var objFile = Path.Combine(unzipDir, "model.obj"); if (!File.Exists(objFile)) { objFile = Path.Combine(unzipDir, name + ".obj"); } if (!File.Exists(objFile)) { throw new FileNotFoundException("Obj file not found", objFile); } return(WriteTileset(objFile, name, outputDir, gisPosition)); } finally { Directory.Delete(unzipDir, true); } }
public static string SplitObjAndMergeMTilesetsWithZip(string objZipFile, string outputDir, GisPosition gisPosition, int splitLevel = 2) { var name = Path.GetFileNameWithoutExtension(objZipFile); var unzipDir = Path.Combine(Path.GetDirectoryName(objZipFile), name); if (Directory.Exists(unzipDir)) { Directory.Delete(unzipDir, true); } Directory.CreateDirectory(unzipDir); try { ExtractZipFile(objZipFile, unzipDir); var objFile = Path.Combine(unzipDir, "model.obj"); if (!File.Exists(objFile)) { objFile = Path.Combine(unzipDir, name + ".obj"); } if (!File.Exists(objFile)) { throw new FileNotFoundException("Obj file not found", objFile); } var tilesOpts = new TilesOptions { MergeTileJsonFiles = true, OutputFolder = outputDir, WriteChildTileJson = false }; using (var objParser = new Obj2Gltf.WaveFront.ObjParser(objFile)) { var objModel = objParser.GetModel(); var objModels = objModel.Split(splitLevel); var tilesConverter = new TilesConverter(unzipDir, objModels, gisPosition, tilesOpts); return(tilesConverter.Run()); } } finally { Directory.Delete(unzipDir, true); } }