Пример #1
0
    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);
    }
Пример #2
0
    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));
    }
Пример #3
0
    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);
    }