* enable PrimitivePicking to enable picking on point clouds
* use OnDemand render policy
* activate FrustrumCulling + increase far plane
* add management of rasterized OpenGL points via a PointSize render
This commit adds several components to centralize and extend 3D media loading. They are not yet integrated into Viewer3D. The entry point to this system is the MediaLibrary component that:
* can load N medias based on a filepath or load-and-watch node attributes
* provides a cache mechanism to instant-reload medias that were unloaded under certain conditions
* gives access to statistics (vertex/face/camera/textureCount) through a unified interface
Keyboard Actions are never deactivated when focus is lost, leading to picking being enabled on a single click when Control was pressed in the 3D viewer and focus was lost to another Item.
* keep track of focus loss inside the DefaultCameraController
* use it to disable picking while Keyboard has not been pressed back in the 3D viewer
* do the same for 'moving' state with Alt modifier
* when visibility changes, only load current file if log is actually visible
* set 'keepCursorPosition' default value to false in 'loadCurrentFile' method
Accessible from main menu Help > About Meshroom, or by pressing "F1". Provides info about Meshroom version + useful links and related Open Source Licenses.
* load COPYING.md from Meshroom/AliceVision files (either provided with the standalone package or online) + translate them to HTML for display (added `markdown` package in requirements)
* request.js: centralize function to open file urls
* provide system info from MeshroomApp (exposed as contextProperty)
* make Drag/DropArea overflow on the attribute's label to be more tolerant when connecting attributes
* add visual feedback when hovering interactive areas
* tweak spacings between attributes
* fit when the underlying graph has changed (new/open project)
* add 'F' shortcut to fit
* trigger fit after UI has been fully initialized (correct sizes)
* increase EdgeMouseArea thickness for easier picking
* EdgeMouseArea: propagate modifiers on pressed
* increase edge visual thickness when hovered
* add edge contextual menu on right click
* Alt+RighClick shortcut to delete an edge
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
Add a button to copy the textual content of a MessageDialog to the clipboard.
* use hidden TextEdit to perform the copy operation
* add function to modify this text in inherited components
* move icon to title
* 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
* display and allow to upgrade incompatible nodes after project loading
* add a ToolButton in main toolbar to open CompatibilityManager in case of compatibility issues