Top Related Projects
JavaScript 3D Library.
A Three.js-based framework written in Javascript/WebGL for visualizing 3D geospatial data
WebGL2 powered visualization framework
An open-source JavaScript library for world-class 3D globes and maps :earth_americas:
User-friendly, commercial-grade software for processing aerial imagery. ✈️
Quick Overview
Potree is an open-source WebGL-based point cloud renderer for large datasets. It allows for the visualization and exploration of massive point clouds directly in web browsers, making it ideal for sharing and analyzing 3D scanned environments, LiDAR data, and other large-scale point cloud datasets.
Pros
- Efficient rendering of large point clouds (billions of points) in web browsers
- Supports various point cloud formats and attributes (RGB, intensity, classification)
- Offers measurement and annotation tools for data analysis
- Integrates well with other web technologies and frameworks
Cons
- Requires preprocessing of point cloud data for optimal performance
- Limited styling options compared to desktop-based point cloud software
- Learning curve for customization and advanced features
- Dependency on WebGL support in browsers
Code Examples
- Basic Potree viewer setup:
let viewer = new Potree.Viewer(document.getElementById("potree_render_area"));
viewer.setEDLEnabled(true);
viewer.setFOV(60);
viewer.setPointBudget(1 * 1000 * 1000);
viewer.loadSettingsFromURL();
- Loading a point cloud:
Potree.loadPointCloud("path/to/pointcloud.las", "PointCloud Name", function(e){
let scene = viewer.scene;
let pointcloud = e.pointcloud;
let material = pointcloud.material;
viewer.scene.addPointCloud(pointcloud);
viewer.fitToScreen();
});
- Adding measurement tools:
viewer.scene.addMeasurement(new Potree.Measure.Distance());
viewer.scene.addMeasurement(new Potree.Measure.Area());
viewer.scene.addMeasurement(new Potree.Measure.Volume());
Getting Started
- Include Potree libraries in your HTML:
<link rel="stylesheet" type="text/css" href="potree/potree.css">
<script src="potree/potree.js"></script>
<script src="potree/libs/three.js"></script>
- Create a div for the viewer:
<div id="potree_render_area"></div>
- Initialize the viewer and load a point cloud:
let viewer = new Potree.Viewer(document.getElementById("potree_render_area"));
viewer.setEDLEnabled(true);
viewer.setFOV(60);
viewer.setPointBudget(1 * 1000 * 1000);
Potree.loadPointCloud("path/to/pointcloud.las", "PointCloud Name", function(e){
viewer.scene.addPointCloud(e.pointcloud);
viewer.fitToScreen();
});
Competitor Comparisons
JavaScript 3D Library.
Pros of three.js
- More general-purpose 3D library, suitable for a wide range of applications
- Larger community and ecosystem, with extensive documentation and examples
- Regular updates and active development
Cons of three.js
- Steeper learning curve for beginners
- Less specialized for point cloud rendering compared to Potree
- May require additional plugins or custom code for advanced point cloud functionality
Code Comparison
three.js:
const scene = new THREE.Scene();
const camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);
const renderer = new THREE.WebGLRenderer();
renderer.setSize(window.innerWidth, window.innerHeight);
document.body.appendChild(renderer.domElement);
Potree:
const viewer = new Potree.Viewer(document.getElementById("potree_render_area"));
viewer.setEDLEnabled(true);
viewer.setFOV(60);
viewer.setPointBudget(1 * 1000 * 1000);
viewer.loadSettingsFromURL();
Three.js is a versatile 3D library for web-based graphics, while Potree specializes in rendering large point cloud datasets. Three.js offers more flexibility for general 3D projects, but Potree excels in point cloud visualization with optimized performance for large datasets.
A Three.js-based framework written in Javascript/WebGL for visualizing 3D geospatial data
Pros of iTowns
- More comprehensive geospatial data visualization framework
- Better integration with other web technologies and standards
- Actively maintained with regular updates and community support
Cons of iTowns
- Steeper learning curve due to its broader scope
- May be overkill for simple point cloud visualization tasks
- Potentially higher resource requirements for complex scenes
Code Comparison
iTowns:
const viewerDiv = document.getElementById('viewerDiv');
const view = new itowns.GlobeView(viewerDiv, positionOnGlobe);
const colorLayer = new itowns.ColorLayer('OPENSM', {
source: new itowns.TMSSource({
url: 'http://c.tile.openstreetmap.fr/osmfr/${z}/${x}/${y}.png',
attribution: '© OpenStreetMap contributors',
}),
});
view.addLayer(colorLayer);
Potree:
const viewer = new Potree.Viewer(document.getElementById("potree_render_area"));
viewer.setEDLEnabled(true);
viewer.setFOV(60);
viewer.setPointBudget(1 * 1000 * 1000);
viewer.loadSettingsFromURL();
Both libraries offer powerful 3D visualization capabilities, but iTowns provides a more comprehensive framework for geospatial data, while Potree specializes in efficient point cloud rendering. iTowns may be better suited for complex GIS applications, whereas Potree excels in scenarios focused primarily on point cloud visualization.
WebGL2 powered visualization framework
Pros of deck.gl
- Broader scope for data visualization, supporting various chart types and 2D/3D layers
- Better integration with React and other web frameworks
- More active development and larger community support
Cons of deck.gl
- Steeper learning curve due to its extensive API and features
- May be overkill for projects focused solely on point cloud visualization
Code Comparison
deck.gl example:
import {Deck} from '@deck.gl/core';
import {PointCloudLayer} from '@deck.gl/layers';
new Deck({
layers: [new PointCloudLayer({id: 'point-cloud', data, getPosition: d => d.position})]
});
Potree example:
let viewer = new Potree.Viewer(document.getElementById("potree_render_area"));
viewer.loadSettingsFromURL();
viewer.setEDLEnabled(true);
viewer.setFOV(60);
viewer.loadPointCloud("pointcloud.las", "PointCloud", e => {});
Summary
deck.gl offers a more versatile solution for various data visualization needs, including point clouds, while Potree specializes in large-scale point cloud rendering. deck.gl provides better integration with modern web frameworks but may be more complex for simple point cloud projects. Potree excels in its focused approach to point cloud visualization but may lack the broader capabilities of deck.gl for other data types.
An open-source JavaScript library for world-class 3D globes and maps :earth_americas:
Pros of Cesium
- Broader scope: Supports various 3D geospatial data types beyond point clouds
- More active community: Larger user base and more frequent updates
- Extensive documentation and learning resources
Cons of Cesium
- Steeper learning curve due to its comprehensive feature set
- Heavier and potentially slower for large point cloud datasets
- Requires more setup and configuration for point cloud visualization
Code Comparison
Potree:
Potree.loadPointCloud("pointcloud.las", "PointCloud", function(e){
viewer.scene.addPointCloud(e.pointcloud);
viewer.fitToScreen();
});
Cesium:
var tileset = viewer.scene.primitives.add(new Cesium.Cesium3DTileset({
url: 'pointcloud.json'
}));
viewer.zoomTo(tileset);
Summary
Potree is specialized for point cloud visualization, offering simpler setup and potentially better performance for large point cloud datasets. Cesium, on the other hand, provides a more comprehensive geospatial visualization platform with support for various data types, making it suitable for complex 3D mapping applications. The choice between the two depends on the specific project requirements and the complexity of the data being visualized.
User-friendly, commercial-grade software for processing aerial imagery. ✈️
Pros of WebODM
- Comprehensive end-to-end solution for drone mapping and photogrammetry
- User-friendly web interface for project management and processing
- Supports various output formats and integrations with GIS software
Cons of WebODM
- Steeper learning curve due to its broader feature set
- Requires more system resources for processing large datasets
- Less specialized in point cloud visualization compared to Potree
Code Comparison
WebODM (Python):
def get_asset_download_url(self, task, asset):
"""
Get a URL to download an asset
"""
return reverse('api:task-download-asset', kwargs={'pk': task.id, 'asset': asset})
Potree (JavaScript):
loadSettingsFromURL(){
if(Utils.getParameterByName("pointSize")){
this.setPointSize(parseFloat(Utils.getParameterByName("pointSize")));
}
if(Utils.getParameterByName("FOV")){
this.setFOV(parseFloat(Utils.getParameterByName("FOV")));
}
}
The code snippets highlight different focuses: WebODM on backend processing and asset management, while Potree emphasizes frontend point cloud visualization settings.
Convert
designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual CopilotREADME
About
- Potree is a free open-source WebGL based point cloud renderer for large point clouds. It is based on the TU Wien Scanopy project and research projects Harvest4D, GCD Doctoral College and Superhumans.
- Newest information and work in progress is usually available on twitter
- Contact: Markus Schütz (mschuetz@potree.org)
- References:
Getting Started
Install on your PC
Install node.js
Install dependencies, as specified in package.json, and create a build in ./build/potree.
npm install
Run on your PC
Use the npm start
command to
- create ./build/potree
- watch for changes to the source code and automatically create a new build on change
- start a web server at localhost:1234.
Go to http://localhost:1234/examples/ to test the examples.
Deploy to a server
- Simply upload the Potree folderm with all your point clouds, the build directory, and your html files to a web server.
- It is not required to install node.js on your webserver. All you need is to host your files online.
Convert Point Clouds to Potree Format
Download PotreeConverter and run it like this:
./PotreeConverter.exe C:/pointclouds/data.las -o C:/pointclouds/data_converted
Copy the converted directory into <potreeDirectory>/pointclouds/data_converted. Then, duplicate and rename one of the examples and modify the path in the html file to your own point cloud.
Downloads
- Potree
- PotreeConverter - Convert your point cloud to the Potree format.
- PotreeDesktop - Desktop version of Potree. Allows drag&drop of point clouds into the viewer.
Examples
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
Basic Viewer | CA13 (18 billion Points) | Retz (Potree + Cesium) | Classifications | Various Features | Toolbar |
---|
More Examples
VR
![]() |
![]() |
![]() |
![]() |
![]() |
Heidentor | Eclepens | Morro Bay | Lion | Dechen Cave |
---|
Showcase
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
Matterhorn | Retz | Lake Tahoe | Sorvilier | Grave | Chowilla |
---|
More
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
Chiller | Cooler | Dechen Cave | Ruins | Eclepens | Heidentor |
---|---|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
Building | LDHI | Lion Head | Overpass | Pielach | pompei |
![]() |
![]() |
![]() |
![]() |
![]() |
![]() |
Santorini | Skatepark | Subsea Eq. | Subsea Man. | Westend Palais | Whitby |
Funding
Potree is funded by a combination of research projects, companies and institutions.
Research projects who's funding contributes to Potree:
Project Name | Funding Agency |
---|---|
LargeClouds2BIM | FFG |
Harvest4D | EU 7th Framework Program 323567 |
GCD Doctoral College | TU Wien |
Superhumans | FWF |
We would like to thank our sponsors for their financial contributions that keep this project up and running!
Diamond ⬠15,000+ |
![]() ![]() ![]() ![]() |
---|---|
Gold ⬠10,000+ |
![]() |
Silver ⬠5,000+ |
![]() ![]() ![]() ![]() |
Bronze ⬠1,000+ |
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Credits
- The multi-res-octree algorithms used by this viewer were developed at the Vienna University of Technology by Michael Wimmer and Claus Scheiblauer as part of the Scanopy Project.
- Three.js, the WebGL 3D rendering library on which potree is built.
- plas.io point cloud viewer. LAS and LAZ support have been taken from the laslaz.js implementation of plas.io. Thanks to Uday Verma and Howard Butler for this!
- Harvest4D Potree currently runs as Master Thesis under the Harvest4D Project
- Christian Boucheny (EDL developer) and Daniel Girardeau-Montaut (CloudCompare). The EDL shader was adapted from the CloudCompare source code!
- Martin Isenburg, Georepublic, Veesus, Sigeom Sa, SITN, LBI ArchPro, Pix4D as well as all the contributers to potree and PotreeConverter and many more for their support.
Bibtex
@article{SCHUETZ-2020-MPC,
title = "Fast Out-of-Core Octree Generation for Massive Point Clouds",
author = "Markus Schütz and Stefan Ohrhallinger and Michael Wimmer",
year = "2020",
month = nov,
journal = "Computer Graphics Forum",
volume = "39",
number = "7",
doi = "10.1111/cgf.14134",
pages = "13",
publisher = "John Wiley & Sons, Inc.",
pages = "1--13",
keywords = "point clouds, point-based rendering, level of detail",
}
Top Related Projects
JavaScript 3D Library.
A Three.js-based framework written in Javascript/WebGL for visualizing 3D geospatial data
WebGL2 powered visualization framework
An open-source JavaScript library for world-class 3D globes and maps :earth_americas:
User-friendly, commercial-grade software for processing aerial imagery. ✈️
Convert
designs to code with AI
Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.
Try Visual Copilot