static void RunMeshroomCompute( string MeshroomComputeBin, string ImagesDir, string graph, ComputeProgress ComputeProgressCB) { /* remove previous cache dir, if it exists */ Utils.RemoveDir(Meshroom.GetCacheDir(ImagesDir)); /* start meshroom compute process */ var proc = Utils.Run(MeshroomComputeBin, graph); var graphName = Path.GetFileNameWithoutExtension(graph); var stepsPoller = MeshroomProgress.GetPoller(ImagesDir); while (!proc.HasExited) { var done = stepsPoller.PollStepsDone(); var total = stepsPoller.TotalSteps; ComputeProgressCB(graphName, (float)done / (float)total); Thread.Sleep(1300); } var exitCode = proc.ExitCode; if (exitCode != 0) { var err = string.Format("{0} failed, exit code {1}", MeshroomComputeBin, exitCode); throw new Exception(err); } CopyCamerasSFMFile(ImagesDir, graphName); }
public static void PhotogrammImages( string MeshroomComputeBin, string SensorDatabase, string VocTree, string ImagesDir, TimeBase TimeBase, uint LastFrame, ComputeProgress ComputeProgressCB) { var chunks = Chunks.GetChunks(TimeBase, LastFrame); var graphs = MeshroomGraphs(SensorDatabase, VocTree, ImagesDir, chunks); foreach (var graph in graphs) { RunMeshroomCompute(MeshroomComputeBin, ImagesDir, graph, ComputeProgressCB); } /* clean-up last meshroom cache directory */ Utils.RemoveDir(Meshroom.GetCacheDir(ImagesDir)); }
public static void PhotogrammImages( string MeshroomComputeBin, string SensorDatabase, string VocTree, string ImagesDir, TimeBase TimeBase, uint LastFrame, ComputeProgress ComputeProgressCB, AutoResetEvent AbortEvent) { var chunks = FrameChunks.GetChunks(TimeBase, LastFrame); var graphs = MeshroomGraphs(SensorDatabase, VocTree, ImagesDir, chunks); int chunkNum = 0; foreach (var graph in graphs) { RunMeshroomCompute(MeshroomComputeBin, ImagesDir, graph, chunkNum, (done) => ComputeProgressCB(chunkNum, done), AbortEvent); chunkNum += 1; } /* clean-up last meshroom cache directory */ RemoveCacheDir(ImagesDir, chunkNum); }