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
- data
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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for point_viz-1.0.2-py2-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | defdc03f612d1a30f2d5a6555091a605c9f2655c63f8e153cd32f4f6d918e16f |
|
MD5 | 07971193a327cda63fa2d9759054ef67 |
|
BLAKE2b-256 | 3dadd8e61167d0680f8084efcd333766030781dfd82427aae0d75ef8ce121acd |