Commit graph

164 commits

Author SHA1 Message Date
Yann Lanthony
a358c46748
[ui] Reconstruction: improve constructor readability 2019-06-27 18:31:50 +02:00
Yann Lanthony
00857a7a88
[ui] Reconstruction: rename 'endNode' to 'texturing'
+ use makeProperty helper
2019-06-27 18:29:33 +02:00
Yann Lanthony
7546e9ad10 [ui] IntrinsicsIndicator: display distortion model
Directly use intrinsic attribute in IntrinsicsIndicator to retrieve useful values, instead of dedicated methods in 'Reconstruction'.
2019-01-31 17:36:26 +01:00
Yann Lanthony
1cc2561a21 [multiview] unify image files helper functions
Move everything related to image files detection to the 'multiview' module.
2019-01-29 16:04:39 +01:00
Yann Lanthony
7cccea34f2 [ui] reconstruction: fix missing boolean return value 2019-01-28 11:17:25 +01:00
Yann Lanthony
6c9ed42736 [ui] Reconstruction: expose rebuildIntrinsics method
Additional method to rebuild intrinsics from scratch; useful when the sensor database has been modified after an initial images drop.
2019-01-23 18:51:05 +01:00
Yann Lanthony
663a5d679d [ui] ImageGallery: introduce IntrinsicsIndicator
New IntrinsicsIndicator component that displays the initialization mode of each Viewpoint's intrinsic with explanatory tooltip.
2019-01-22 15:57:30 +01:00
Yann Lanthony
fad2cc3e1c [ui] Reconstruction: prevent QML from evaluating destroyed objects
* reset cameraInit property to None when underlying object is destroyed
* test for viewpoints validity in 'isInViews' and 'isReconstructed' methods
2019-01-21 10:55:17 +01:00
Yann Lanthony
bc9abe3b07 Merge remote-tracking branch 'origin/develop' into dev_viewer3D_multi 2018-12-10 15:26:19 +01:00
Fabien Castan
3f4a5b203f
Merge pull request #264 from alicevision/dev_keyframeAndRig
New camera rig workflow
2018-12-10 15:25:07 +01:00
Yann Lanthony
7a8e1c689f [ui] Reconstruction: expose end node instead of mesh filepath
In preparation for massive Viewer3D refactoring.
2018-11-23 20:20:08 +01:00
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