Skip to main content

A light-weight web point cloud visualizer based on Three.js

Project description

Introduction

Point-viz is a light-weight, out-of-box point cloud visualizer working in browser, it is built on Three.js and has python API. Bounding box (bbox) visualization is supported and here is an example. Point-viz does not need Internet connection to work (but the installation needs, of course), and it has been tested on Chrome and Safari with both python 2 and 3. The main motivation of this visualizer is to allow user to visualize point cloud data from remote server easily .

Tested Environment

  • python==3.7
  • numpy==1.18.5
  • Browsers: Google Chrome, Safari, Firefox

Usage

To install point-viz, simply run: pip install point-viz, and that's all.

Below is the template of its python API:

# Import package.
from point_viz import PointvizConverter

# Initialize and setup output directory.
Converter = PointvizConverter(home)
# Pass data and create html files.
Converter.compile(task_name, coors, default_rgb, intensity, bbox_params, bbox_color)

Below is a more specific (partial) example that is demonstrated on KITTI dataset.



save_viz_path = /path/to/save/visualization/

Converter = PointvizConverter(save_viz_path)

...

# note the pts_inputs are in z-up system
# which in kittidataset, it should be in 
# velodyne coordinates
pts_inputs = kitti_dataset.get_sample(1)

...

gt_bbox_params_list = []

# the labels are in z-up system
# which in kittidataset, it should be in 
# velodyne coordinates
for obj in kitti_dataset.get_labels(1):
    bbox_params_list = [obj.l, # along y axis
                        obj.h, # along z axis
                        obj.w, # along x axis
                        obj.y,
                        obj.z,
                        obj.x,
                        obj.ry] 
                        # in l, h, w, y, z, x
                        # since the coordinate system in three.js is y-up
    gt_bbox_params_list.append(bbox_params_list)

# if you want to generate visualizations for multiple samples
# you have to call this function compile in a loop
Converter.compile("sample_{}".format(1), coors=pts_input[:,:3],         intensity=pts_input[:,[1,2,0]], bbox_params=gt_bbox_params_list)

In the example above you find the following directory architectures being generated:

  • /path/to/save/visualization/
    • data
      • sample_1_bbox.csv (if bbox_params is not None during compilation)
      • sample_1_pc.bin (numpy binary files that contains x, y, z, r, g, b)
      • ... (more if you compile multiple times)
    • html
      • sample_1.html
      • ... (more if you compile multiple times)
    • src
      • containing the dependencies that html requires

In your remote server, cd /path/to/save/visualization/. Then run python3 -m http.server 8000.

To access the visualization locally, go to the url http://<ip_address_of_the_remote_server>:8000

Variables Explanation

The * means optional.

home: The directory where to put output html files, must be given.
task_name*: string, name of the output html file (can be overwritten if the name already exists; default value is "default").
coors*: 2-D float array, the x, y and z coordinates of each point in the point cloud.
default_rgb*: 2-D float/int array of the same length as coors, the R, G and B colors of each point. If not provided, the RGB will be automatically calculated based on intensity (if given) or point coordinates (when intensity is also missing).
intensity*: 1-D float array of the same length as coors, the intensity of each point. It only takes effect when default_rgb is not given.
bbox_params*: 2-D list, the geometry parameters of each bbox. Attributes of each row should be arranged as follows:

Attribute # Description
0 Length (float, dimension along x-axis)
1 Height (float, dimension along y-axis)
2 Width (float, dimension along z-axis)
3 X coordinate of bbox centroid (float)
4 Y coordinate of bbox centroid (float)
5 Z coordinate of bbox centroid (float)
6 Horizontal rotation regarding the +x-axis in radians (float)
7* Color of the bbox (string, optional; X11 color name is supported, default is "Magenta")
8* Label text of the bbox (string, optional)

bbox_color*: boolean, default is True. If the color of bbox is missing while the label text is given, then bbox_color has to be explicitly set to False.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

point-viz-1.0.2.tar.gz (714.1 kB view hashes)

Uploaded source

Built Distribution

point_viz-1.0.2-py2-none-any.whl (719.4 kB view hashes)

Uploaded py2

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Huawei Huawei PSF Sponsor Microsoft Microsoft PSF Sponsor NVIDIA NVIDIA PSF Sponsor Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page