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.

Files for point-viz, version 1.0.2
Filename, size File type Python version Upload date Hashes
Filename, size point_viz-1.0.2-py2-none-any.whl (719.4 kB) File type Wheel Python version py2 Upload date Hashes View
Filename, size point-viz-1.0.2.tar.gz (714.1 kB) File type Source Python version None Upload date Hashes View

Supported by

Pingdom Pingdom Monitoring Google Google Object Storage and Download Analytics Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN DigiCert DigiCert EV certificate StatusPage StatusPage Status page