gradient_colors.html 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="utf-8">
  5. <meta name="description" content="">
  6. <meta name="author" content="">
  7. <meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=no">
  8. <title>Potree Viewer</title>
  9. <link rel="stylesheet" type="text/css" href="../build/potree/potree.css">
  10. <link rel="stylesheet" type="text/css" href="../libs/jquery-ui/jquery-ui.min.css">
  11. <link rel="stylesheet" type="text/css" href="../libs/openlayers3/ol.css">
  12. <link rel="stylesheet" type="text/css" href="../libs/spectrum/spectrum.css">
  13. <link rel="stylesheet" type="text/css" href="../libs/jstree/themes/mixed/style.css">
  14. </head>
  15. <body>
  16. <script src="../libs/jquery/jquery-3.1.1.min.js"></script>
  17. <script src="../libs/spectrum/spectrum.js"></script>
  18. <script src="../libs/jquery-ui/jquery-ui.min.js"></script>
  19. <script src="../libs/other/BinaryHeap.js"></script>
  20. <script src="../libs/tween/tween.min.js"></script>
  21. <script src="../libs/d3/d3.js"></script>
  22. <script src="../libs/proj4/proj4.js"></script>
  23. <script src="../libs/openlayers3/ol.js"></script>
  24. <script src="../libs/i18next/i18next.js"></script>
  25. <script src="../libs/jstree/jstree.js"></script>
  26. <script src="../build/potree/potree.js"></script>
  27. <script src="../libs/plasio/js/laslaz.js"></script>
  28. <!-- INCLUDE ADDITIONAL DEPENDENCIES HERE -->
  29. <!-- INCLUDE SETTINGS HERE -->
  30. <div class="potree_container" style="position: absolute; width: 100%; height: 100%; left: 0px; top: 0px; ">
  31. <div id="potree_render_area" style="background-image: url('../build/potree/resources/images/background.jpg');"></div>
  32. <div id="potree_sidebar_container"> </div>
  33. </div>
  34. <script type="module">
  35. import * as THREE from "../libs/three.js/build/three.module.js";
  36. window.viewer = new Potree.Viewer(document.getElementById("potree_render_area"));
  37. viewer.setEDLEnabled(true);
  38. viewer.setFOV(60);
  39. viewer.setPointBudget(1_000_000);
  40. viewer.setMinNodeSize(10);
  41. viewer.loadSettingsFromURL();
  42. viewer.setDescription(`Available gradient color schemes.<br>
  43. Set scheme with 'pointcloud.material.gradient = Potree.Gradients.&lt;name&gt;'`);
  44. viewer.loadGUI(() => {
  45. viewer.setLanguage('en');
  46. $("#menu_scene").next().show();
  47. viewer.toggleSidebar();
  48. });
  49. viewer.scene.view.position.set(1441.04, -826.93, 1604.68);
  50. viewer.scene.view.lookAt(new THREE.Vector3(296.27, -162.42, 786.24));
  51. let gradientNames = Object.keys(Potree.Gradients);
  52. let radius = 520;
  53. for(let i = 0; i < gradientNames.length; i++){
  54. let gradientName = gradientNames[i];
  55. let gradient = Potree.Gradients[gradientName];
  56. let u = 2 * Math.PI * i / gradientNames.length;
  57. let x = 0; //Math.cos(u) * radius + 2.5;
  58. let y = 400 * u - 900; //Math.sin(u) * radius + 0.8;
  59. Potree.loadPointCloud("../pointclouds/vol_total/cloud.js", gradientName, e => {
  60. viewer.scene.addPointCloud(e.pointcloud);
  61. let material = e.pointcloud.material;
  62. material.pointSizeType = Potree.PointSizeType.ADAPTIVE;
  63. material.activeAttributeName = "elevation";
  64. material.gradient = gradient;
  65. if(gradientName === "CONTOUR"){
  66. material.elevationRange = [750, 760];
  67. viewer.setElevationGradientRepeat(Potree.ElevationGradientRepeat.REPEAT);
  68. }else{
  69. material.elevationRange = [720, 800];
  70. }
  71. e.pointcloud.position.set(x, y, e.pointcloud.position.z);
  72. e.pointcloud.updateMatrixWorld();
  73. let box = e.pointcloud.pcoGeometry.tightBoundingBox.clone();
  74. box.applyMatrix4(e.pointcloud.matrixWorld);
  75. let center = box.getCenter();
  76. let annotation = new Potree.Annotation({
  77. title: gradientName,
  78. radius: 600
  79. });
  80. annotation.position = center;
  81. annotation.position.z += 30;
  82. viewer.scene.annotations.add(annotation);
  83. });
  84. }
  85. Potree.loadPointCloud("../pointclouds/vol_total/cloud.js", "custom", e => {
  86. viewer.scene.addPointCloud(e.pointcloud);
  87. let material = e.pointcloud.material;
  88. material.pointSizeType = Potree.PointSizeType.ADAPTIVE;
  89. material.activeAttributeName = "elevation";
  90. material.gradient = [
  91. [0.0, new THREE.Color(0.090, 0.545, 0.400)],
  92. [0.1, new THREE.Color(0.180, 0.590, 0.400)],
  93. [0.2, new THREE.Color(0.271, 0.635, 0.400)],
  94. [0.3, new THREE.Color(0.365, 0.682, 0.400)],
  95. [0.4, new THREE.Color(0.455, 0.727, 0.400)],
  96. [0.5, new THREE.Color(0.545, 0.773, 0.400)],
  97. [0.6, new THREE.Color(0.635, 0.818, 0.400)],
  98. [0.7, new THREE.Color(0.729, 0.865, 0.400)],
  99. [0.8, new THREE.Color(0.820, 0.910, 0.400)],
  100. [0.9, new THREE.Color(0.910, 0.955, 0.400)],
  101. [1.0, new THREE.Color(1.000, 1.000, 0.400)],
  102. ];
  103. material.elevationRange = [720, 800];
  104. e.pointcloud.position.set(0, -1200, e.pointcloud.position.z);
  105. let annotation = new Potree.Annotation({
  106. title: "custom",
  107. radius: 600
  108. });
  109. e.pointcloud.updateMatrixWorld();
  110. let box = e.pointcloud.pcoGeometry.tightBoundingBox.clone();
  111. box.applyMatrix4(e.pointcloud.matrixWorld);
  112. let center = box.getCenter();
  113. annotation.position = center;
  114. annotation.position.z += 30;
  115. //annotation.position = new THREE.Vector3(0, 0, 5);
  116. viewer.scene.annotations.add(annotation);
  117. });
  118. </script>
  119. </body>
  120. </html>