This article is relevant for layers constructed with the |
You can customize the styling of Lightspeed layers constructed with the
TLspLIDARLayerBuilder
by specifying a
TLspPlotStyle
on the builder.
The TLspPlotStyle
uses the ILcdExpression
API for efficient data-dependent customization of the point size, color, opacity, and visibility.
See the
Introduction to data-driven styling
for more information about the ILcdExpression
API.
In this example, we also make use of the TLspEyeDomeLightingSettings
API in the plot style, to improve depth perception. Eye-dome lighting helps accentuate the shapes of objects by shading their
outlines.
//In this example we use a LAS model //but you can do the same for other point cloud formats which use the TLspLIDARLayerBuilder for visualization ILcdModelDecoder modelDecoder = new TLcdCompositeModelDecoder(TLcdServiceLoader.getInstance(ILcdModelDecoder.class)); ILcdModel model = modelDecoder.decode("Data/LAS/terrain_with_buildings.las"); //Retrieve the data type //See the class javadoc of the TLcdLASModelDecoder for more info TLcdLASModelDescriptor modelDescriptor = (TLcdLASModelDescriptor) model.getModelDescriptor(); TLcdDataType domainObjectType = modelDescriptor.getDataType(); //Retrieve the height property, and construct a color map based on the range of the height property TLcdDataProperty heightProperty = domainObjectType.getProperty(TLcdLASModelDescriptor.HEIGHT); ILcdInterval heightRange = modelDescriptor.getPropertyRange(heightProperty); ILcdExpression<Float> heightAttribute = attribute(Float.class, heightProperty); ILcdExpression<Float> fraction = fraction(heightAttribute, (float) heightRange.getMin(), (float) heightRange.getMax()); ILcdExpression<Color> heightColorExpression = mixmap(fraction, TLcdDTEDColorModelFactory.getDefaultColors()); // Create eye-dome lighting settings that will apply a red shade to the view to enhance depth perception TLspEyeDomeLightingSettings eyeDomeLighting = TLspEyeDomeLightingSettings.newBuilder() .color(Color.RED) .build(); //Set the expression for the color on the TLspPlotStyle TLspPlotStyle style = TLspPlotStyle.newBuilder() .modulationColor(heightColorExpression) .eyeDomeLighting(eyeDomeLighting) .build(); //Set the plot style on the layer ILspLayer layer = TLspLIDARLayerBuilder.newBuilder() .model(model) .bodyStyles(TLspPaintState.REGULAR, style) .build();