diff --git a/meshroom/ui/qml/Viewer/Viewer2D.qml b/meshroom/ui/qml/Viewer/Viewer2D.qml index 2b545d44ac..b2e6c986de 100644 --- a/meshroom/ui/qml/Viewer/Viewer2D.qml +++ b/meshroom/ui/qml/Viewer/Viewer2D.qml @@ -252,7 +252,8 @@ FocusScope { onDisplayedNodeChanged: { // clear metadata if no displayed node if (!displayedNode) { - metadata = {}; + root.source = ""; + root.metadata = {}; } // update output attribute names @@ -268,6 +269,9 @@ FocusScope { } names.push("gallery"); outputAttribute.names = names; + + root.source = getImageFile(); + root.metadata = getMetadata(); } Connections { @@ -1157,18 +1161,26 @@ FocusScope { id: fontMetrics } Layout.preferredWidth: model.reduce((acc, label) => Math.max(acc, fontMetrics.boundingRect(label).width), 0) + 3.0 * Qt.application.font.pixelSize + + onNameChanged: { + root.source = getImageFile(); + root.metadata = getMetadata(); + } } MaterialToolButton { - property var activeNode: root.aliceVisionPluginAvailable && _reconstruction ? _reconstruction.activeNodes.get('allDepthMap').node : null - enabled: activeNode - ToolTip.text: "View Depth Map in 3D (" + (activeNode ? activeNode.label : "No DepthMap Node Selected") + ")" + id: displayImageOutputIn3D + enabled: root.aliceVisionPluginAvailable && _reconstruction && displayedNode && Filepath.basename(root.source).includes("depthMap") + ToolTip.text: "View Depth Map in 3D" text: MaterialIcons.input font.pointSize: 11 Layout.minimumWidth: 0 onClicked: { - root.viewIn3D(root.getFileAttributePath(activeNode, "depth", _reconstruction.selectedViewId)); + root.viewIn3D( + root.source, + displayedNode.name + ":" + outputAttribute.name + " " + String(_reconstruction.selectedViewId) + ); } } diff --git a/meshroom/ui/qml/Viewer3D/MediaLibrary.qml b/meshroom/ui/qml/Viewer3D/MediaLibrary.qml index f3fa124f23..2b6d9ef906 100644 --- a/meshroom/ui/qml/Viewer3D/MediaLibrary.qml +++ b/meshroom/ui/qml/Viewer3D/MediaLibrary.qml @@ -83,7 +83,7 @@ Entity { return -1; } - function load(filepath) { + function load(filepath, label = undefined) { var pathStr = Filepath.urlToString(filepath); if(!Filepath.exists(pathStr)) { @@ -99,12 +99,11 @@ Entity { // add file to the internal ListModel m.mediaModel.append(makeElement({ "source": pathStr, - "label": Filepath.basename(pathStr), + "label": label ? label : Filepath.basename(pathStr), "section": "External" })); } - function view(attribute) { if(m.sourceToEntity[attribute]) { ensureVisible(attribute); diff --git a/meshroom/ui/qml/Viewer3D/Viewer3D.qml b/meshroom/ui/qml/Viewer3D/Viewer3D.qml index 89b46274cd..fab4c24bf9 100644 --- a/meshroom/ui/qml/Viewer3D/Viewer3D.qml +++ b/meshroom/ui/qml/Viewer3D/Viewer3D.qml @@ -36,8 +36,8 @@ FocusScope { mainCamera.viewCenter = defaultCamViewCenter; } - function load(filepath) { - mediaLibrary.load(filepath); + function load(filepath, label = undefined) { + mediaLibrary.load(filepath, label); } /// View 'attribute' in the 3D Viewer. Media will be loaded if needed. diff --git a/meshroom/ui/qml/WorkspaceView.qml b/meshroom/ui/qml/WorkspaceView.qml index 9379da77e9..ecaf2012d5 100644 --- a/meshroom/ui/qml/WorkspaceView.qml +++ b/meshroom/ui/qml/WorkspaceView.qml @@ -30,9 +30,9 @@ Item { // Load a 3D media file in the 3D viewer - function load3DMedia(filepath) { + function load3DMedia(filepath, label = undefined) { if(panel3dViewerLoader.active) { - panel3dViewerLoader.item.viewer3D.load(filepath); + panel3dViewerLoader.item.viewer3D.load(filepath, label); } }