|
@@ -428,9 +428,26 @@ export class Utils {
|
|
let closestIntersection = null;
|
|
let closestIntersection = null;
|
|
let closestPoint = null;
|
|
let closestPoint = null;
|
|
|
|
|
|
- for(let pointcloud of pointclouds){
|
|
|
|
|
|
+
|
|
|
|
+ let density
|
|
|
|
+ let sizeType
|
|
|
|
+ if(params.isMeasuring){
|
|
|
|
+ density = Potree.settings.pointDensity
|
|
|
|
+ Potree.settings.pointDensity = 'magnifier'
|
|
|
|
+
|
|
|
|
+ pointclouds.forEach(e=>{//因为全景模式的pointSizeType是fixed所以要还原下
|
|
|
|
+ sizeType = e.material.pointSizeType
|
|
|
|
+ e.material.pointSizeType = Potree.config.material.pointSizeType
|
|
|
|
+ })
|
|
|
|
+ Potree.updatePointClouds(pointclouds, camera, viewport.resolution );
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ for(let pointcloud of pointclouds){
|
|
|
|
+
|
|
let point = pointcloud.pick(viewer, camera, ray, pickParams);
|
|
let point = pointcloud.pick(viewer, camera, ray, pickParams);
|
|
|
|
|
|
|
|
+ viewport.afterRender
|
|
|
|
+
|
|
if(!point){
|
|
if(!point){
|
|
continue;
|
|
continue;
|
|
}
|
|
}
|
|
@@ -445,6 +462,16 @@ export class Utils {
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+
|
|
|
|
+ if(params.isMeasuring){
|
|
|
|
+ Potree.settings.pointDensity = density
|
|
|
|
+
|
|
|
|
+ pointclouds.forEach(e=>{
|
|
|
|
+ e.material.pointSizeType = sizeType
|
|
|
|
+ })
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
if (selectedPointcloud) {
|
|
if (selectedPointcloud) {
|
|
return {
|
|
return {
|
|
location: closestIntersection,
|
|
location: closestIntersection,
|
|
@@ -455,31 +482,18 @@ export class Utils {
|
|
} else {
|
|
} else {
|
|
return null;
|
|
return null;
|
|
}
|
|
}
|
|
|
|
+
|
|
}
|
|
}
|
|
|
|
|
|
- /* static pixelsArrayToImage (pixels, width, height) {
|
|
|
|
- let canvas = document.createElement('canvas');
|
|
|
|
- canvas.width = width;
|
|
|
|
- canvas.height = height;
|
|
|
|
-
|
|
|
|
- let context = canvas.getContext('2d');
|
|
|
|
|
|
+ static renderTargetToDataUrl(renderTarget, width, height, renderer, compressRatio = 0.7){
|
|
|
|
+ let pixelCount = width * height;
|
|
|
|
+ let buffer = new Uint8Array(4 * pixelCount);
|
|
|
|
|
|
- pixels = new pixels.constructor(pixels);
|
|
|
|
-
|
|
|
|
- for (let i = 0; i < pixels.length; i++) {
|
|
|
|
- pixels[i * 4 + 3] = 255;
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- let imageData = context.createImageData(width, height);
|
|
|
|
- imageData.data.set(pixels);
|
|
|
|
- context.putImageData(imageData, 0, 0);
|
|
|
|
-
|
|
|
|
- let img = new Image();
|
|
|
|
- img.src = canvas.toDataURL();
|
|
|
|
- // img.style.transform = "scaleY(-1)";
|
|
|
|
-
|
|
|
|
- return img;
|
|
|
|
- } */
|
|
|
|
|
|
+ renderer.readRenderTargetPixels(renderTarget, 0, 0, width, height, buffer);
|
|
|
|
+ var dataUrl = Potree.Utils.pixelsArrayToDataUrl(buffer, width, height, compressRatio)
|
|
|
|
+ return dataUrl
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
|
|
static pixelsArrayToDataUrl(pixels, width, height, compressRatio = 0.7) {
|
|
static pixelsArrayToDataUrl(pixels, width, height, compressRatio = 0.7) {
|
|
let canvas = document.createElement('canvas');
|
|
let canvas = document.createElement('canvas');
|
|
@@ -515,36 +529,7 @@ export class Utils {
|
|
return dataURL;
|
|
return dataURL;
|
|
}
|
|
}
|
|
|
|
|
|
- /* static pixelsArrayToCanvas(pixels, width, height){
|
|
|
|
- let canvas = document.createElement('canvas');
|
|
|
|
- canvas.width = width;
|
|
|
|
- canvas.height = height;
|
|
|
|
-
|
|
|
|
- let context = canvas.getContext('2d');
|
|
|
|
-
|
|
|
|
- pixels = new pixels.constructor(pixels);
|
|
|
|
-
|
|
|
|
- //for (let i = 0; i < pixels.length; i++) {
|
|
|
|
- // pixels[i * 4 + 3] = 255;
|
|
|
|
- //}
|
|
|
|
-
|
|
|
|
- // flip vertically
|
|
|
|
- let bytesPerLine = width * 4;
|
|
|
|
- for(let i = 0; i < parseInt(height / 2); i++){
|
|
|
|
- let j = height - i - 1;
|
|
|
|
-
|
|
|
|
- let lineI = pixels.slice(i * bytesPerLine, i * bytesPerLine + bytesPerLine);
|
|
|
|
- let lineJ = pixels.slice(j * bytesPerLine, j * bytesPerLine + bytesPerLine);
|
|
|
|
- pixels.set(lineJ, i * bytesPerLine);
|
|
|
|
- pixels.set(lineI, j * bytesPerLine);
|
|
|
|
- }
|
|
|
|
-
|
|
|
|
- let imageData = context.createImageData(width, height);
|
|
|
|
- imageData.data.set(pixels);
|
|
|
|
- context.putImageData(imageData, 0, 0);
|
|
|
|
-
|
|
|
|
- return canvas;
|
|
|
|
- } */
|
|
|
|
|
|
+
|
|
|
|
|
|
static removeListeners(dispatcher, type){
|
|
static removeListeners(dispatcher, type){
|
|
if (dispatcher._listeners === undefined) {
|
|
if (dispatcher._listeners === undefined) {
|