Roadmap

For anyone interested in using potree, here is a list of what potree can do and what I’m working on:

What potree can do:

  • Render large(>100m points) colored point clouds in all major web browsers.
  • Based on three.js so it can also do everything three.js can.
  • Variable Level of Detail, point spacing and octree depth as trade of between performance and quality.
  • Just take a look at the showcase to get an impression of what it can do!

What I’m working on:

  • Render uncolored LIDAR data.
  • Improving converting and rendering of LIDAR data which usually has large width and depth but low height.
  • Additional materials for intensity, height, return type, etc.
  • Data compression for faster loading, now possible thanks to the Javascript LAZ implementation of Uday Verma and Howard Butler.
  • Georeferencing or at least handling huge coordinates. Georeferenced point clouds tend to have huge coordinates which causes a loss of precision and therefore jitter in points and camera movement.
  • improve culling of unnecessary/invisible nodes
  • Tools like distance measurement and clipping planes.
  • High quality shaders
  • Improved data structures to speed up loading and rendering

Send me an email if you’ve got nice point clouds to provide for the showcase. (preferably in las or laz format)

three.js based rewrite release

The rewrite is now in the master branch. Get the source code at github.
The previous stable release is still available in the archive_latest_before_threejs branch.

Documentation is outdated and has been removed. Take a look at the examples to see how potree is used.

The online-demos have been updated as well. Click on an image to open a demo page:

Skatepark

Pompei

Lion

Ecosynth – Forest

Vienna Parliament Relief

Tower

Rewriting potree using three.js

I’m currently working on rewriting potree in three.js. With this, you will be able to render huge point clouds as well as everything three.js has to offer.

Here are some demos of the current state:
* Distance Measuring
* Skyboxes
* Using one point cloud multiple times in a scene

Update:
The threejs based rewrite is available at: https://github.com/potree/potree/tree/threejs_plugin
It is not stable, yet, but it will become the main branch soon so it might be a good idea to experiment with it instead of the master branch.

PLY Viewer

Here is a PlyViewer demo: PlyViewer

Just Drag&Drop your ply file into the black area and wait until it’s loaded.
For now, only PLY files with float xyz and uchar rgb and up to ~8m points are supported. For example:

element vertex 462312
property float x
property float y
property float z
property uchar red
property uchar green
property uchar blue

If you don’t have a supported ply file, try this one: vienna_parliament_relief.ply

This is what it looks like:

PotreeConverter with support for LAS, PLY and XYZ files

Download Windows 64bit binaries: PotreeConverter_2014.04.06.zip

PotreeConverter can now transform following file formats into the potree format:

  • las files with XYZ and 2-byte RGB data.
  • ply files with “element vertex” as the first element and x,y,z,r,g,b properties. Subsequent elements will be ignored. xyz must be floats and r,g,b must be uchars. ASCII and binary_little_endian formats are supported.
  • xyz files with either xyzrgb or xyzi data. Specify the type, as well as the range of the data with the -f and -r options.

Usage has changed in favour of unix-like arguments:

-h [ --help ]             prints usage
-o [ --outdir ] arg       output directory
-s [ --spacing ] arg      Distance between points at root level. Distance
                          halves each level.
-l [ --levels ] arg       Number of levels that will be generated. 0: only
                          root, 1: root and its children, ...
-f [ --input-format ] arg Input format. xyz: cartesian coordinates as floats,
                          rgb: colors as numbers, i: intensity as number
-r [ --range ] arg        Range of rgb or intensity.
--source arg              Source file. Can be LAS, PLY or XYZ

Examples:

# convert ply files
./PotreeConverter.exe C:/data.ply -s 0.5 -l 4

# convert las files
./PotreeConverter.exe C:/data.las -s 0.5 -l 4 -o C:/potree_converted

# convert files in the xyzrgb format with rgb between 0 and 255
./PotreeConverter.exe C:/data.xyz -f xyzrgb -r 255

# convert files in the xyzi format with intensity between 0 and 65536
./PotreeConverter.exe C:/data.xyz -f xyzi -r 65536

Read more at: https://github.com/potree/PotreeConverter

PotreeConverter – sourcecode

The PotreeConverter sourcecode can be downloaded here:
PotreeConverter – source

It includes a Visual Studio 2012 solution. There is no linux build but I don’t think I’ve used any platform dependend code so it shouldn’t be hard to create one.

For anyone interested in how it works, here is a documentation. It’s written for a course I attended and explains the algorithm, not the source code.
PotreeConverter – documentation