Commit graph

182 commits

Author SHA1 Message Date
Julien-Haudegond
eb52459bbf [core] Graph: raise error in dfs() with longestPathFirst 2020-09-02 12:37:40 +02:00
Julien-Haudegond
74fa3022fe [core] Graph: avoid double update while adding/removing an edge
Graph.markNodesDirty() is called in three different places:
- Attribute.requestGraphUpdate()
- Graph.addEdge()
- Graph.removeEdge()

However, addEdge() and removeEdge() are especially decorated to request a graph update so, with the old markNodesDirty() implementation, the update was done twice in a row.
2020-08-27 17:16:40 +02:00
Julien-Haudegond
e64c66e447 [core] Graph: remove warning logs from dfsToProcess method
Those warnings happen already in the Task Manager and should be handled only by the Task Manager.
2020-08-27 12:33:32 +02:00
Julien-Haudegond
fb477d486c [core] Graph: remove useless getAlreadySubmittedChunks method 2020-08-27 12:20:46 +02:00
Julien-Haudegond
79e1c69d5d Merge remote-tracking branch 'origin/develop' into dev/nodesAndTaskManager 2020-08-24 15:19:31 +02:00
Julien-Haudegond
ba1994deb9 [core/ui] replace and remove depending/required nodes methods 2020-08-24 11:59:03 +02:00
Julien-Haudegond
11e68e77ed [core] Graph/Node: getInputNodes and getOutputNodes methods 2020-08-24 11:35:32 +02:00
Julien-Haudegond
fe91d07a6a [core] Node: add alive property for QML 2020-08-17 11:39:22 +02:00
Julien-Haudegond
fd51237fa3 [core] Node: add duplicate nodes list property 2020-08-12 18:01:37 +02:00
Julien-Haudegond
8a5f4939b2 [ui] Graph: add a 'Force Unlock Nodes' option 2020-08-12 10:44:53 +02:00
Julien-Haudegond
ff7f8b3e36 [core/ui] add a locked property on nodes
Add locked property on core nodes and update UI in the same commit because both parts are very dependent for this change.
2020-08-11 13:08:47 +02:00
Fabien Castan
bab908d2eb Merge branch 'develop' into dev/nodesAndTaskManager 2020-07-30 10:56:19 +02:00
Fabien Castan
91f53341bc warning fixes 2020-07-16 11:04:43 +02:00
Fabien Castan
ec67c772fa [ui] new generic way to manage "active" nodes per node type 2020-07-07 22:05:53 +02:00
Fabien Castan
082f9b5843 [core] correct the actions order when loading the project file
We now call applyExpr before updateInternals is called (triggered by setupProjectFile and/or end of GraphModification).
So the input parameters expressions/connections are up-to-date (after applyExpr) when updateInternals will evaluate the input/output parameters.
2020-06-29 12:53:11 +02:00
Fabien Castan
0e434908a5 [ui] improve open recent files
* fix path conversion on windows
* remove invalid paths from the list on error
* explicit error message for "No Such File"
2020-03-17 14:07:00 +01:00
Yann Lanthony
fcb2b23c1a [core] add "Attribute.hasOutputConnections" property
Give access to whether an attribute has output connections.
2020-01-24 11:18:08 +01:00
Lee Geertsen
c88881e198
Delete print 2019-11-29 11:34:15 +01:00
Lee Geertsen
3ff5ba8d54
[core] Submit and Compute buttons are disabled if needed 2019-11-29 11:34:15 +01:00
Lee Geertsen
01974c23ec
Make Task Manager with Nodes submitted to a render farm 2019-11-29 11:34:10 +01:00
Lee Geertsen
c00db25c23
Don't lock graph and node editor while computing nodes
Add possibilty to, while computing nodes:
add more nodes to the task manager,
edit, duplicate and remove nodes without breaking the tasks that are submitted
2019-11-29 11:34:10 +01:00
Lee Geertsen
51d6c18840
Create TaskManager with a task overview
Create a seperate class to handle the logic of computing nodes
+ An UI overview with all submitted nodes
2019-11-29 11:34:10 +01:00
Fabien Castan
a53940d29f [core] graph: variable rename 2019-09-25 21:07:28 +02:00
Fabien Castan
06543f89a9 [core] use more explicit argument name: setupFileRef 2019-09-21 18:19:17 +02:00
Fabien Castan
979ee4ba94 [bin] meshroom_photogrammetry: setup cache folder according to --save path
except if --cache is set explicitly
2019-09-12 21:36:36 +02:00
Fabien Castan
231125efdf [ui] improve meshroom command line
- "meshroom -h / --help": now provides command line documentation (so
argparse is done before GUI creation)
- new positional argument to set project file or input folder
- new "--pipeline" option to set a default pipeline, also support an
environment variable
2019-09-12 21:14:52 +02:00
Fabien Castan
9d8e3648b2 [core] submitters: if there is only one submitter, use it!
More explicit error messages when the submitter is not found.
2019-08-21 21:48:03 +02:00
Yann Lanthony
026cd36ff4 [core.graph] update graph after load
Ensure graph internal data is updated after loading.
2019-01-29 16:04:39 +01:00
Yann Lanthony
34ca607261 [ui] GraphEditor : add "Clear Pending Status" tool at Graph level
* allow to clear status of all submitted nodes in the graph
* unify wording
2019-01-07 10:47:25 +01:00
Yann Lanthony
b09068dc68 [ui] Node: add "Clear Data From Here" menu entry + confirmation dialog 2019-01-07 10:47:25 +01:00
Yann Lanthony
400835d8f8 [core] Attribute: expose 'fullName' as property 2018-11-19 15:17:36 +01:00
Yann Lanthony
fa631d8e7a [core] core: use pyCompatibility basestring instead of str 2018-07-28 13:09:16 +02:00
Yann Lanthony
41ea5a5423 [core][graph] store duplication result in an OrderedDict
allows to keep the order in which duplicated nodes were created
2018-07-27 19:05:25 +02:00
Yann Lanthony
830173047c [ui][commands] Duplicate/UpgradeNode: return created Node instances 2018-07-26 22:43:48 +02:00
Yann Lanthony
62dbf7df95 [core][io] return file features as tuple 2018-07-26 18:01:11 +02:00
Yann Lanthony
e2155ba962 [core][io] store nodes position in graph file
* increment file minor version (no incompatibility)
* nodeFactory: reload file position if available
2018-07-26 18:01:11 +02:00
Yann Lanthony
dfb0934ef4 [core] add node position property
Nodes can now be placed at a certain position
* add Position namedtuple
* expose 'position', 'x' and 'y' properties on BaseNode
2018-07-26 18:01:10 +02:00
Yann Lanthony
5843c36435 [core][io] add io version 'Features' mechanism
* centralize available features based on file version in 'IO' class
* add IO.Features enum
2018-07-26 18:01:10 +02:00
Yann Lanthony
ec08de812e [core][io] move file keys to an inner 'Keys' class 2018-07-26 17:45:03 +02:00
Yann Lanthony
93dd055f72 [clean] fix variable names and typos
* node_factory & attribute_factory to camelCase
* fix depths variable in updateNodesTopologicalData
2018-07-26 12:11:43 +02:00
Yann Lanthony
dd3d9cd54b [core][ui] add upgradeAllNodes methods
+ check if node is upgradable in UpgradeNodeCommand
2018-07-20 17:55:30 +02:00
Yann Lanthony
8679fd8bf7 [core] maintain a model with CompatibilityNodes on topology change 2018-07-20 17:52:30 +02:00
Yann Lanthony
3417f58335 [graph] add GraphModification inside upgradeNode method 2018-07-20 15:35:55 +02:00
Yann Lanthony
f5820b3eb1 [graph] expose fileReleaseVersion as property
+ clear header in Graph.clear method
2018-07-20 15:30:27 +02:00
Yann Lanthony
ae716602ab [core] update nodes topological data after nodes status update
evaluate nodes computability requires up-to-date status
2018-07-19 16:08:00 +02:00
Yann Lanthony
30cd8001fd [core][graph] update nodes computability on topology change
CompatibilityNodes introduce a new notion of computability per node.
An uncomputed (and therefore uncomputable) CompatibilityNode blocks the computation of all its successor.

* update nodes computability on topology change (in addition to min/max depth)
* evaluate leaves computability to determine if the whole graph can be processed
2018-07-19 13:50:45 +02:00
Yann Lanthony
89dd55f43b [core] dfsToProcess: stop branch visit when discovering a computed node 2018-07-19 13:50:45 +02:00
Yann Lanthony
ab4e82aa88 [core] add GraphVisitMessage exceptions mecanism
allow to stop branch or graph visit by throwing specific exceptions in visitor callbacks
2018-07-19 13:50:45 +02:00
Yann Lanthony
2952e11691 [core] move duplicateNode methods to core.graph
handle this low-level operation engine side

* fix ListAttribute children links duplication
* handle CompatibilityNode duplication
* move corresponding unit test in test_graph.py
* [ui] add DuplicateNodeCommand
2018-07-19 13:50:45 +02:00
Yann Lanthony
33eb7f3a7f [core] introduce CompatibilityNode for improved scene compatibilities
Improve node serialization/deserialization to be able to recreate the exact same node in the graph when loading a meshroom project, even if the corresponding node's description has changed or does not exist anymore. This allows to recover already computed data on disk, without being impacted by changed uids. CompatibilityNode also provides an on-demand upgrade system to turn into a Node that meets the current node description (if possible).
 
* new abstract class BaseNode, base class for Node and CompatibiliyNode 
* Node: serialize everything needed to spawn a CompatibilityNode with precomputed outputs: inputs, uids, parallelization settings, unresolved internal folders and outputs
* node_factory: handles node deserialization and compatibility issues to create either a Node or a CompatibilityNode
* add compatibility unit tests
2018-07-19 13:50:45 +02:00