Merge pull request #2396 from alicevision/fix/getLatestSfMNode

[ui/core] Fix get latest SfM node for previz
This commit is contained in:
Fabien Castan 2024-06-01 11:37:21 +02:00 committed by GitHub
commit 45fd86e51b
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 5 additions and 3 deletions

View file

@ -933,7 +933,7 @@ class Graph(BaseObject):
for edge in self.getEdges(dependenciesOnly=dependenciesOnly): for edge in self.getEdges(dependenciesOnly=dependenciesOnly):
nodeEdges[edge.src.node].add(edge.dst.node) nodeEdges[edge.src.node].add(edge.dst.node)
return nodeEdges return nodeEdges
def dfs(self, visitor, startNodes=None, longestPathFirst=False): def dfs(self, visitor, startNodes=None, longestPathFirst=False):
@ -1114,7 +1114,7 @@ class Graph(BaseObject):
self._computationBlocked.clear() self._computationBlocked.clear()
compatNodes = [] compatNodes = []
visitor = Visitor(reverse=False, dependenciesOnly=True) visitor = Visitor(reverse=False, dependenciesOnly=False)
def discoverVertex(vertex, graph): def discoverVertex(vertex, graph):
# initialize depths # initialize depths

View file

@ -680,6 +680,8 @@ class Reconstruction(UIGraph):
nodes = self._graph.dfsOnDiscover(startNodes=[startNode], filterTypes=nodeTypes, reverse=True)[0] nodes = self._graph.dfsOnDiscover(startNodes=[startNode], filterTypes=nodeTypes, reverse=True)[0]
if not nodes: if not nodes:
return None 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] node = nodes[-1]
if preferredStatus: if preferredStatus:
node = next((n for n in reversed(nodes) if n.getGlobalStatus() == preferredStatus), node) 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(): for category, node in nodesByCategory.items():
self.activeNodes.get(category).node = node self.activeNodes.get(category).node = node
if category == 'sfm': if category == 'sfm':
self.setSfm(node) self.setActiveNode(self.lastSfmNode())
for node in nodes: for node in nodes:
if node is None: if node is None:
continue continue