[Panorama Viewer] Add fisheye support for viewer

This commit is contained in:
Landrodie 2021-08-17 11:18:26 +02:00 committed by Fabien Castan
parent 67fab19892
commit 7e65c91bf5
2 changed files with 20 additions and 1 deletions

View file

@ -40,6 +40,10 @@ AliceVision.PanoramaViewer {
property int mouseMultiplier: 1 property int mouseMultiplier: 1
property bool isFisheyePano: false
property vector3d fisheyeCircleParametersPano
onIsHighlightableChanged:{ onIsHighlightableChanged:{
for (var i = 0; i < repeater.model; i++) { for (var i = 0; i < repeater.model; i++) {
repeater.itemAt(i).item.onChangedHighlightState(isHighlightable); repeater.itemAt(i).item.onChangedHighlightState(isHighlightable);
@ -246,6 +250,8 @@ AliceVision.PanoramaViewer {
'surface.viewerType': AliceVision.Surface.EViewerType.PANORAMA, 'surface.viewerType': AliceVision.Surface.EViewerType.PANORAMA,
'viewerTypeString': 'panorama', 'viewerTypeString': 'panorama',
'surface.subdivisions': Qt.binding(function() { return subdivisionsPano; }), 'surface.subdivisions': Qt.binding(function() { return subdivisionsPano; }),
'surface.isFisheye' : Qt.binding(function(){ return isFisheyePano; }),
'fisheyeCircleParameters': Qt.binding(function(){ return fisheyeCircleParametersPano; }),
'surface.pitch': Qt.binding(function() { return root.pitch; }), 'surface.pitch': Qt.binding(function() { return root.pitch; }),
'surface.yaw': Qt.binding(function() { return root.yaw; }), 'surface.yaw': Qt.binding(function() { return root.yaw; }),
'surface.roll': Qt.binding(function() { return root.roll; }), 'surface.roll': Qt.binding(function() { return root.roll; }),

View file

@ -19,6 +19,17 @@ FocusScope {
property alias useLensDistortionViewer: displayLensDistortionViewer.checked property alias useLensDistortionViewer: displayLensDistortionViewer.checked
property alias usePanoramaViewer: displayPanoramaViewer.checked property alias usePanoramaViewer: displayPanoramaViewer.checked
property var activeNodeFisheye: _reconstruction.activeNodes.get("PanoramaInit").node
property bool isFisheye : activeNodeFisheye ? activeNodeFisheye.attribute("useFisheye").value : false
property bool useAutoFisheye: activeNodeFisheye ? activeNodeFisheye.attribute("estimateFisheyeCircle").value : true
property real userFisheyeRadius: activeNodeFisheye ? activeNodeFisheye.attribute("fisheyeRadius").value : 0
property variant fisheyeAutoParams: activeNodeFisheye ? _reconstruction.getAutoFisheyeCircle(activeNodeFisheye) : null
property real fisheyeCircleX: useAutoFisheye ? (fisheyeAutoParams ? (fisheyeAutoParams.x) : 0) : activeNodeFisheye.attribute("fisheyeCenterOffset.fisheyeCenterOffset_x").value
property real fisheyeCircleY: useAutoFisheye ? (fisheyeAutoParams ? (fisheyeAutoParams.y) : 0) : activeNodeFisheye.attribute("fisheyeCenterOffset.fisheyeCenterOffset_y").value
property vector3d fisheyeCircleParametersVec: Qt.vector3d(fisheyeCircleX, fisheyeCircleY, userFisheyeRadius)
QtObject { QtObject {
id: m id: m
property variant imgMetadata: { property variant imgMetadata: {
@ -306,7 +317,9 @@ FocusScope {
if(active) { if(active) {
setSource("PanoramaViewer.qml", { setSource("PanoramaViewer.qml", {
'subdivisionsPano': Qt.binding(function(){ return panoramaViewerToolbar.subdivisionsValue;}), 'subdivisionsPano': Qt.binding(function(){ return panoramaViewerToolbar.subdivisionsValue;}),
'downscale': Qt.binding(function(){return panoramaViewerToolbar.downscaleValue;}), 'isFisheyePano': Qt.binding(function(){ return root.isFisheye;}),
'fisheyeCircleParametersPano' : Qt.binding(function(){ return root.fisheyeCircleParametersVec;}),
'downscale': Qt.binding(function(){ return panoramaViewerToolbar.downscaleValue;}),
'isEditable': Qt.binding(function(){ return panoramaViewerToolbar.enableEdit;}), 'isEditable': Qt.binding(function(){ return panoramaViewerToolbar.enableEdit;}),
'isHighlightable': Qt.binding(function(){ return panoramaViewerToolbar.enableHover;}), 'isHighlightable': Qt.binding(function(){ return panoramaViewerToolbar.enableHover;}),
'displayGridPano': Qt.binding(function(){ return panoramaViewerToolbar.displayGrid;}), 'displayGridPano': Qt.binding(function(){ return panoramaViewerToolbar.displayGrid;}),