Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
dev:viewer:actions:add_view [2023/02/10 15:51]
pieter [Find Best Photo]
dev:viewer:actions:add_view [2023/02/14 14:21]
jeroen removed
Line 1: Line 1:
-====== Add View ======+====== Add, Move, Change View ======
  
-Click on the '+' icon and view mode on the left sidebar to open a new view. Next, click on the [[dev:viewer:viewmodes:reference|Reference View]] or an existing View on the location where a new View should be opened. \\ +===== View Modes =====
-The available reality data will define the available Open View options.\\ +
-The different View modes are described [[dev:viewer:viewmodes:3d|here]].+
  
-===== Find Best Photo ======+The available View Modes depend on the loaded Resources:
  
-==== Input Parameters ====+  * 3D View 
 +  * Streetlevel Spherical View 
 +  * Streetlevel Planar View 
 +  * Aerial Planar View 
 +  * Aerial Oblique Planar View
  
-FIXME Add find photo algorithm information+===== Add View ======
  
-Inputs:  +Click on the '+' icon and view mode on the left sidebar to open new view. Nextclick on the [[dev:viewer:viewmodes:reference|Reference View]] or an existing View on the location where new View should be opened\\ 
-  * resources +The available reality data will define the available Open View options.\\ 
-  * focusPosition : The position we want to observe. +The different View modes are described [[dev:viewer:viewmodes:3d|here]].
-  * viewPosition : The position we are observing the photo position from. +
-  * minPhotos : The minimum amount of photos to find after applying the requireFocusVisible filter. Ignored if not positive. +
-  * relevantPhotosMax : The maximum number of relevant photos to return. +
-  * searchDistances2D : The array of search distances to use when finding a closest photo. +
-  * findCloserPhotoAlgorithm : The algorithm to sort results and find a closest photo. +
-    * PIXEL_DISTANCE : Identifies the technique to find a closest photo by projecting the search coordinate on the photo and then sorting by distance to the photo center. +
-    * SPATIAL_DISTANCE : Identifies the technique to find closest photo by taking the 3d distance to the view position (fall back on focus position). +
-  * requireFocusVisible : For planarsonly return photo's that have the search position inside the photo? (false to disable) +
-  * isStreetlevel  We are searching on streetlevel?  +
-    * If true the 'is focus visible?' check (enabled by requireFocusVisible) will check whether the focus position is in view +
-    * for each photo by looking at the angular distance between the photo heading (pan) and the heading defined by the vector from photo position to focus position. +
-    * This yields better result for streetlevel planars (sphericals don't have a 'focus visible' check)+
-  * searchCenter : Identifies searching around the view position+
-    * FOCUS Identifies searching around the focus position and selecting the photo closest to the focus position. +
-    * FOCUS_AND_VIEW  Identifies searching around the focus position and selecting the photo closest to the view position if provided (focus position as fallback).  +
-    * VIEW Identifies searching around the view position and selecting the photo closest to the view position. +
- +
-There are other input parameters, but they do not apply to how the algorithm functions. +
- +
-Some constants :  +
- +
-  * AerialDistances = ''25,50,100,200,400,800,1600,3200,6400,12800'' +
-  * StreetlevelDistances = ''3,9,27,81,243,729''+
  
-Default parameter values : +===== Move View =====
  
-^ ^ Streetlevel Spherical ^ Streetlevel Planar ^ UAV Planar ^ Oblique Planar ^  +Move an existing View to a new location
-| focusPosition       | <required> | <required> | <required> | <required>+
-| viewPosition        | <optional> | <optional> | <optional> | <optional>+
-| minPhotos           | 0 | 0 | 3 | 0 | +
-| relevantPhotosMax   | 10 | 10 | 10 | 10 | +
-| searchDistances2D   | StreetlevelDistances | StreetlevelDistances | AerialDistances  | AerialDistances | +
-| findCloserPhotoAlgorithm | SPATIAL_DISTANCE  | SPATIAL_DISTANCE<sup>1</sup> | SPATIAL_DISTANCE<sup>1</sup> | PIXEL_DISTANCE<sup>1</sup>+
-| requireFocusVisible | false | true | true | true | +
-| isStreetlevel       | true | true | false | false | +
-| searchCenter        | FOCUS_AND_VIEW<sup>2</sup> | FOCUS_AND_VIEW<sup>2</sup> | FOCUS_AND_VIEW<sup>2</sup> | FOCUS |+
  
-<sup>1</sup> Configurable via ''Views -> (Type) Image View -> Open best planar photo by''\\  +Hover over the ID of the View on top, click 'moveand choose another location in one of the Views or Reference View. For image Views, it's possible to choose a specific image by clicking on the footprint of the photo position itself.
-<sup>2</sup> Configurable via ''Views -> Image Views -> Open image from 3D View''+
  
-==== Algorithm ====+To move all views at once, hold Shift in move mode and choose a new location. While holding Shift, 'move' in the View Action Fly-out will change to 'move all' to indicate this.
  
-FindClosestPhoto+===== Switch View Mode =====
  
-<code javascript> +Change the View Mode of View.
-function(searchDistances2D,parameters) +
-+
-  for(searchDistance in searchDistances2D)  +
-  { +
-    let searchCenterPosition = (searchCenter = VIEW) ? viewPosition : focusPosition; +
-    let photoList = findPhotosInCircle(searchCenterPosition,searchDistance); +
-    if (requireFocusVisible) +
-    { +
-      if (parameters.isStreetlevel) +
-      { +
-        photoList = keepPhotosWithProjectionInsidePan(photoList,85%); +
-      } +
-      else +
-      { +
-        photoList = keepPhotosWithProjectionInsideMargin(photoList,20%); // projection is inside photo bounds, reduced by 20% margin? +
-      } +
-      if (photoList.length<10) +
-      { +
-        photoList = keepPhotosWithProjectionInsideMargin(photoList,5%); // projection is inside photo bounds, reduced by a 5% margin? +
-      } +
-    } +
-    if (photoList.length<minPhotos) +
-    { +
-      continue; +
-    } +
-    photoList = sortPhotos(photoList, parameters) +
-    return { +
-      photo: photoList[0], +
-      relevantPhotos: photoList.slice(1,relevantPhotosMax) +
-    } +
-  } +
-+
-</code>+
  
-   +Hover over the eye-icon on top of the view to open the 'View Mode Fly-out' and choose the desired View mode to change the type of the existing View.
-   +
-  +
  
 +===== Focus other Views =====
  
  
-distanceToProjectionCenter(): projects the focus position on the photo and returns the pixel distance from that position to the photo center.+===== Search & Open best photo =====
  
-Input:  +Add, Move and Focus Views trigger the request to Search and Open the "best" image. \\ 
-  Photo List +Depending on the use case and data-type other methods or configurations can be used.  \\ 
-  - Focus Position +Anyway, the action consists of 2 consecutive steps 
-  - View Position+  - Get Candidates 
 +  - Sort Photos
  
-Iterate photo objects+==== Get Candidates ====
  
-<code> +Find relevant photos around the requested Focus Coordinate. \\ 
-If findCloserPhotoAlgorithm = PIXEL_DISTANCE Then  +Any photo becomes a candidate if  
-  distance = getDistanceToProjectionCenter() +  * Focus Coordinate is nearby the Photo Coordinate (Search Radius)  
-If findCloserPhotoAlgorithm = SPATIAL_DISTANCE Then +  * Focus Coordinate is in the field of View of the Photo.
-  If (viewPosition!=null) Then  +
-    distance = getDistanceToPosition(photo,viewPosition) +
-  Else +
-    distance = getDistanceToPosition(photo,focusPosition+
-  End +
-End +
-</code>+
  
-    +Searching for candidates is done by incrementally increasing the search radius and ends when 
-  +  * 10 or more candidates are found, or 
 +  * the maximum search radius is reached.
  
 +==== Sort Photos ====
  
 +Sort candidates by relevance, to get the best image and order alternative images. \\
 +The best image has the smallest value for the selected option
  
 +Options:
 +  * By Direction offset \\ Offset between the Candidate Direction (Candidate to Focus Coordinate) and Request Direction (3D View Position to Focus Coordinate).
 +  * By Pixel offset \\ Pixel offset of the Focus Coordinate projected on the Candidate Image to the Candidate Image Center.
 +  * By Spatial distance \\ Spatial distance of the Focus Coordinate to the Candidate Coordinate.