/cesium-point-cloud-generator

A small Java-based tool for the generation of point cloud visualization datasets according to Cesium 3D Tiles.

Primary LanguageJavaScriptApache License 2.0Apache-2.0

Cesium Point Cloud Generator

Introduction

The Cesium Point Cloud Generator (CPCG) is a small Java-based tool for the generation of point cloud visualization datasets according to Cesium 3D Tiles. By utilizing a local portable SQLite database, it takes 3D point cloud datasets given as XYZ text files (possibly including RGB color information for each point) and generates a 3DTiles point cloud to be used for interactive 3D viewing using the Cesium WebGL Digital Globe. The tool is capable of generating multiple levels of detail to increase viewing performance. The generated point cloud datasets can be visualized in a Cesium-based web client, such as the 3DCityDB Web Map Client.

The tool was developed by our former staff Dr. Zhihang Yao and currently maintained by Son H. Nguyen at the Chair of Geoinformatics, Department of Aerospace and Geodesy, Technical University of Munich.

Project Structure

The project consists of several packages and folders, which are described as follows:

Folder Description
src Contains all source codes in Java
data Contains sample data used for testing
lib Contains Java libraries (*.jar) required for the project
viewer Contains a Cesium instance used for visualizing the generated point clouds stored in viewer/output_data

Run Instructions

  1. Download or clone this repository on your local machine:

    git clone https://github.com/tum-gis/cesium-point-cloud-generator
  2. You can either import the cloned repository in a Java IDE (e.g. Eclipse, NetBeans, etc.) and execute the Main.java class, or you can run the stand-alone CesiumPointCloudGenerator.jar file by double-clicking or using the following command:

    java -jar CesiumPointCloudGenerator.jar
  3. A window appears, where all the program configurations are shown:

    These settings can be configured as follows:

    Argument Description Default value
    Input path Input folder that contains all the source data. The sample data included in this project were converted from LAS/LAZ format, which can be found [here].(https://github.com/mattshax/cesium_pnt_generator) data/sample_xyzRGB_data/small
    Spatial Reference Identifier (SRID) Defines the SRID of the source data. 2994
    Separator character Defines the delimiter character used to separate point coordinates and RGB color values in each text line. Whitespace (" ")
    Color depth Determines the color depth (8 or 16 bit) per channel in the source data. Color information, if not provided in the source point data, can be retrieved by combining the input point data with available corresponding aerial images using a GIS software (e.g. ArcGIS, FME, etc.). The Cesium Point Cloud Generator tool will then convert the point data source enriched with color information to Cesium 3D Tiles ready to be visualized. 16
    Height offset Adjusts the height of generated point cloud (blank will be interpreted as 0); the length unit is the same as in the given SRID. -400
    Length unit scale factor (0.0 - 1.0) for heights Scales the height of generated point cloud between metric unit (meter - 1.0) and other units (such as imperial units like inch - 0.0254, foot - 0.3048 or yard - 0.9144). 0.3048
    Tile side length Defines the side length (both height and width) of each tile on the highest Level of Details (LoD). The length unit is the same as in the given SRID. 100
    Maximum number of points in each tile Determines the maximum allowed number of points in each tile on lower LoDs. If a tile contains more points than this number, its points will be selected randomly until the maximum threshold is achieved. 10000
    Output path Output folder that contains the generated point cloud tilesets. viewer/ouput_data
  4. Click Export to start the process. Logs will be shown in the debug area on the right-hand side of the GUI.

  5. After the export is successfully finish, you can find the generated point cloud tilesets in the output folder previously entered in the GUI. To visualize these in Cesium, start the web client in viewer folder:

    cd viewer
    node server

    By default, the web client should be accessible using port number 8080 in localhost, i.e. under the following URL:

    http://localhost:8080/index.html

    Now, the generated point cloud should be visualized in the browser.

Demos

The tool has been used to generate point cloud tilesets for many projects, two of which are in Duesseldorf, NRW, Germany and New York City, USA. Layers such as point cloud, 3D building models in KML/COLLADA/glTF converted from CityGML and terrain imagery can be visualized together using the 3DCityDB Web Map Client. The demo URLs and pictures are listed as follows:

  1. Demo 1: Visualization of generated point cloud in Duesseldorf, NRW, Germany using the 3DCityDB Web Map Client

  1. Demo 2: Visualization of generated point cloud and 3D building models in CityGML in New York City, USA using the 3DCityDB Web Map Client