1.6.0 • Published 5 years ago
bst-potree v1.6.0
Potree Core
- This project is based on Potree V1.6.
- Potree is a project created by Markus Schütz i have only adapted some of its components.
- Some elements were removed from the library - PotreeViewer - Controls, Input, GUI, Tools - Anotations, Actions, ProfileRequest - Potree.startQuery, Potree.endQuery and Potree.resolveQueries - Potree.timerQueries - Potree.MOUSE, Potree.CameraMode - PotreeRenderer, RepRenderer, Potree.Renderer - JQuery, TWEEN and Proj4 dependencies
- Point clouds are automatically updated, frustum culling is used to avoid unecessary updates.
How to use
- Download the custom potree build from the build folder
- Include it alonside the worker folder in your project
- Download threejs from github repository
- The build provided its not a module, its a bundle, it requires ES6 feature level support
Demo
Live demo at https://tentone.github.io/potree-core/
Example
- Bellow its a fully functional example of how to use this wrapper to load potree point clouds to a THREE.js project
var scene = new THREE.Scene();
var camera = new THREE.PerspectiveCamera(60, 1, 0.1, 10000);
var canvas = document.createElement("canvas");
canvas.style.position = "absolute";
canvas.style.top = "0px";
canvas.style.left = "0px";
canvas.style.width = "100%";
canvas.style.height = "100%";
document.body.appendChild(canvas);
var renderer = new THREE.WebGLRenderer({canvas:canvas});
var geometry = new THREE.BoxGeometry(1, 1, 1);
var material = new THREE.MeshBasicMaterial({color: 0x00ff00});
var cube = new THREE.Mesh(geometry, material);
scene.add(cube);
var controls = new THREE.OrbitControls(camera, canvas);
camera.position.z = 10;
var points = new Potree.Group();
points.setPointBudget(10000000)
scene.add(points);
Potree.loadPointCloud("data/test/cloud.js", name, function(data)
{
var pointcloud = data.pointcloud;
points.add(pointcloud);
});
function loop()
{
controls.update();
renderer.render(scene, camera);
requestAnimationFrame(loop);
};
loop();
document.body.onresize = function()
{
var width = window.innerWidth;
var height = window.innerHeight;
renderer.setSize(width, height);
camera.aspect = width / height;
camera.updateProjectionMatrix();
}
document.body.onresize();
Reference
- The project has no generated documentation but bellow are some of the main configuration elements
- Potree.BasicGroup
- Container that stores point cloud objects and updates them on render.
- The container supports frustum culling using the point cloud bouding box.
- Automatically stops updating the point cloud if out of view.
- This container only support pointColorType set as RGB, pointSizeType set as FIXED and shape set as SQUARE.
- Potree.Group
- Complete container with support for all potree features.
- Some features require support for the following GL extensions
- EXT_frag_depth, WEBGL_depth_texture, OES_vertex_array_object
- Potree.loadPointCloud
- Method to load a point cloud database file
- Potree.loadPointCloud(url, name, onLoad)
- Potree.PointCloudMaterial
- Material used by threejs to draw the point clouds, based on RawShaderMaterial
- shape
- Defines the shape used to draw points
- Possible values are
- Potree.PointShape.SQUARE
- Potree.PointShape.CIRCLE
- Potree.PointShape.PARABOLOID
- Possible values are
- pointSizeType
- Defines how the point cloud points are sized, fixed mode keeps the same size, adaptive resizes points accordingly to their distance to the camera
- Possible values are
- Potree.PointSizeType.FIXED
- Potree.PointSizeType.ATTENUATED
- Potree.PointSizeType.ADAPTIVE
- pointColorType
- Defines how to color the drawn points
- Possible values are
- Potree.PointColorType.RGB
- Potree.PointColorType.COLOR
- Potree.PointColorType.DEPTH
- Potree.PointColorType.HEIGHT
- Potree.PointColorType.INTENSITY
- Potree.PointColorType.INTENSITY_GRADIENT
- Potree.PointColorType.LOD
- Potree.PointColorType.POINT_INDEX
- Potree.PointColorType.CLASSIFICATION
- Potree.PointColorType.RETURN_NUMBER
- Potree.PointColorType.SOURCE
- Potree.PointColorType.NORMAL
- Potree.PointColorType.PHONG
- Potree.PointColorType.RGB_HEIGHT
- logarithmicDepthBuffer
- Set true to enable logarithmic depth buffer
- weighted
- If true points are drawn as weighted splats
- treeType
- Defines the type of point cloud tree being drawn by this material
- This should be automatically defined by the loader
- Potree.TreeType.OCTREE
- Potree.TreeType.KDTREE
- Potree.PointCloudTree
- Base Object3D used to store and represent point cloud data.
- These objects are created by the loader
Notes
EDL shading is not supported by potree core
Building
- The output javascript is not a module of any kind
- Download and install java runtime.
- Download google clousure jar and place it on potree-core/closure.jar
- The project can be build using
- npm install
- npm run build
Create Point Clouds
Use the Potree Converter tool to create point cloud data from LAS, ZLAS or BIN point cloud files
Dependencies
- three.js
- Closure compiler
1.6.0
5 years ago