mirror of
https://github.com/alicevision/Meshroom.git
synced 2025-06-02 10:52:03 +02:00
If any model with cameras is displayed in the 3D Viewer, a slider can be used to filter the cameras that are being currently displayed based on their resection IDs. This allows to visualize the order in which the cameras have been added, and the groups in which they have been added.
65 lines
2.5 KiB
QML
65 lines
2.5 KiB
QML
pragma Singleton
|
|
import QtQuick 2.15
|
|
import MaterialIcons 2.2
|
|
|
|
/**
|
|
* Viewer3DSettings singleton gathers properties related to the 3D Viewer capabilities, state and display options.
|
|
*/
|
|
Item {
|
|
readonly property Component sfmDataLoaderComp: Qt.createComponent("SfmDataLoader.qml")
|
|
readonly property bool supportSfmData: sfmDataLoaderComp.status == Component.Ready
|
|
readonly property Component depthMapLoaderComp: Qt.createComponent("DepthMapLoader.qml")
|
|
readonly property bool supportDepthMap: depthMapLoaderComp.status == Component.Ready
|
|
|
|
// supported 3D files extensions
|
|
readonly property var supportedExtensions: {
|
|
var exts = ['.obj', '.stl', '.fbx', '.gltf'];
|
|
if (supportSfmData) {
|
|
exts.push('.abc')
|
|
exts.push('.json')
|
|
exts.push('.sfm')
|
|
}
|
|
if (supportDepthMap)
|
|
exts.push('.exr')
|
|
|
|
return exts;
|
|
}
|
|
|
|
// Available render modes
|
|
readonly property var renderModes: [ // Can't use ListModel because of MaterialIcons expressions
|
|
{"name": "Solid", "icon": MaterialIcons.crop_din },
|
|
{"name": "Wireframe", "icon": MaterialIcons.details },
|
|
{"name": "Textured", "icon": MaterialIcons.texture },
|
|
{"name": "Spherical Harmonics", "icon": MaterialIcons.brightness_7}
|
|
]
|
|
// Current render mode
|
|
property int renderMode: 2
|
|
|
|
// Spherical Harmonics file
|
|
property string shlFile: ""
|
|
// Whether to display normals
|
|
property bool displayNormals: false
|
|
|
|
// Rasterized point size
|
|
property real pointSize: 1.5
|
|
// Whether point size is fixed or view dependent
|
|
property bool fixedPointSize: false
|
|
property real cameraScale: 0.3
|
|
// Helpers display
|
|
property bool displayGrid: true
|
|
property bool displayGizmo: true
|
|
property bool displayOrigin: false
|
|
// Camera
|
|
property bool syncViewpointCamera: false
|
|
property bool viewpointImageOverlay: true
|
|
property real viewpointImageOverlayOpacity: 0.5
|
|
readonly property bool showViewpointImageOverlay: syncViewpointCamera && viewpointImageOverlay
|
|
property bool viewpointImageFrame: false
|
|
readonly property bool showViewpointImageFrame: syncViewpointCamera && viewpointImageFrame
|
|
|
|
// Cameras' resection IDs
|
|
property bool displayResectionIds: false
|
|
property int resectionIdCount: 0
|
|
property int resectionId: resectionIdCount
|
|
property var resectionGroups: [] // Number of cameras for each resection ID
|
|
}
|