@xeokit/xeokit-convert
Version:
JavaScript utilities to create .XKT files
54 lines (53 loc) • 2.26 kB
TypeScript
/**
* @desc Parses LAS and LAZ point cloud data into an {@link XKTModel}.
*
* This parser handles both the LASER file format (LAS) and its compressed version (LAZ),
* a public format for the interchange of 3-dimensional point cloud data data, developed
* for LIDAR mapping purposes.
*
* ## Usage
*
* In the example below we'll create an {@link XKTModel}, then load an LAZ point cloud model into it.
*
* ````javascript
* utils.loadArraybuffer("./models/laz/autzen.laz", async (data) => {
*
* const xktModel = new XKTModel();
*
* await parseLASIntoXKTModel({
* data,
* xktModel,
* rotateX: true,
* log: (msg) => { console.log(msg); }
* }).then(()=>{
* xktModel.finalize();
* },
* (msg) => {
* console.error(msg);
* });
* });
* ````
*
* @param {Object} params Parsing params.
* @param {ArrayBuffer} params.data LAS/LAZ file data.
* @param {XKTModel} params.xktModel XKTModel to parse into.
* @param {boolean} [params.center=false] Set true to center the LAS point positions to [0,0,0]. This is applied before the transformation matrix, if specified.
* @param {Boolean} [params.transform] 4x4 transformation matrix to transform point positions. Use this to rotate, translate and scale them if neccessary.
* @param {Number|String} [params.colorDepth=8] Whether colors encoded using 8 or 16 bits. Can be set to 'auto'. LAS specification recommends 16 bits.
* @param {Boolean} [params.fp64=false] Configures if LASLoaderPlugin assumes that LAS positions are stored in 64-bit floats instead of 32-bit.
* @param {Number} [params.skip=1] Read one from every n points.
* @param {Object} [params.stats] Collects statistics.
* @param {function} [params.log] Logging callback.
* @returns {Promise} Resolves when LAS has been parsed.
*/
export function parseLASIntoXKTModel({ data, xktModel, center, transform, colorDepth, fp64, skip, stats, log }: {
data: ArrayBuffer;
xktModel: XKTModel;
center?: boolean | undefined;
transform?: boolean | undefined;
colorDepth?: string | number | undefined;
fp64?: boolean | undefined;
skip?: number | undefined;
stats?: Object | undefined;
log?: Function | undefined;
}): Promise<any>;