-
Notifications
You must be signed in to change notification settings - Fork 48
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
0 parents
commit 862268c
Showing
191 changed files
with
153,041 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
node_modules | ||
package-lock.json | ||
libs/Cesium |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,13 @@ | ||
{ | ||
"workbench.editor.enablePreview": false, | ||
"files.associations": { | ||
"*.vs": "cpp", | ||
"*.fs": "cpp" | ||
}, | ||
"editor.fontSize": 16, | ||
"editor.autoIndent": false, | ||
"editor.detectIndentation": false, | ||
"editor.renderWhitespace": "all", | ||
"editor.insertSpaces": false, | ||
"editor.minimap.enabled": false, | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,131 @@ | ||
<!DOCTYPE html> | ||
<html> | ||
<head> | ||
<meta charset="UTF-8"> | ||
<title>Potree Desktop</title> | ||
|
||
<link rel="stylesheet" type="text/css" href="./libs/potree/potree.css"> | ||
<link rel="stylesheet" type="text/css" href="./libs/jquery-ui/jquery-ui.min.css"> | ||
<link rel="stylesheet" type="text/css" href="./libs/perfect-scrollbar/css/perfect-scrollbar.css"> | ||
<link rel="stylesheet" type="text/css" href="./libs/openlayers3/ol.css"> | ||
<link rel="stylesheet" type="text/css" href="./libs/spectrum/spectrum.css"> | ||
<link rel="stylesheet" type="text/css" href="./libs/jstree/themes/mixed/style.css"> | ||
</head> | ||
<body> | ||
|
||
<!-- https://stackoverflow.com/questions/32621988/electron-jquery-is-not-defined --> | ||
<script>if (typeof module === 'object') {window.module = module; module = undefined;}</script> | ||
|
||
<script src="./libs/jquery/jquery-3.1.1.js"></script> | ||
<script src="./libs/spectrum/spectrum.js"></script> | ||
|
||
<!--<script src="./libs/other/webgl-debug.js"></script>--> | ||
<script src="./libs/perfect-scrollbar/js/perfect-scrollbar.jquery.js"></script> | ||
<script src="./libs/jquery-ui/jquery-ui.min.js"></script> | ||
<script src="./libs/three.js/build/three.js"></script> | ||
<script src="./libs/other/stats.min.js"></script> | ||
<script src="./libs/other/BinaryHeap.js"></script> | ||
<script src="./libs/tween/tween.min.js"></script> | ||
<script src="./libs/d3/d3.js"></script> | ||
<script src="./libs/proj4/proj4.js"></script> | ||
<script src="./libs/openlayers3/ol.js"></script> | ||
<script src="./libs/i18next/i18next.js"></script> | ||
<script src="./libs/jstree/jstree.js"></script> | ||
|
||
<script src="./libs/potree/potree.js"></script> | ||
|
||
<div class="potree_container" style="position: absolute; width: 100%; height: 100%; left: 0px; top: 0px; "> | ||
|
||
<div id="potree_render_area"> | ||
<div id="potree_map" class="mapBox" style="position: absolute; left: 50px; top: 50px; width: 400px; height: 400px; display: none"> | ||
<div id="potree_map_header" style="position: absolute; width: 100%; height: 25px; top: 0px; background-color: rgba(0,0,0,0.5); z-index: 1000; border-top-left-radius: 3px; border-top-right-radius: 3px;"> | ||
</div> | ||
<div id="potree_map_content" class="map" style="position: absolute; z-index: 100; top: 25px; width: 100%; height: calc(100% - 25px); border: 2px solid rgba(0,0,0,0.5); box-sizing: border-box;"></div> | ||
</div> | ||
|
||
<div id="potree_description" class="potree_info_text"></div> | ||
</div> | ||
|
||
<div id="potree_sidebar_container"> </div> | ||
</div> | ||
|
||
|
||
<script> | ||
|
||
function allowDrag(e) { | ||
console.log("allowDrag"); | ||
if (true) { | ||
e.dataTransfer.dropEffect = 'copy'; | ||
e.preventDefault(); | ||
} | ||
} | ||
|
||
|
||
function dropHandler(event){ | ||
console.log(event); | ||
event.preventDefault(); | ||
|
||
for(let i = 0; i < event.dataTransfer.items.length; i++){ | ||
let item = event.dataTransfer.items[i]; | ||
|
||
if(item.kind !== "file"){ | ||
continue; | ||
} | ||
|
||
let file = item.getAsFile(); | ||
let path = file.path; | ||
let folderName = path.replace(/\\/g, "/").split("/").reverse()[1]; | ||
|
||
Potree.loadPointCloud(path, folderName, function(e){ | ||
viewer.scene.addPointCloud(e.pointcloud); | ||
viewer.zoomTo(e.pointcloud); | ||
}); | ||
} | ||
} | ||
$("body")[0].addEventListener("dragenter", allowDrag); | ||
$("body")[0].addEventListener("dragover", allowDrag); | ||
$("body")[0].addEventListener("drop", dropHandler); | ||
|
||
window.viewer = new Potree.Viewer(document.getElementById("potree_render_area")); | ||
//$("canvas")[0].addEventListener("drop", dropHandler); | ||
|
||
viewer.setEDLEnabled(true); | ||
viewer.setFOV(60); | ||
viewer.setPointBudget(10*1000*1000); | ||
viewer.setMinNodeSize(0); | ||
viewer.useEDL = false; | ||
viewer.loadSettingsFromURL(); | ||
|
||
viewer.setDescription(""); | ||
|
||
viewer.loadGUI(() => { | ||
viewer.setLanguage('en'); | ||
$("#menu_appearance").next().show(); | ||
$("#menu_tools").next().show(); | ||
$("#menu_scene").next().show(); | ||
viewer.toggleSidebar(); | ||
}); | ||
|
||
// Sigeom | ||
//Potree.loadPointCloud("C:/dev/pointclouds/archpro/heidentor.laz_converted/cloud.js", "Heidentor", function(e){ | ||
////Potree.loadPointCloud("http://5.9.65.151/mschuetz/potree/resources/pointclouds/archpro/heidentor/cloud.js", "Heidentor", function(e){ | ||
// viewer.scene.addPointCloud(e.pointcloud); | ||
// e.pointcloud.position.z = 0; | ||
// let material = e.pointcloud.material; | ||
// material.size = 1; | ||
// material.pointSizeType = Potree.PointSizeType.ADAPTIVE; | ||
|
||
// viewer.switchCameraMode(Potree.CameraMode.ORTHOGRAPHIC); | ||
|
||
// viewer.scene.view.position.set(13.856734292740617, -9.125174923658731, 14.563928417406354); | ||
// viewer.scene.view.lookAt(-3.5482630104475366, 2.728596783815762, 6.1406044783018725); | ||
// //viewer.fitToScreen(); | ||
|
||
// //Potree.measureTimings = true; | ||
//}); | ||
|
||
</script> | ||
|
||
|
||
</body> | ||
</html> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,21 @@ | ||
MIT License | ||
|
||
Copyright (c) 2016 Jaume Sanchez | ||
|
||
Permission is hereby granted, free of charge, to any person obtaining a copy | ||
of this software and associated documentation files (the "Software"), to deal | ||
in the Software without restriction, including without limitation the rights | ||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||
copies of the Software, and to permit persons to whom the Software is | ||
furnished to do so, subject to the following conditions: | ||
|
||
The above copyright notice and this permission notice shall be included in all | ||
copies or substantial portions of the Software. | ||
|
||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | ||
SOFTWARE. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,137 @@ | ||
# MeshLine | ||
Mesh replacement for ```THREE.Line``` | ||
|
||
Instead of using GL_LINE, it uses a strip of triangles billboarded. Some examples: | ||
|
||
[](https://www.clicktorelease.com/code/THREE.MeshLine/demo/index.html) | ||
[](https://www.clicktorelease.com/code/THREE.MeshLine/demo/graph.html) | ||
[](https://www.clicktorelease.com/code/THREE.MeshLine/demo/spinner.html) | ||
[](https://www.clicktorelease.com/code/THREE.MeshLine/demo/svg.html) | ||
[](https://www.clicktorelease.com/code/THREE.MeshLine/demo/shape.html) | ||
[](https://www.clicktorelease.com/code/THREE.MeshLine/demo/birds.html) | ||
|
||
* [Demo](https://www.clicktorelease.com/code/THREE.MeshLine/demo/index.html): play with the different settings of materials | ||
* [Graph](https://www.clicktorelease.com/code/THREE.MeshLine/demo/graph.html): example of using ```MeshLine``` to plot graphs | ||
* [Spinner](https://www.clicktorelease.com/code/THREE.MeshLine/demo/spinner.html): example of dynamic ```MeshLine``` with texture | ||
* [SVG](https://www.clicktorelease.com/code/THREE.MeshLine/demo/svg.html): example of ```MeshLine``` rendering SVG Paths | ||
* [Shape](https://www.clicktorelease.com/code/THREE.MeshLine/demo/shape.html): example of ```MeshLine``` created from a mesh | ||
* [Birds](https://www.clicktorelease.com/code/THREE.MeshLine/demo/birds.html): example of ```MeshLine.advance()``` by @caramelcode (Jared Sprague) and @mwcz (Michael Clayton) | ||
|
||
### How to use #### | ||
|
||
* Include script | ||
* Create and populate a geometry | ||
* Create a MeshLine and assign the geometry | ||
* Create a MeshLineMaterial | ||
* Use MeshLine and MeshLineMaterial to create a THREE.Mesh | ||
|
||
#### Include the script | ||
|
||
Include script after THREE is included | ||
```js | ||
<script src="THREE.MeshLine.js"></script> | ||
``` | ||
or use npm to install it | ||
``` | ||
npm i three.meshline | ||
``` | ||
and include it in your code (don't forget to require three.js) | ||
```js | ||
var THREE = require( 'three' ); | ||
var MeshLine = require( 'three.meshline' ); | ||
``` | ||
|
||
##### Create and populate a geometry ##### | ||
|
||
First, create the list of vertices that will define the line. ```MeshLine``` accepts ```THREE.Geometry``` (looking up the ```.vertices``` in it) and ```Array```/```Float32Array```. ```THREE.BufferGeometry``` coming soon, and may be others like ```Array``` of ```THREE.Vector3```. | ||
|
||
```js | ||
var geometry = new THREE.Geometry(); | ||
for( var j = 0; j < Math.PI; j += 2 * Math.PI / 100 ) { | ||
var v = new THREE.Vector3( Math.cos( j ), Math.sin( j ), 0 ); | ||
geometry.vertices.push( v ); | ||
} | ||
``` | ||
|
||
##### Create a MeshLine and assign the geometry ##### | ||
|
||
Once you have that, you can create a new ```MeshLine```, and call ```.setGeometry()``` passing the vertices. | ||
|
||
```js | ||
var line = new MeshLine(); | ||
line.setGeometry( geometry ); | ||
``` | ||
|
||
Note: ```.setGeometry``` accepts a second parameter, which is a function to define the width in each point along the line. By default that value is 1, making the line width 1 * lineWidth. | ||
|
||
```js | ||
line.setGeometry( geometry, function( p ) { return 2; } ); // makes width 2 * lineWidth | ||
line.setGeometry( geometry, function( p ) { return 1 - p; } ); // makes width taper | ||
line.setGeometry( geometry, function( p ) { return 2 + Math.sin( 50 * p ); } ); // makes width sinusoidal | ||
``` | ||
|
||
##### Create a MeshLineMaterial ##### | ||
|
||
A ```MeshLine``` needs a ```MeshLineMaterial```: | ||
|
||
```js | ||
var material = new MeshLineMaterial(); | ||
``` | ||
|
||
By default it's a white material of width 1 unit. | ||
|
||
```MeshLineMaterial``` has several attributes to control the appereance of the ```MeshLine```: | ||
|
||
* ```map``` - a ```THREE.Texture``` to paint along the line (requires ```useMap``` set to true) | ||
* ```useMap``` - tells the material to use ```map``` (0 - solid color, 1 use texture) | ||
* ```alphaMap``` - a ```THREE.Texture``` to use as alpha along the line (requires ```useAlphaMap``` set to true) | ||
* ```useAlphaMap``` - tells the material to use ```alphaMap``` (0 - no alpha, 1 modulate alpha) | ||
* ```repeat``` - THREE.Vector2 to define the texture tiling (applies to map and alphaMap - MIGHT CHANGE IN THE FUTURE) | ||
* ```color``` - ```THREE.Color``` to paint the line width, or tint the texture with | ||
* ```opacity``` - alpha value from 0 to 1 (requires ```transparent``` set to ```true```) | ||
* ```alphaTest``` - cutoff value from 0 to 1 | ||
* ```dashArray``` - THREE.Vector2 to define the dashing (NOT IMPLEMENTED YET) | ||
* ```resolution``` - ```THREE.Vector2``` specifying the canvas size (REQUIRED) | ||
* ```sizeAttenuation``` - makes the line width constant regardless distance (1 unit is 1px on screen) (0 - attenuate, 1 - don't attenuate) | ||
* ```lineWidth``` - float defining width (if ```sizeAttenuation``` is true, it's world units; else is screen pixels) | ||
* ```near``` - camera near clip plane distance (REQUIRED if ```sizeAttenuation``` set to false) | ||
* ```far``` - camera far clip plane distance (REQUIRED if ```sizeAttenuation``` set to false) | ||
|
||
If you're rendering transparent lines or using a texture with alpha map, you should set ```depthTest``` to ```false```, ```transparent``` to ```true``` and ```blending``` to an appropriate blending mode, or use ```alphaTest```. | ||
|
||
##### Use MeshLine and MeshLineMaterial to create a THREE.Mesh ##### | ||
|
||
Finally, we create a mesh and add it to the scene: | ||
|
||
```js | ||
var mesh = new THREE.Mesh( line.geometry, material ); // this syntax could definitely be improved! | ||
scene.add( mesh ); | ||
``` | ||
|
||
### TODO ### | ||
|
||
* Better miters | ||
* Proper sizes | ||
* Support for dashArray | ||
|
||
### Support ### | ||
|
||
Tested successfully on | ||
|
||
* Chrome OSX, Windows, Android | ||
* Firefox OSX, Windows, Anroid | ||
* Safari OSX, iOS | ||
* Internet Explorer 11 (SVG and Shape demo won't work because they use Promises) | ||
* Opera OSX, Windows | ||
|
||
### References ### | ||
|
||
* [Drawing lines is hard](http://mattdesl.svbtle.com/drawing-lines-is-hard) | ||
* [WebGL rendering of solid trails](http://codeflow.org/entries/2012/aug/05/webgl-rendering-of-solid-trails/) | ||
* [Drawing Antialiased Lines with OpenGL](https://www.mapbox.com/blog/drawing-antialiased-lines/) | ||
|
||
#### License #### | ||
|
||
MIT licensed | ||
|
||
Copyright (C) 2015-2016 Jaume Sanchez Elias, http://www.clicktorelease.com |
Oops, something went wrong.