This article describes how to use a custom reference in the 3D Tiles Processing Engine.
Working with ILcdModelReference
You can describe the coordinate system in which an original dataset is defined in an ILcdModelReference
.
The model reference may be null
. In that case, the resulting 3D Tiles tileset will
not have a georeference. You cannot properly add a dataset without a georeference to a Luciad application.
A dataset without a georeference is centered on the 0,0,0
coordinates by default, with a size in meters.
The easiest way to position a dataset on the globe is to use a TLcdTopocentric
reference. It is a Cartesian reference
with the origin positioned at a specific geodetic location, defined in longitude, latitude, and height values, with the Z-axis
tangent to Earth’s ellipsoid and the Y-axis pointing towards the North Pole.
TLcdXYZPoint origin = new TLcdXYZPoint(45.2, 1.2, 125);
TLcdTopocentricReference reference = new TLcdTopocentricReference(new TLcdGeodeticDatum(), origin);
Using the reference
There are 2 ways to define what reference is used to process the dataset. If a single reference is valid for every file in the dataset, specify it as follows:
TLcdXYZPoint origin = new TLcdXYZPoint(45.2548, 1.254, 125);
TLcdTopocentricReference reference = new TLcdTopocentricReference(new TLcdGeodeticDatum(), origin);
TLcd3DTilesProcessorBuilder.newBuilder()
.inputPath("c:/meshes/")
.outputPath("c:/meshes/tiled/")
.reference(reference)
.process()
.get();
If each input file has its own reference, you can plug in a factory function instead.
TLcd3DTilesProcessorBuilder.newBuilder()
.inputPath("c:/meshes/")
.outputPath("c:/meshes/tiled/")
.referenceFactory(aMeshFile -> {
// implement some logic that retrieves the
// correct reference based on the file name.
})
.process()
.get();