This class is used to manage landscape layer maps of the Landscape Terrain object. Landscape layer map data (height, albedo, masks, settings) is stored in a .lmap file (see the LandscapeMapFileCreator and LandscapeMapFileSettings classes). A landscape map has a single resolution and density, and cannot have insets. Insets are created by adding a high-resolution landscape layer map above the low-resolution one.
Several maps can be blended with each other. Blending parameters for the landscape layer map are controlled via the corresponding methods of the LandscapeMapFilesettings class.
Maximum and Minimum Terrain Height#
This example demonstrates how to obtain minimum and maximum height values for the whole Landscape Terrain (all layer maps) along with the enclosing bounding box. For this puprose we should find all LandscapeLayerMap objects in the World, extend a bounding box to enclose all of them, and use the getExtremumHeight() method to get minimum and maximum height values.
Source code (C++)WorldBoundBox b;
float min = 99999, max = -9999;
Vector<NodePtr> v;
World::getNodes(v);
for (auto & it : v)
{
if (it->getType() == Node::LANDSCAPE_LAYER_MAP)
{
b.expand(it->getWorldBoundBox());
auto ext = checked_ptr_cast<LandscapeLayerMap>(it)->getExtremumHeight();
if (ext.x < min)
min = ext.x;
if (ext.y > max)
max = ext.y;
}
}
vec3 minp = vec3(b.getMin());
vec3 maxp = vec3(b.getMax());
minp.z = min;
maxp.z = max;
BoundBox bb = BoundBox(minp, maxp);
Visualizer::renderBoundBox(bb, Mat4_identity, vec4_red);
LandscapeLayerMap Class
Properties
string Path#
Returns the current path to the *.lmap file containing landscape map data.
set
Sets a new path to the
*.lmap file containing landscape map data.
set value -
New path to the *.lmap file with landscape map data.
bool IsIntersection#
Returns a value indicating if intersection detection is enabled for the landscape layer map.
set
Sets a value indicating if intersection detection is enabled for the landscape layer map.
set value -
true to enable intersection detection for the landscape layer map, false - to disable it.
bool IsCollision#
Returns a value indicating if collision detection is enabled for the landscape layer map.
set
Sets a value indicating if collision detection is enabled for the landscape layer map.
set value -
true to enable collision detection for the landscape layer map, false - to disable it.
bool IsCulling#
Returns a value indicating if heights data of the layer map is to be used for culling precalculation. In order to define which parts of the terrain are to be rendered a culling test is required. This test is performed on the basis of a precalculated low-detail height map, combining heights data of all landscape layer maps having a significant impact on the result. Precalculation is performed on the CPU side, so processing a large number of landscape layer maps may reduce performance. Moreover, some layer maps may be used as decals (i.e. their impact on the resulting height map is insignificant). For such cases you can simply disable this option to avoid unnecessary calculations.
set
Sets a value indicating if heights data of the layer map is to be used for culling precalculation. In order to define which parts of the terrain are to be rendered a culling test is required. This test is performed on the basis of a precalculated low-detail height map, combining heights data of all landscape layer maps having a significant impact on the result.
Precalculation is performed on the CPU side, so processing a large number of landscape layer maps may reduce performance.
Moreover, some layer maps may be used as decals (i.e. their impact on the resulting height map is insignificant).
For such cases you can simply disable this option to avoid unnecessary calculations.
NoticeDisabling this option for a single
set value -
true to use the layer map for culling, false - to ignore it.
int Order#
Sets the current rendering order for the landscape layer map. A map with a higher order value shall be rendered above the ones with lower ones.
set
Returns a new rendering order for the landscape layer map. A map with a higher order value shall be rendered above the ones with lower ones.
set value -
New rendering order to be set for the landscape layer map.
vec2 Size#
Returns the current size of the landscape layer map.
set
Sets a new size for the landscape layer map.
set value -
Two-component vector (X, Y) defining the size of the landscape layer map along X and Y axes, in units.
float HeightScale#
Returns the current scale factor used for heights data. Height values of landscape layer map are multiplied by this value during terrain rendering.
set
Sets a new scale factor to be used for heights data. Height values of landscape layer map are multiplied by this value during terrain rendering.
set value -
Scale factor used for heights data.
vec2 TexelSize#
Returns the current texel size for the landscape layer map textures.
bool IsInit#
Returns a value indicating if the landscape layer map is initialized.
Members
LandscapeLayerMap
(
)
#
The LandscapeLayerMap constructor.
UGUID GetGUID
(
)
#
Returns the
GUID of the LandscapeLayerMap node.
Return value
GUID of the LandscapeLayerMap node.
vec2 GetExtremumHeight
(
float precision = 1.0f
)
#
Returns the minimum and maximum height of the landscape layer map as a two-component vector.
Arguments
- float precision - Precision value in the [0.0f, 1.0f] range. The default value is 1.0f (maximum).
Return value
Two-component vector
(X, Y) defining the minimum (
X) and maximum (
Y) height of the landscape layer map.