Commit graph

713 commits

Author SHA1 Message Date
Yann Lanthony
d3885331b2 [ui] AttributeEditor: fix value setting by slider + avoid scientific notation
* fix reference to non-existing slider.value 
* convert values to string to avoid e+XX notation on large numbers
* fix number of decimals based on stepSize to avoid floating point approximations
2018-07-24 15:14:31 +02:00
Yann Lanthony
6bb70895f3 [core] remove ABCMeta metaclass for Python 2 compatibility
mixing ABCMeta and QObject inheritance is problematic when using Python 2
2018-07-24 15:06:15 +02:00
Yann Lanthony
fd8c275203 [ui] add CompatibilityManager component
* display and allow to upgrade incompatible nodes after project loading
* add a ToolButton in main toolbar to open CompatibilityManager in case of compatibility issues
2018-07-20 17:57:53 +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
5ddf138554 [ui] bind start/submit button 'enabled' property to graph computability 2018-07-19 14:50:58 +02:00
Yann Lanthony
7dfb750407 [ui] move node menu to GraphEditor + ensure computability of node
use core.graph.canCompute on current node to check if node can be computed; enable computation related MenuItem accordingly
2018-07-19 14:50:58 +02:00
Yann Lanthony
0128cd56f0 [ui] add CompatibilityBadge on CompatibilityNodes
* add badge icon on nodes in GraphEditor
* add badge banner in AttributeEditor with upgrade button when available
2018-07-19 13:50:45 +02:00
Yann Lanthony
ca712ef2aa [ui] AttributeEditor: don't instantiate slider if no range is defined 2018-07-19 13:50:45 +02:00
Yann Lanthony
fc8a3f5f0b [ui] GraphEditor: add helper functions to move and select nodes 2018-07-19 13:50:45 +02:00
Yann Lanthony
5897dc13b6 [core] verify chunk hosts a subprocess before killing it
a chunk can be marked as "RUNNING" without hosting a subprocess, if a node is duplicated in the graph
2018-07-19 13:50:45 +02:00
Yann Lanthony
f5d11a8a7a [node] CompatibilityNode: expose additional properties
* add 'issueDetails' to get a comprehensive text about the issue
2018-07-19 13:50:45 +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
52d1d1fb89 [core] node_factory: del old 'attributes' key from serialized node dict 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
1af3a16d81 [core] CompatibilityNode: recursively build List/GroupAttribute descriptions 2018-07-19 13:50:45 +02:00
Yann Lanthony
7d389e365c [ui] display application version in window title 2018-07-19 13:50:45 +02:00
Yann Lanthony
4c03ecc249 [ui] remove meaningless meshroom.ui version + set application version 2018-07-19 13:50:45 +02:00
Yann Lanthony
a18d75c0f9 [ui][commands] expose UpgradeNode command 2018-07-19 13:50:45 +02:00
Yann Lanthony
1d309136ec [core][node] serialization: rename 'attributes' to 'inputs' 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
Yann Lanthony
b6cbb0cc63 [desc] fix default values for List/GroupAttribute 2018-07-19 13:50:45 +02:00
Yann Lanthony
6014c701e4 [nodes] CameraInit: fix uid list on 'path' sub-attribute
only impacts uid 0
2018-07-19 13:50:45 +02:00
Yann Lanthony
67ac4bf2ca [core] split uids computation + cache override in updateInternals
* add _computeUids internal method + store computed uids in a dedicated dict
* cache override:
  * add optional cacheDir parameter on updateInternal method to override graph cache directory
  * _buildCmdVars always update member variable '_cmdVars' 
  * CameraInit: ensure node does not belong to a graph and use updateInternals with temp cache directory
2018-07-19 13:50:45 +02:00
Yann Lanthony
727950afef [core] take attributes name into account when computing node's uids
two different attributes with the same value must participate differently to the computed uid
2018-07-19 13:50:45 +02:00
Yann Lanthony
a9e61108ab [core][io] save header with versions metadata in graph file
* save a header with versions metadata:
   * meshroom release 
   * file format
   * node types used in the graph
* save the graph in a dedicated "graph" category
* multiview: store pipeline version in graph header
2018-07-19 13:50:45 +02:00
Yann Lanthony
5f3ddffbbf [core] add 'unregisterNodeType' function 2018-07-19 13:50:45 +02:00
Yann Lanthony
95ca93c977 [core] add utility functions to get nodes and modules versions 2018-07-19 13:50:45 +02:00
Yann Lanthony
e776d99944 [meshroom] add initial version 2018.1 2018-07-19 13:50:45 +02:00
Yann Lanthony
3129e5bff9 [core] variable renaming in loadPlugins function
remove references to "node"
2018-07-19 13:50:45 +02:00
Yann Lanthony
cf243ea488 [tests] move test nodes to tests package
avoid releasing test-related nodes
2018-07-19 13:50:45 +02:00
Yann Lanthony
a409eb5eda [multiview] add initial multiview pipeline version 2018-07-19 13:50:45 +02:00
Yann Lanthony
2a410d07ea [nodes][aliceVision] add initial version on nodes 2018-07-19 13:50:45 +02:00
Yann Lanthony
5d14189206 [graph] convert cache directory to unix-style filepath in cacheDir setter 2018-07-19 13:50:45 +02:00
Yann Lanthony
346277629a [nodes] use 'desc.Node.internalFolder' in outputs values
* avoid duplicating the same string everywhere
* don't override 'internalFolder' with the same value default value in subclasses
2018-07-19 13:50:45 +02:00
Fabien Castan
2eb2c3ac6f
Merge pull request #142 from alicevision/dev_voctreeUID
[nodes][aliceVision] remove voctree path from uid 0 computation
2018-07-16 08:44:28 +02:00
Fabien Castan
253758be2f
Merge pull request #144 from alicevision/dev_lockedSfM
Add SfM "lock" option from AliceVision branch `dev_sfmLockedPoses`
2018-07-16 08:43:56 +02:00
Grégoire De Lillo
f48c044440 [nodes] ExportMayaMVG rename ExportMaya 2018-07-10 12:07:44 +02:00
Grégoire De Lillo
d463195f8c [nodes] StructureFromMotion add lockScenePreviouslyReconstructed option 2018-07-10 11:59:01 +02:00
Yann Lanthony
9f2185706e [nodes][aliceVision] remove voctree path from uid 0 computation
Avoid invalidating ImageMatching nodes when voctree path changes (i.e: Meshroom prebuilt binaries coming with an embedded voctree)
2018-07-06 12:10:21 +02:00
Grégoire De Lillo
0578adabe7
Merge pull request #141 from alicevision/fix_py3_jsonIO
[nodes] CameraInit: fix broken py3 compatibility + simplify json IO
2018-07-06 11:09:31 +02:00
Yann Lanthony
6d1cf59fb1 [nodes] CameraInit: fix broken py3 compatibility + simplify json IO
* read: str.decode not available in py3; use io.open (available in py2/3) to specify encoding + errors handling
* write: direclty use json.dump to write viewpoints file
2018-07-06 10:43:39 +02:00
Yann Lanthony
8f3a42efef
Merge pull request #140 from alicevision/fix_liveSfM
Fix Live Reconstruction mode
2018-07-05 17:48:42 +02:00
Yann Lanthony
80869879bb [ui] fix Live Reconstruction mode
* use Filepath to setup watched folder
* consider whether mvs nodes were created when sending sfmAugmented signal
2018-07-05 16:45:59 +02:00
Yann Lanthony
b9b9bca4ec
Merge pull request #138 from alicevision/fix_test_uigraph
Fix UIGraph unit tests crash
2018-07-04 08:49:38 +02:00