Convert Figma logo to code with AI

potree logopotree

WebGL point cloud viewer for large datasets

5,107
1,275
5,107
804

Top Related Projects

108,822

JavaScript 3D Library.

1,157

A Three.js-based framework written in Javascript/WebGL for visualizing 3D geospatial data

13,390

WebGL2 powered visualization framework

14,317

An open-source JavaScript library for world-class 3D globes and maps :earth_americas:

3,237

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

  1. 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();
  1. 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();
});
  1. 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

  1. 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>
  1. Create a div for the viewer:
<div id="potree_render_area"></div>
  1. 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

108,822

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.

1,157

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.

13,390

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.

14,317

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.

3,237

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 Figma logo designs to code with AI

Visual Copilot

Introducing Visual Copilot: A new AI model to turn Figma designs to high quality code using your components.

Try Visual Copilot

README

About

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

Examples

Basic ViewerCA13 (18 billion Points)Retz (Potree + Cesium)ClassificationsVarious FeaturesToolbar
More Examples
Load ProjectMatcapVirtual RealityHeidentorLionLion LAS
Lion LAZEPTEPT BinaryEPT zstandardClipping VolumeOriented Images
Elevation ProfileMeasurementsMeshesMultiple Point CloudsCamera AnimationFeatures (CA13)
AnnotationsHierarchical AnnotationsAnimation PathShapefilesCesium CA13Geopackage
Cesium SorvilierCustom Sidebar SectionEmbedded IframeGradient Colors

VR

HeidentorEclepensMorro BayLionDechen Cave

Showcase

MatterhornRetzLake TahoeSorvilierGraveChowilla
More
ChillerCoolerDechen CaveRuinsEclepensHeidentor
BuildingLDHILion HeadOverpassPielachpompei
SantoriniSkateparkSubsea Eq.Subsea Man.Westend PalaisWhitby

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+
                Data-viewer        
     

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",
}