3D Maps
On this page, you will find general help for the ProRaster product family including links to documentation, instructional videos, and training videos.
Previous Topic: MapTools
Next Topic: The Multispectral Scene Database
Back to: ProRaster Scientific Help
Back to: ProRaster Help
Back to: ProRaster
Go to: ProRaster Essential help page, ProRaster Premium help page, ProRaster Scientific help page.
The ProRaster User Guide is available for download as a PDF.
ProRaster provides a 3D map rendering capability that will help you understand the shape of your raster surfaces. Add a “3D Surface” layer type, open a 3D map window and you can explore your algorithm in 3D, draped upon a 3D surface.
The 3D map takes advantage of the raster engine to display raster surfaces of any size and at any scale in constant time. It will acquire data from the raster pyramid to maximise quality and detail. However, the content in a 3D map is static. Unlike other systems like Google Maps, it does not update the content as you pan and navigate about.
The 3D map is designed to work in conjunction with a 2D map displaying the same algorithm (the 3D Surface layers in the algorithm will not be displayed in the 2D map). As you zoom and pan about in the 2D map, you can direct the 3D map to update to show the same content. When you edit the algorithm, the changes you make will be immediately reflected in the 3D map, just like they are in the 2D map. This can have an impact on performance. In general, the best strategy is to work with a 2D map until you are finished editing the algorithm, and then open a 3D map.
An algorithm can contain one or more “3D Surface” layers. The raster source attached to the 3D Surface layer will provide the 3D geometry onto which the rest of the algorithm is draped. All the layers in the algorithm that are on top of the 3D Surface layer will be rendered to an image and draped onto the surface. It is possible to render two or more 3D Surfaces. Each surface will be draped with all the layers up to the next 3D surface.
A 3D Surface layer contains a Surface component and a Mask component. In the Surface component, specify the raster source that will be used to generate the 3D surface geometry. Specify the field and band and the time range if applicable. You can apply a Data Conditioning filter, which is one way to vertically scale and transform the surface. You can specify or override the coordinate system. The optional Mask component can be used to clip the surface to the extent of another raster.
To make management of 3D algorithms easier, each 3D Surface layer will be in its own layer group by default. In this scenario each group will render a 3D surface. The 3D Surface layer will be the bottom layer in the group, and the other layers on top of it in the group will be draped on the surface.
In addition to the 3D Surface layer, you need to add at least one additional layer so that there is imagery that can be draped on the surface. These layers need to be on top of the 3D Surface layer in the algorithm tree.
You can now open one or more 3D Map windows. To create a new 3D map, right-click on the Algorithm item at the top of the algorithm tree control and select “New 3D Map Window”. You can also right-click on the 2D map and select “Push to 3D Map” (if you have not yet opened a 3D map window for the algorithm). The 3D surface, draped with the other layers in your algorithm, will be displayed in the default view position. The default settings, or the settings that you have saved previously, will be applied to the 3D map.
Right-click on the 3D map to display a map menu from which you can choose a navigation method and modify the map properties. Right-click on the 2D map and select “Push to 3D Map” from the 2D map menu to update the 3D map with the current zoom extents of the 2D map. Navigate in the 3D map using the mouse and key combinations.
The 3D map menu offers four navigation modes – Spin, Drag, Explore, and Fly Mode. Drag mode is the default and it works in a similar way to Google Maps. Left click (and hold) then drag to move about. Hold the CTRL key, left click (and hold) then drag to rotate. Hold the SHFT key, left click (and hold) then drag to move about vertically. The other three modes work by pointing the mouse cursor in the direction in which you want to go, and then responding when you press and hold the left mouse button. For a full description of all navigation modes, see the dedicated sections below.
On the 3D map menu, select “Reset view” to reset the view to the default position – looking north and downwards onto the surface.
On the 3D map menu, select ‘3D Map Settings…” to access the settings dialog. The 3D Map Settings dialog provides options for controlling the detail of both the 3D surface geometry and the algorithm image drape, the vertical scaling, the lighting, and the map embellishments. For a full description of all 3D Map Settings, see the dedicated section below.
The 3D Map does not require advanced GPU hardware and ought to be compatible with all hardware and drivers. However, the maximum detail of both the surface and the draped imagery that you can render at smooth frame rates will depend on your hardware. If you have an external graphics card in addition to integrated graphics (a GPU on the CPU), then you will probably achieve better rendering performance if ProRaster is using the external GPU. This is controlled by a setting managed by Windows. By default, it is likely to be using the integrated GPU. Go to System > Display > Graphics and select the “Microsoft Store app” option. Select ProRaster, hit “Options” and choose the “High Performance” option. After changing these settings, reboot your computer.
If the 3D Surface layer uses nearest neighbour interpolation, then it will be rendered as columns rather than as a smooth surface. Each column corresponds to a raster cell at the source pyramid level and as you source data from underview levels, the blocks will match the base resolution cells size.
When you use the 2D map menu option “Push to 3D Map”, the 3D map will be updated to reflect the extents of the 2D map. The 3D extent will be centred on the 2D map centre and provide coverage at least as large as the 2D map. It will always provide a little more coverage as it generates a square region of coverage and it may expand the coverage to align with raster cell boundaries to maximise performance and quality. If your eye position in the 3D is within the new extents, then the view transform is preserved. In other words, you can move about and bring in new data whilst maintaining a consistent 3D view. If the eye position is not within the new coverage, then the view transform is reset.
If you use blending or opacity modulation in your algorithm, then this will be reflected in the 3D map. For hints on how to use transparency, see the section below.
You can add multiple 3D Surface layers to an algorithm. As long as there is one or more other layers on top of each 3D Surface layer, each 3D surface layer will be rendered in the 3D map. You can efficiently scale and offset the surfaces vertically using settings accessed from the 3D Map settings dialog. Another possibility is to use a Data Conditioning filter to scale and offset a 3D surface. For more advanced data preparation, use the Calculator processing operation and build virtual rasters that transform raster surfaces, including offsetting them from other surfaces.
Navigation – Spin Mode
This simple navigation mode allows you to rotate the surface and zoom in and out. The view is updated continuously whilst a mouse button is being pressed and held.
- Hold the left mouse button and drag to rotate.
The eye position is rotated about the look-at position.
- Roll the mouse wheel to zoom in and out.
The eye position is moved towards and away from the look-at position.
- Hold the middle mouse button (mouse wheel) to continuously zoom in and out.
The eye position is moved towards and away from the look-at position.
Navigation – Drag Mode
This navigation mode simulates (and extends) the navigation controls used in Google Maps 3D. You can rotate, move about horizontally and vertically, and zoom in and out. The view is updated when you move the mouse.
- Hold the left mouse button and drag to move about horizontally.
The eye position and look-at position are moved simultaneously.
- Hold the left mouse button and the SHFT key and drag to move about vertically.
The eye position and look-at position are moved simultaneously.
- Hold the left mouse button and the CTRL key to rotate.
The eye position is rotated about the look-at position.
- Roll the mouse wheel to zoom in and out.
The eye position is moved towards and away from the look-at position.
- Hold the middle mouse button (mouse wheel) to continuously zoom in and out.
The eye position is moved towards and away from the look-at position.
Navigation – Explore Mode
This navigation mode focusses on controlling the eye and look-at position for precise control. You can rotate, move about horizontally and vertically, and zoom in and out. The view is updated continuously whilst a mouse button is being pressed and held. The speed of rotation and movement is proportional to the distance of the mouse cursor from the centre of the view, and in the direction of the mouse cursor.
- Hold the left mouse button to rotate.
The eye position is rotated about the look-at position.
- Hold the left mouse button and the CTRL key and drag to move about vertically.
The eye position and look-at position are moved simultaneously.
- Hold the left mouse button and the SHFT key and drag to move about vertically.
The eye position and look-at position are moved simultaneously.
- Roll the mouse wheel to zoom in and out.
The eye position is moved towards and away from the look-at position.
- Hold the middle mouse button (mouse wheel) to continuously zoom in and out.
The eye position is moved towards and away from the look-at position.
Navigation – Fly Mode
This navigation mode simulates flying over the surface, although there is no roll component, and your gaze is always directed forward. The view is updated continuously whilst a mouse button is being pressed and held. The speed of rotation is proportional to the distance of the mouse cursor from the centre of the view, and in the direction of the mouse cursor.
- Hold the left mouse button to rotate.
The eye position is rotated about itself.
- Hold the left mouse button and the CTRL key and move forward.
The eye position is moved in the direction of the mouse cursor at a fixed speed.
- Hold the left mouse button and the SHFT key and move backward.
The eye position is moved in the opposite direction to the mouse cursor at a fixed speed.
- Roll the mouse wheel to increase or decrease your speed.
3D Map Settings
Access the 3D Map Settings dialog by right-clicking on a 3D map and selecting the “3D Map Settings…” option from the pop-up menu. After changing the settings and clicking “OK”, the changes will be applied to the selected 3D map.
Default values for all properties are saved so that you can apply the same properties to every 3D map you open. To save the properties currently displayed in the dialog, hit the “Save Default” button. Each time you open a 3D map thereafter (even in a new session), those properties will be applied. To restore the properties for this 3D map to the saved default properties, hit the “Load Default” button. To reset all properties to their default values, hit the “Factory Reset” button. If you want these properties to be applied to other 3D maps thereafter, you should hit the “Save Default” button. Note that some surface specific scaling options are not saved.
Resolution
These settings are applied to each surface displayed in the 3D map. A surface consists of a 3D triangulated surface geometry onto which is draped a high resolution RGBA image. The “Surface mesh size” determines the resolution of surface geometry. You are instructing the system to acquire data from the Surface raster that is N cells wide and N cells high. The number of triangles generated will be approximately 2*N*N. Note that the exact size and extents of the mesh are determined by the system to optimise quality and performance.
The ”Image pixel size” determines the resolution of the image that will be draped onto the surface. The system will render all the layers in the algorithm that are on top of the surface layer into an image that is N pixels wide and N pixels high. Note that the exact size and extents of the mesh are determined by the system to optimise quality and performance.
The capabilities and performance of your 3D rendering hardware will limit the resolution of the surface. Higher resolution surfaces will take longer to generate and display. Choose settings that suit your hardware and performance expectations.
Choosing very high values for the surface or image resolution may not always be necessary. If the engine is acquiring data from underview pyramid levels, then adding more triangles or texels will just cost time and add little or no information to the view.
The Transparency drop list provides options for rendering transparent surfaces. For more information see the dedicated section covering transparency below.
Vertical Transform
In this section you can define a vertical (Z axis) scaling and offset transform for each of your surfaces. For simplicity, you can choose from several automated options, or you can define the transform for each surface manually.
The default “Auto-Uniform” method computes a suitable scaling factor and applies it to all surfaces in the 3D. Surfaces are not offset vertically. Choose this method when you get started with a single surface, or if you have multiple surfaces that are all in the same units and you want to display them in unmodified context.
The “Auto-Scaled” method is identical to “Auto-Uniform” except that you can specify the vertical scaling factor.
If you have two or more surfaces in the 3D map, you can choose the “Auto-Stacked” method. This will compute a suitable scaling factor for each surface. Each surface will be vertically offset so that they are stacked evenly upon each other.
If you have two or more surfaces in the 3D map, you can choose the “Manual” method. Now you can specify both the scaling factor and the vertical offset for each surface. Make sure you name each 3D Surface layer in the algorithm as these names will be used in the surface drop-list. Select each surface and adjust the scale and position as required.
There are two components to the scaling factor – the horizontal-vertical units conversion and the automated or user defined scaling factor. The units conversion accounts for any difference between the horizontal (XY) units and the vertical (Z) units. The horizontal units are generally acquired from the surface coordinate system. The vertical units are acquired from the surface raster (although rasters very rarely specify the vertical unit). The on-screen report on the 3D map will display the units (known or assumed) and the automatic or manual scaling factor.
The vertical offset is a “position” from -100 to 100 (bottom to top). It is not related to the vertical units. You can easily raise and lower surfaces by adjusting this parameter up and down within the position limits.
Lighting
We use a single light to illuminate the surfaces, combined with global ambient. In all cases, the light is pure white. You can set the global ambient, local ambient, local diffuse, and local specular light intensity. Specify a value between 0 (off) and 255 (full). For example, you may want to set the specular light to zero to turn off specular highlights. Or you may want to reduce the ambient light and increase the diffuse light to enhance shadows.
The light can be directional, in which case you specify the X, Y, and Z direction components, or it can be positional, in which case you specify the X, Y, and Z coordinates of the light.
A directional light always shines in the same direction as you navigate and change the view. The shadow will move as you rotate the surface.
A positional light has a fixed position in space and so the surface will have a constant illumination as you navigate and change the view. The coordinates are positive East, positive North, and positive Up. The centre of the view has coordinate (0,0,0) and extents of +/- 100 in each direction. For example, a positional light placed at 100,100,244 will shine from the North-East at 60 degrees above the horizon. If you want to use the Intensity component in the imagery to enhance the shadow, it can be a good idea to use a positional light that mirrors the intensity azimuth and altitude.
Embellishment
In this section you can turn on and off the on-screen report and the 3D axes.
The on-screen report consists of text and graphical information placed in the top-right corner of the 3D map. We report the width of the surface. This is usually reported in metric units (metres, kilometres etc) and is the great circle distance between the southern corners of the surface. It may be reported in map units. If there is a significant difference between the surface width at the southern edge and the northern edge, both will be reported. The height difference between the lowest and highest point on the surface is reported. The automatic or manual vertical scaling factor is reported. The horizontal units and vertical units are reported and if they are unknown this is indicated with a question mark. The heading is reported, and this is also shown in an animated compass graphic.
If you are using the Explore navigation mode and the report is enabled, then the look-at position will be displayed as a 3D cross when you are panning about. This allows you to precisely position the look-at position.
3D Transparency
ProRaster provides support for transparent surface rendering. Rendering transparent content in 3D is a long-standing problem in computer science (you can do your own research on the “Order Independent Transparency” problem). On the “3D Map Settings” dialog we provide four rendering options for transparent surfaces via the “Transparency” drop list.
“Standard” provides no special support for transparent surfaces. As you rotate the view you will certainly see rendering abnormalities that may be unsightly and confusing.
“One way” allows you to see through a transparent surface to other opaque surfaces but does not allow you see a transparent surface through itself. It can be a suitable option for rendering a single transparent surface on top of an opaque surface. It is a multi-pass algorithm so there is some rendering performance cost.
“Sort 2X” generates two geometries for display. One is rendered from south to north and the other in the reverse direction. As you change the view, the algorithm chooses which geometry to render based on your heading. This provides a pseudo-back sorting capability and can significantly improve the appearance of a transparent surface. There is no rendering performance cost, but there is a memory consumption cost.
“Sort 4X” generates four geometries for display and improves upon the “Sort 2X” method. It doubles the amount of memory consumed.
Note that when you render a transparent surface using nearest neighbour interpolation, the “One way” method is used instead of “Sort 2X” or “Sort 4X” (if selected).
Masking
When you mask a 3D Surface (by enabling the Mask component and supplying a raster source) no surface geometry will be generated for masked cells and there are no implications for transparency.
When you mask a layer in the image stack you may return pixels containing the algorithm background color. It is important to make sure the opacity of this background color is set to zero. If so, the masked pixels will not be rendered in 3D.
Clip limits
When you enable “Invalid beyond clip limits” in the Color properties of a component, you introduce the same issue seen in masking. The invalidated pixels will contain the algorithm background color. Make sure the opacity of the background color is set to zero.
Surface layer opacity
If algorithm blending is enabled, in the Color properties of the 3D Surface layer you can modify the opacity of the surface. This will apply to the 3D surface and all the imagery draped upon it. However, as fragments are not being rendered in a back-to-front order, the surface may not be rendered perfectly.
Image layer opacity
If you have multiple layers with different opacity, but at least one of those layers is fully opaque, then the entire surface will be opaque and will be rendered as expected in 3D. If all the layers have opacity less than 1 (255) then the surface will be rendered using blending. However, as fragments are not being rendered in a back-to-front order, the surface may not be rendered perfectly.
Opacity modulation
If you are using opacity modulation (by enabling the Opacity component and providing a raster source and a data transform), then this layer is treated as transparent. If all the layers are transparent (due to opacity modulation or having an opacity less than 1 (255)) then the surface will be rendered using blending. However, as fragments are not being rendered in a back-to-front order, the surface may not be rendered perfectly