Coder Social home page Coder Social logo

cpotree's Introduction

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

cpotree's People

Contributors

m-schuetz avatar manufactory avatar mschuetzcg avatar potree avatar rmichaelis avatar sbrunner avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

cpotree's Issues

does the extract_profile tool ignore the GpsTime attribute?

When I use the extract_profile tool, it appears that the points extracted to the .las file do not have the GpsTime data that is in the original pointcloud.
Is it a bug or do I need to pass a parameter?

I run the tool as follows:
./extract_profile.exe "E:\PointClouds\Track_A" -o "E:\tmp\retz.laz" --coordinates "{564615.531, 4405035.518, 189.464},{564663.891, 4405027.402, 189.343}" --width 50 --min-level 0 --max-level 12

and the metadata.json file: metadata.json

GLIBCXX_3.4.26 seems required but it is not in libstdc++.so.6 (the latest available is GLIBCXX_3.4.25), how to tackle this?

Hi Markus,

I am unable to run CPotree after having installed the Intel TBB library (libtbb-dev) along with the standard C++ library in its latest version (libstdc++-8-dev) in Debian Buster (Dockerized).

Here is the command and the error message that I got:

root@01234:/app# extract_profile data/2525_1185.las -o output/ --coordinates "{2525800,2011700},{2525900,2011800}" --width 10 --min-level 0 --max-level 5

Error is as follow:

extract_profile: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: version `GLIBCXX_3.4.26' not found (required by extract_profile) 

After exploring libstdc++.so.6, I've seen that GLIBCXX_3.4.26 is not there:

root@01234:/app# strings /usr/lib/x86_64-linux-gnu/libstdc++.so.6 | grep GLIBCXX 

GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
GLIBCXX_3.4.3
GLIBCXX_3.4.4
GLIBCXX_3.4.5
GLIBCXX_3.4.6
GLIBCXX_3.4.7
GLIBCXX_3.4.8
GLIBCXX_3.4.9
GLIBCXX_3.4.10
GLIBCXX_3.4.11
GLIBCXX_3.4.12
GLIBCXX_3.4.13
GLIBCXX_3.4.14
GLIBCXX_3.4.15
GLIBCXX_3.4.16
GLIBCXX_3.4.17
GLIBCXX_3.4.18
GLIBCXX_3.4.19
GLIBCXX_3.4.20
GLIBCXX_3.4.21
GLIBCXX_3.4.22
GLIBCXX_3.4.23
GLIBCXX_3.4.24
GLIBCXX_3.4.25
GLIBCXX_DEBUG_MESSAGE_LENGTH  

Any hint on that? Do you rely on precompiled C++ standard lib?
Would it be possible to rely on the latest GLIBCXX_3.4.25 available in libstdc++.so.6?

Thanks a lot!
Best Regards.

CORS inputs

Hi! Does this tool support CORS url inputs?

The filesystem mounted version works fine for me:
extract_profile.exe Y:/pointclouds/bathy -o D:/bathymetry.laz --coordinates "{1,2},{2,4}" --width 5

But trying to point it at the url doesn't
extract_profile.exe https://pointcloud.ucsd.edu/pointclouds/bathy -o D:/bathymetry.laz --coordinates "{1,2},{2,4}" --width 5

Am I just missing some way to specify that it's a URL?

Thanks very much!

Corrupted Octree Nodes?

Some octree nodes report a byteSize of 0 but numPoints larger than 0. This was causing crashes, now these nodes are ignored, instead:

if(node->byteSize == 0 && node->numPoints > 0){

Why is this happening, though? Is the hierarchy description wrong? Is octree.bin actually missing point data? Is CPotree incorrectly parsing the hierarchy?

List point data

Hello,

I'm trying to get the list of all the points with their position, color and intensity of a potree project (already converted). To do that, I have added a getColor and getIntensity on the Points class in order to read the rgb and intensity attribute buffer. The problem is that the values returned aren't colors and intensity. Do you have any solution ?

Here is my code :

dvec3 getColor(int64_t i)
{
	shared_ptr<Buffer>& buffer = attributeBuffersMap["rgb"];

	int32_t R, G, B;
	memcpy(&R, buffer -> data_u8 + i * 6 + 0, 2);
	memcpy(&G, buffer -> data_u8 + i * 6 + 2, 2);
	memcpy(&B, buffer -> data_u8 + i * 6 + 4, 2);

	return {R, G, B};
}

int64_t getIntensity(int64_t i)
{
	shared_ptr<Buffer>& buffer = attributeBuffersMap["intensity"];

	int64_t I;
	memcpy(&I, buffer -> data_u8 + i * 2, 2);
		
	return I;
}

Thank you in advance

Convert extracted normals from int16 to float

Hi,

I couldn't find among the writer classes anyone which extracts and saves the normals.

Since I wrote my own custom writer for ply format (inspired by those already in include folder), I was wondering how to convert the extracted normals to floats?

I know each of nx, ny, nz is stored as an int16 as mentioned in the metadata, but should I use the same scale and offset as for xyz positions to turn them into space world?

This is what I did but I think I should be using another scale,offset pair for normals (as the normals weren't in the right direction always in meshlab):

auto buff_nx = points->attributeBuffersMap["nx"];
auto buff_ny = points->attributeBuffersMap["ny"];
auto buff_nz = points->attributeBuffersMap["nz"];

// save normal of point to vector
int16_t NX, NY, NZ;
memcpy(&NX, buff_nx->data_u8 + i_point * 2, 2);
memcpy(&NY, buff_ny->data_u8 + i_point * 2, 2);
memcpy(&NZ, buff_nz->data_u8 + i_point * 2, 2);

double nx = double(NX) * scale.x + offset.x;
double ny = double(NY) * scale.y + offset.y;
double nz = double(NZ) * scale.z + offset.z;
// normals.push_back({ nx, ny, nz });
normals.push_back({ static_cast<float>(nx), static_cast<float>(ny), static_cast<float>(nz) });

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.