Commit graph

203 commits

Author SHA1 Message Date
Grégoire De Lillo
ad4aa908ee [ui] Allows .arw file extension 2018-10-30 11:28:52 +01:00
Yann Lanthony
7c2255c090 [ui] get reconstruction statuses from updated poseIds in sfm result
* compatibility with rigs, where poseId of views are updated after SfM
* count the number of reconstructed viewpoints based on this
2018-10-11 20:31:24 +02:00
Fabien Castan
51995f47e4 [ui] ImageGallery: display metadata and lens status flag 2018-08-05 20:44:02 +02:00
Yann Lanthony
880816f194 [ui] show callstack in case of unexpected error when loading a file
+ log it
2018-07-28 13:10:23 +02:00
Yann Lanthony
f415745a4a [ui] make Nodes moves undoable
Handle nodes move and auto-layout on Python side by using GraphLayout and MoveNodeCommand.

* Node QML component relies on underlying core.Node object's position
* MoveNodeCommand is called after a Node has been dragged
* partial/full auto-layout for specific graph operations (Duplication, Augmentation...) are now part of those operations
* serialized position in node data allows to properly restore nodes coordinates on undo/redo
* remove all layout/node moving code from QML
2018-07-26 22:46:22 +02:00
Fabien Castan
bb0155ba42
Merge pull request #150 from alicevision/dev_versionCompatibility
Introduce version compatibility handling
2018-07-26 12:50:15 +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
a4a40de8b8 [ui] warning message when opening projects with no version info 2018-07-25 11:23:21 +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
Fabien Castan
2480c22bf2 [ui] display number of reconstructed cameras 2018-07-16 23:15:00 +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
1f675a0e42 [core] split graph.py into separate modules
core.graph is now splitted into: 
  * graph.py
  * node.py
  * attribute.py
2018-06-26 12:19:14 +02:00
Yann Lanthony
2cd724f957 [graph] ListAttribute: replace '__getitem__ by 'at'
__getitem__ is spuriously called when the object is used inside a Qt model and exposed to QML, leading to unexpected behaviors
2018-06-18 14:43:18 +02:00
Yann Lanthony
b46520009f [ui] add 'Message' structure to wrap high-level messages
* fix random segfault due to signals with 2+ arguments (PySide bug)
* group Connections to '_reconstruction' instance
2018-05-28 11:25:41 +02:00
Yann Lanthony
f324416ab4 Fix SfM node state 2018-05-05 14:18:36 +02:00
Yann Lanthony
f87024b0c5 [ui] highlight selected view in 3D + 3D picking
Spawn a cube on each camera to display which one is selected + allow picking from the 3D view
2018-04-21 13:14:29 +02:00
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