Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
dev:viewer:actions:add_view [2023/02/13 14:53] pieter |
dev:viewer:actions:add_view [2023/02/14 14:21] jeroen removed |
||
---|---|---|---|
Line 1: | Line 1: | ||
- | ====== Add View ====== | + | ====== Add, Move, Change View ====== |
+ | |||
+ | ===== View Modes ===== | ||
+ | |||
+ | The available View Modes depend on the loaded Resources: | ||
+ | |||
+ | * 3D View | ||
+ | * Streetlevel Spherical View | ||
+ | * Streetlevel Planar View | ||
+ | * Aerial Planar View | ||
+ | * Aerial Oblique Planar View | ||
+ | |||
+ | ===== Add View ====== | ||
Click on the ' | Click on the ' | ||
Line 5: | Line 17: | ||
The different View modes are described [[dev: | The different View modes are described [[dev: | ||
- | ===== Find Best Photo ====== | + | ===== Move View ===== |
+ | |||
+ | Move an existing View to a new location | ||
+ | |||
+ | Hover over the ID of the View on top, click ' | ||
+ | |||
+ | To move all views at once, hold Shift in move mode and choose a new location. While holding Shift, ' | ||
- | ==== Input Parameters | + | ===== Switch View Mode ===== |
- | FIXME Add find photo algorithm information | + | Change the View Mode of a View. |
- | Inputs: | + | Hover over the eye-icon on top of the view to open the 'View Mode Fly-out' and choose |
- | * resources | + | |
- | * focusPosition : The position we want to observe. | + | |
- | * viewPosition : The position we are observing | + | |
- | * minPhotos : The minimum amount | + | |
- | * relevantPhotosMax : The maximum number of photos to return. | + | |
- | * searchDistances2D : The array of search distance steps to use. | + | |
- | * findCloserPhotoAlgorithm : The algorithm used to sort photo positions. | + | |
- | * '' | + | |
- | * '' | + | |
- | * requireFocusVisible : Require | + | |
- | * isStreetlevel : If this parameter is true, the ' | + | |
- | * searchCenter : The center position to use when retrieving photo positions. | + | |
- | * '' | + | |
- | * '' | + | |
- | * '' | + | |
- | === Input Parameters per renderMode | + | ===== Focus other Views ===== |
- | ^ ^ Streetlevel Spherical ^ Streetlevel Planar ^ UAV Planar ^ Oblique Planar ^ | ||
- | | focusPosition | ||
- | | viewPosition | ||
- | | minPhotos | ||
- | | relevantPhotosMax | ||
- | | searchDistances2D | ||
- | | findCloserPhotoAlgorithm | '' | ||
- | | requireFocusVisible | false | true | true | true | | ||
- | | isStreetlevel | ||
- | | searchCenter | ||
- | < | + | ===== Search & Open best photo ===== |
- | < | + | |
- | Some constants : | + | Add, Move and Focus Views trigger the request to Search and Open the " |
- | | + | Depending on the use case and data-type other methods or configurations can be used. \\ |
- | | + | Anyway, the action consists of 2 consecutive steps |
+ | | ||
+ | - Sort Photos | ||
- | ==== Algorithm | + | ==== Get Candidates |
- | FindClosestPhoto | + | Find relevant photos around the requested Focus Coordinate. \\ |
+ | Any photo becomes a candidate if | ||
+ | * Focus Coordinate is nearby the Photo Coordinate (Search Radius) | ||
+ | * Focus Coordinate is in the field of View of the Photo. | ||
- | <code javascript> | + | Searching |
- | function(resource, | + | |
- | { | + | * the maximum search radius |
- | | + | |
- | { | + | |
- | let searchCenterPosition = (searchCenter = VIEW) ? viewPosition : focusPosition; | + | |
- | let photoList = resource.findPhotosInCircle(searchCenterPosition, | + | |
- | if (requireFocusVisible) | + | |
- | { | + | |
- | if (parameters.isStreetlevel) | + | |
- | { | + | |
- | photoList = keepPhotosWithProjectionInsidePan(photoList, | + | |
- | } | + | |
- | else | + | |
- | { | + | |
- | photoList = keepPhotosWithProjectionInsideMargin(photoList, | + | |
- | } | + | |
- | if (photoList.length< | + | |
- | { | + | |
- | photoList = keepPhotosWithProjectionInsideMargin(photoList, | + | |
- | } | + | |
- | } | + | |
- | if (photoList.length< | + | |
- | { | + | |
- | continue; | + | |
- | } | + | |
- | photoList = sortPhotos(photoList, | + | |
- | return { | + | |
- | photo: photoList[0], | + | |
- | relevantPhotos: | + | |
- | } | + | |
- | } | + | |
- | } | + | |
- | </ | + | |
- | <code javascript> | + | ==== Sort Photos ==== |
- | function sortPhotos(photoList) | + | |
- | { | + | |
- | for(photo in photoList) | + | |
- | { | + | |
- | if (parameters.findCloserPhotoAlgorithm | + | |
- | { | + | |
- | photo.distance | + | |
- | } | + | |
- | if (parameters.findCloserPhotoAlgorithm | + | |
- | { | + | |
- | if (viewPosition!=null) | + | |
- | { | + | |
- | photo.distance | + | |
- | } | + | |
- | else | + | |
- | { | + | |
- | photo.distance | + | |
- | } | + | |
- | } | + | |
- | } | + | |
- | sortByDistance(photoList); | + | |
- | return photoList; | + | |
- | } | + | |
- | </ | + | |
- | | + | |
+ | 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. | ||
- | distanceToProjectionCenter(): | ||