Commit graph

136 commits

Author SHA1 Message Date
Yann Lanthony
9e8d1f1a78 [ui] error handling and reporting for Meshroom file opening
reimplement and try/except file loading method to send error signal if need be.
2018-04-13 22:52:23 +02:00
Yann Lanthony
f2089108aa [ui] high-level log system to prompt message dialogs in UI
* add 'info', 'warning', 'error' Signals on root object Reconstruction
* create MessageDialogs when those signals are emitted
2018-04-13 22:52:22 +02:00
Yann Lanthony
0adc4d8cc6 [core] add low-level retro-compatibility for attribute changes
First version of retrocompatibility, allowing to load files referencing removed or type-incompatible attributes.
* add node_factory to centralize node instantiation
* discard invalid attributes (i.e. not part of the node description anymore or with incompatible value type) when loading a file
* raise on unknown nodes
* add 'core.exception' module to declare Meshroom's exception types
2018-04-13 22:10:13 +02:00
Yann Lanthony
472b860131 [ui] better handling of Reconstruction's current sfm node
* reset sfm node on graph change by using 'sfm' property (ensure previous sfm node is correctly disconnected)
* ui: clear viewers when graph changes
2018-04-06 14:24:45 +02:00
Yann Lanthony
5740a0a9b2 [reconstruction] use multiview.sfmAugmentation
use centralized 'sfmAugmentation' method + create MVS pipeline when augmenting the reconstruction
2018-03-21 15:53:34 +01:00
Yann Lanthony
b596bdffca [multiview] split pipeline creation into several functions
* add 'sfmPipeline', 'mvsPipeline' and 'photogrammetryPipeline' instantiating nodes in an existing graph
* rename main function (creating a new Graph) 'photogrammetry' + create a Publish node if 'output' is specified
2018-03-21 15:53:34 +01:00
Yann Lanthony
450f800fef [ui] allow SfM augmentation when providing new images
* create two separate drop areas when adding images to the project (add images / augment reconstruction)
* add sfm augmentation in graph after intrinsics have been built
2018-03-21 15:53:34 +01:00
Yann Lanthony
b25fbcd00b [reconstruction] compute intrinsics based on a copy of cameraInit node
* avoid node temporary modification (while in another thread)
* always emit instrinsicsBuilt signal to inform listeners that computation is over
2018-03-21 15:53:34 +01:00
Yann Lanthony
dca6d6f2f2 [reconstruction] don't store intrinsics-building thread internally 2018-03-21 15:53:34 +01:00
Yann Lanthony
9f2dbc9639 [reconstruction] small structural re-organization
* move LiveSfmManager.stepCreated to Reconstruction.sfmAugmented
* add utility methods in Reconstruction to get all images/views used in the graph
* ui: perform local auto-layout on sfm augmentation on created nodes
2018-03-21 15:53:34 +01:00
Yann Lanthony
bc8b39b172 [reconstruction] reset internal members when sfm node is deleted 2018-03-21 15:53:34 +01:00
Fabien Castan
736f1c382e
Merge pull request #85 from alicevision/dev_ui_perfs
Performance improvements + UI tweaks
2018-01-30 17:47:58 +01:00
Gregoire De Lillo
e70643a40d [ui] Allow .nef files 2018-01-30 14:42:37 +01:00
Gregoire De Lillo
2dded721c8 [ui] Allow .rw2 and .cr2 files 2018-01-25 17:00:33 +01:00
Yann Lanthony
3965be049b [ui] improve performance on image reconstruction status
*  look-up in views/poses (exposed as QVariant) on QML side is not efficient
*  move this logic to the Python side and expose it as dedicated slots
2018-01-25 12:52:11 +01:00
Yann Lanthony
c53c0ae8d2 [ui] display reconstruction status on Images
* add the notion of a current SfM node in the Reconstruction
* retrieve views and poses from this node when selected or when its status changes
* use this information to display a status on Images in ImageGallery
2018-01-15 21:45:15 +01:00
Yann Lanthony
c5039357f7 [ui] add LiveSfmManager for live SfM augmentation 2018-01-15 15:07:21 +01:00
Yann Lanthony
273cfd9f0e [ui] handle multiple CameraInit nodes in a Reconstruction
* [ui] ImageGallery: add control to navigate image groups
* [graph] expose Node.attribute as a Slot
2018-01-15 14:33:27 +01:00
Yann Lanthony
e5acd916dc [ui] support import of folders containing images
* add isImageFile static method to test input files
* store completed image extensions list as class attribute
2017-12-14 19:03:26 +01:00
Yann Lanthony
c06e2f110a [ui] Reconstruction: maintain CameraInit node and expose Viewpoints model
* keep an internal reference to the "main" CameraInit node an update it according to graph modification
* expose viewpoints model as a property 
* TODO: handle multiple CameraInit nodes
2017-12-14 18:59:03 +01:00
Yann Lanthony
0e08291f8a [ui] introduce UIGraph + ChunksMonitor
* extract UIGraph from Reconstruction: base class that wraps a core.Graph, without knowledge of photogrammetry pipeline
* ChunksMonitor: watch NodeChunks status files for external changes to keep UI updated even when the graph is being computed externally
* Reconstruction inherits UIGraph with photogrammetry specific features
2017-11-24 17:20:13 +01:00
Fabien Castan
83f26dd02a [ui] add traceback message on top execution level 2017-11-23 16:46:13 +01:00
Yann Lanthony
9cc70c8cff [ui] Reconstruction: images import and intrinsics update mechanism
* add methods to add images to the reconstruction (DropEvent or urls)
* explicitly call CameraInit's buildIntrinsics method
* update CameraInit with resulting views and intrinsics
2017-11-14 18:02:26 +01:00
Yann Lanthony
79209c5785 [ui] support connections on ListAttributes
* connection: append and connect to the new element
* disconnection: remove edge and delete element
2017-11-14 16:58:09 +01:00
Yann Lanthony
800314faa9 [ui] Reconstruction: add shortcut to push commands to the undo stack 2017-11-14 16:54:50 +01:00
Yann Lanthony
46463aa007 [ui] Reconstruction: catch errors on graph execution 2017-11-14 16:53:42 +01:00
Yann Lanthony
545952d3a9 [ui] minor fix on new() and clear()
* update graph after setting cacheDir
* clear graph before requesting its deletion on C++ side
2017-11-14 16:49:31 +01:00
Yann Lanthony
f6ae3ae057 [ui] support for appending multiple elements to a ListAttribute at once 2017-11-07 20:34:33 +01:00
Yann Lanthony
00366cda00 [ui] introduce first functional UI with a graph editor
First functional UI that allows to visualize, modify and execute a graph locally.
* use QtQuick Controls 2 + Shapes (Qt >=5.10)
* main menu to save/load a graph
2017-10-31 16:54:16 +01:00
Yann Lanthony
c30b92b695 [commands] add ListAttributeAppend/Remove commands 2017-10-24 19:04:04 +02:00
Yann Lanthony
81fe366365 [ui] add execute / stopExecution slots + 'computing' property
* graph computation is done in a separate Thread
* 'computing' relies on this thread's 'is_alive' status
2017-10-13 16:24:32 +02:00
Yann Lanthony
0a69e9f344 [ui] update core graph and clear undoStack after loading a mg file 2017-10-13 12:22:29 +02:00
Yann Lanthony
d34d6f27ec [ui] expose add/removeEdge as Slots 2017-10-13 12:21:22 +02:00
Yann Lanthony
7ddf86e6bc [ui] homogenize PySide imports 2017-10-13 12:12:00 +02:00
Yann Lanthony
e893a3dfc6 rename package 'processGraph' to 'core' 2017-10-09 12:16:20 +02:00
Yann Lanthony
48941a5782 [ui] first basic debugging UI + elementary commands
* nodes as a ListView (right click to delete a node)
* editable attributes 
* undo/redo for adding/removing nodes and attribute edition
2017-09-25 20:18:27 +02:00