コード例 #1
0
ファイル: Program.cs プロジェクト: xiaomangqiu/ObjConvert
        static void TestSplitAndMerge()
        {
            var gisPosition  = new GisPosition();
            var mobjZipFile2 = @"testsplitmerge.objr";

            Obj23dTilesTests.SplitObjAndMergeMTilesetsWithZip(mobjZipFile2, "testsplitmerge", gisPosition, 2);
        }
コード例 #2
0
ファイル: Program.cs プロジェクト: xiaomangqiu/ObjConvert
        static void Test3dTile()
        {
            var gisPosition  = new GisPosition();
            var mobjZipFile2 = @"testm3.mobjr";

            Obj23dTilesTests.MergeMTilesetsWithZip(mobjZipFile2, "testm4", gisPosition, false);
        }
コード例 #3
0
        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));
        }
コード例 #4
0
        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));
        }
コード例 #5
0
        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;
        }
コード例 #6
0
        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();
            }
        }
コード例 #7
0
        /// <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));
        }
コード例 #8
0
        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;
        }
コード例 #9
0
        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")));
        }
コード例 #10
0
        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")));
        }
コード例 #11
0
ファイル: Program.cs プロジェクト: xiaomangqiu/ObjConvert
        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);
        }
コード例 #12
0
        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));
        }
コード例 #13
0
        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));
        }
コード例 #14
0
        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);
            }
        }
コード例 #15
0
        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);
            }
        }
コード例 #16
0
        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);
            }
        }