diff --git a/meshroom/core/graph.py b/meshroom/core/graph.py index 2b789f96..2f0bc3f9 100644 --- a/meshroom/core/graph.py +++ b/meshroom/core/graph.py @@ -933,7 +933,7 @@ class Graph(BaseObject): for edge in self.getEdges(dependenciesOnly=dependenciesOnly): nodeEdges[edge.src.node].add(edge.dst.node) - + return nodeEdges def dfs(self, visitor, startNodes=None, longestPathFirst=False): @@ -1114,7 +1114,7 @@ class Graph(BaseObject): self._computationBlocked.clear() compatNodes = [] - visitor = Visitor(reverse=False, dependenciesOnly=True) + visitor = Visitor(reverse=False, dependenciesOnly=False) def discoverVertex(vertex, graph): # initialize depths diff --git a/meshroom/ui/reconstruction.py b/meshroom/ui/reconstruction.py index 7931948e..e0abb5fb 100755 --- a/meshroom/ui/reconstruction.py +++ b/meshroom/ui/reconstruction.py @@ -680,6 +680,8 @@ class Reconstruction(UIGraph): nodes = self._graph.dfsOnDiscover(startNodes=[startNode], filterTypes=nodeTypes, reverse=True)[0] if not nodes: return None + # order the nodes according to their depth in the graph, then according to their name + nodes.sort(key=lambda n: (n.depth, n.name)) node = nodes[-1] if preferredStatus: node = next((n for n in reversed(nodes) if n.getGlobalStatus() == preferredStatus), node) @@ -1019,7 +1021,7 @@ class Reconstruction(UIGraph): for category, node in nodesByCategory.items(): self.activeNodes.get(category).node = node if category == 'sfm': - self.setSfm(node) + self.setActiveNode(self.lastSfmNode()) for node in nodes: if node is None: continue