|
@@ -73160,6 +73160,8 @@ void main()
|
|
visiMap.set(e,e.visible);
|
|
visiMap.set(e,e.visible);
|
|
e.visible = Potree.Utils.getObjVisiByReason(e, 'datasetSelection'); //先将隐藏的点云显示
|
|
e.visible = Potree.Utils.getObjVisiByReason(e, 'datasetSelection'); //先将隐藏的点云显示
|
|
if(!e.visible)return
|
|
if(!e.visible)return
|
|
|
|
+
|
|
|
|
+
|
|
size.set(e, e.temp.pointSize);
|
|
size.set(e, e.temp.pointSize);
|
|
sizeType = e.material.pointSizeType;
|
|
sizeType = e.material.pointSizeType;
|
|
e.material.pointSizeType = Potree.config.material.pointSizeType;
|
|
e.material.pointSizeType = Potree.config.material.pointSizeType;
|
|
@@ -73916,7 +73918,7 @@ void main()
|
|
priorityQueue.push({pointcloud: i, node: pointcloud.root, weight: Number.MAX_VALUE});
|
|
priorityQueue.push({pointcloud: i, node: pointcloud.root, weight: Number.MAX_VALUE});
|
|
} */
|
|
} */
|
|
|
|
|
|
- if (pointcloud.visible || !pointcloud.hasDepthTex && pointcloud.unvisibleReasons && pointcloud.unvisibleReasons.length == 1 && pointcloud.unvisibleReasons[0].reason == 'displayMode' && pointcloud.root !== null) {//改 visible ->
|
|
|
|
|
|
+ if (pointcloud.visible || /* !pointcloud.hasDepthTex && */ pointcloud.unvisibleReasons && pointcloud.unvisibleReasons.length == 1 && pointcloud.unvisibleReasons[0].reason == 'displayMode' && pointcloud.root !== null) {//改 visible ->
|
|
priorityQueue.push({pointcloud: i, node: pointcloud.root, weight: Number.MAX_VALUE});
|
|
priorityQueue.push({pointcloud: i, node: pointcloud.root, weight: Number.MAX_VALUE});
|
|
}else {
|
|
}else {
|
|
continue
|
|
continue
|
|
@@ -74014,7 +74016,7 @@ void main()
|
|
let pointcloudTransformVersion = Potree._pointcloudTransformVersion;
|
|
let pointcloudTransformVersion = Potree._pointcloudTransformVersion;
|
|
for(let pointcloud of pointclouds){
|
|
for(let pointcloud of pointclouds){
|
|
|
|
|
|
- if(pointcloud.hasDepthTex ? !pointcloud.visible : !Potree.Utils.getObjVisiByReason(pointcloud, 'datasetSelection')){//改 visible ->
|
|
|
|
|
|
+ if(/* pointcloud.hasDepthTex ? !pointcloud.visible : */ !Potree.Utils.getObjVisiByReason(pointcloud, 'datasetSelection')){//改 visible -> 这一版的深度图不准,就只用在贴图里,pick时需要点云,所以要一直有, 否则但pick时显示的话visibleNodes只能加载出一点点
|
|
continue;
|
|
continue;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -82494,13 +82496,12 @@ void main()
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
- focus(){
|
|
|
|
-
|
|
|
|
|
|
+ focus({dontMoveCamera=false}={}){
|
|
|
|
|
|
- let dontChangeCamDir = viewer.mainViewport.camera.type == 'OrthographicCamera'; /* && math.closeTo( viewer.mainViewport.view.pitch , -1.57079632) */ // 不改角度
|
|
|
|
-
|
|
|
|
- viewer.focusOnObject(this, 'measure', null, {dontChangeCamDir});
|
|
|
|
-
|
|
|
|
|
|
+ if(!dontMoveCamera){
|
|
|
|
+ let dontChangeCamDir = viewer.mainViewport.camera.type == 'OrthographicCamera'; /* && math.closeTo( viewer.mainViewport.view.pitch , -1.57079632) */ // 不改角度
|
|
|
|
+ viewer.focusOnObject(this, 'measure', null, {dontChangeCamDir});
|
|
|
|
+ }
|
|
if(this.clickSelected)return
|
|
if(this.clickSelected)return
|
|
this.setSelected(true, 'focus');
|
|
this.setSelected(true, 'focus');
|
|
this.dispatchEvent({type:'selected', state:true});
|
|
this.dispatchEvent({type:'selected', state:true});
|
|
@@ -83730,10 +83731,14 @@ void main()
|
|
|
|
|
|
if(ifAtWrongPlace(e))return
|
|
if(ifAtWrongPlace(e))return
|
|
if(e.clickElement || e.drag.object)return //如点击label时focusOnObject, 或拖拽marker
|
|
if(e.clickElement || e.drag.object)return //如点击label时focusOnObject, 或拖拽marker
|
|
-
|
|
|
|
-
|
|
|
|
|
|
+
|
|
if(e.button === MOUSE.RIGHT )return
|
|
if(e.button === MOUSE.RIGHT )return
|
|
|
|
|
|
|
|
+
|
|
|
|
+ if(e.type == 'global_touchstart' && e.hoveredElement && e.hoveredElement.object.parent instanceof Measure$1 ){
|
|
|
|
+ return //点到测量线时要focus测量线而不是画新线
|
|
|
|
+ }
|
|
|
|
+
|
|
if(isMobile){
|
|
if(isMobile){
|
|
viewer.controls.setEnable(false);
|
|
viewer.controls.setEnable(false);
|
|
}
|
|
}
|
|
@@ -89837,16 +89842,16 @@ void main()
|
|
&& viewer.images360.currentPano.pointcloud.hasDepthTex && viewport == viewer.mainViewport && !usePointcloud;
|
|
&& viewer.images360.currentPano.pointcloud.hasDepthTex && viewport == viewer.mainViewport && !usePointcloud;
|
|
|
|
|
|
|
|
|
|
- if(canUseDepthTex)getByDepthTex();
|
|
|
|
- else getByCloud();
|
|
|
|
- /* if(canUseDepthTex && !this.isMeasuring){
|
|
|
|
- getByDepthTex()
|
|
|
|
- }else{
|
|
|
|
- getByCloud()
|
|
|
|
|
|
+ /* if(canUseDepthTex)getByDepthTex()
|
|
|
|
+ else getByCloud() */
|
|
|
|
+ if(canUseDepthTex && !this.isMeasuring){
|
|
|
|
+ getByDepthTex();
|
|
|
|
+ }else {
|
|
|
|
+ getByCloud();
|
|
if(!intersectPoint && canUseDepthTex ){ //若在测量,先尝试点云,再用全景 //后来发现有深度图的点云全景visibleNode为空,pick不到的
|
|
if(!intersectPoint && canUseDepthTex ){ //若在测量,先尝试点云,再用全景 //后来发现有深度图的点云全景visibleNode为空,pick不到的
|
|
- getByDepthTex()
|
|
|
|
|
|
+ getByDepthTex();
|
|
}
|
|
}
|
|
- } */
|
|
|
|
|
|
+ }
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@@ -91857,10 +91862,11 @@ void main()
|
|
|
|
|
|
|
|
|
|
viewer.images360.addEventListener('beginChangeMode',(e)=>{
|
|
viewer.images360.addEventListener('beginChangeMode',(e)=>{
|
|
- if(e.mode == 'showPanos')this.switchView('perspective',{}, ()=>{
|
|
|
|
|
|
+ if(e.mode == 'showPanos'){
|
|
|
|
+ this.switchView('perspective',{}, ()=>{
|
|
Potree.settings.displayMode = viewer.images360.latestRequestMode;
|
|
Potree.settings.displayMode = viewer.images360.latestRequestMode;
|
|
- });
|
|
|
|
-
|
|
|
|
|
|
+ });
|
|
|
|
+ }
|
|
});
|
|
});
|
|
|
|
|
|
|
|
|
|
@@ -91920,6 +91926,7 @@ void main()
|
|
switchView(type, {yaw, pitch, dir}={}, done){
|
|
switchView(type, {yaw, pitch, dir}={}, done){
|
|
if(viewer.mainViewport.view.isFlying())return
|
|
if(viewer.mainViewport.view.isFlying())return
|
|
let view = viewer.mainViewport.view;
|
|
let view = viewer.mainViewport.view;
|
|
|
|
+ let oldlastView = this.lastView;
|
|
this.lastView = view.clone();
|
|
this.lastView = view.clone();
|
|
if(viewer.mainViewport.camera.type == 'OrthographicCamera'){
|
|
if(viewer.mainViewport.camera.type == 'OrthographicCamera'){
|
|
this.lastView.isOrtho = true;
|
|
this.lastView.isOrtho = true;
|
|
@@ -91962,6 +91969,12 @@ void main()
|
|
}else {
|
|
}else {
|
|
|
|
|
|
if(viewer.mainViewport.camera == viewer.scene.cameraO){
|
|
if(viewer.mainViewport.camera == viewer.scene.cameraO){
|
|
|
|
+
|
|
|
|
+ return this.switchView2(oldlastView, done)
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
//viewer.scene.cameraP.position.copy(viewer.mainViewport.camera.position)
|
|
//viewer.scene.cameraP.position.copy(viewer.mainViewport.camera.position)
|
|
//viewer.scene.cameraP.quaternion.copy(viewer.mainViewport.camera.quaternion)
|
|
//viewer.scene.cameraP.quaternion.copy(viewer.mainViewport.camera.quaternion)
|
|
viewer.mainViewport.camera = viewer.scene.cameraP;
|
|
viewer.mainViewport.camera = viewer.scene.cameraP;
|
|
@@ -91978,6 +91991,11 @@ void main()
|
|
|
|
|
|
let position = new Vector3().copy(viewer.mainViewport.shiftTarget).sub(view.direction.clone().multiplyScalar(dis));
|
|
let position = new Vector3().copy(viewer.mainViewport.shiftTarget).sub(view.direction.clone().multiplyScalar(dis));
|
|
//view.position.copy(viewer.mainViewport.shiftTarget).sub(view.direction.clone().multiplyScalar(dis));
|
|
//view.position.copy(viewer.mainViewport.shiftTarget).sub(view.direction.clone().multiplyScalar(dis));
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
this.controls.setEnable(true);
|
|
this.controls.setEnable(true);
|
|
//viewer.dispatchEvent('leaveTopView')
|
|
//viewer.dispatchEvent('leaveTopView')
|
|
console.log('变回透视');
|
|
console.log('变回透视');
|
|
@@ -91998,7 +92016,7 @@ void main()
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- switchView2(viewInfo){ //直接输入view改变
|
|
|
|
|
|
+ switchView2(viewInfo, done){ //直接输入view改变
|
|
|
|
|
|
let view = viewer.mainViewport.view;
|
|
let view = viewer.mainViewport.view;
|
|
let startCamera, endCamera;
|
|
let startCamera, endCamera;
|
|
@@ -92014,9 +92032,9 @@ void main()
|
|
view.moveOrthoCamera(viewer.mainViewport, {endPosition:viewInfo.position,
|
|
view.moveOrthoCamera(viewer.mainViewport, {endPosition:viewInfo.position,
|
|
endPitch: viewInfo.pitch, endYaw: viewInfo.yaw , zoom: viewInfo.zoom,
|
|
endPitch: viewInfo.pitch, endYaw: viewInfo.yaw , zoom: viewInfo.zoom,
|
|
callback:()=>{
|
|
callback:()=>{
|
|
-
|
|
|
|
|
|
+ done && done();
|
|
},
|
|
},
|
|
- }, 500);
|
|
|
|
|
|
+ }, 800);
|
|
}
|
|
}
|
|
}else {
|
|
}else {
|
|
if(viewer.mainViewport.camera == viewer.scene.cameraO){
|
|
if(viewer.mainViewport.camera == viewer.scene.cameraO){
|
|
@@ -92030,7 +92048,7 @@ void main()
|
|
callback:()=>{
|
|
callback:()=>{
|
|
|
|
|
|
},
|
|
},
|
|
- }, 500);
|
|
|
|
|
|
+ }, 800);
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
}
|
|
@@ -92051,8 +92069,9 @@ void main()
|
|
}else {
|
|
}else {
|
|
viewer.dispatchEvent({type:'viewChanged', name:'perspective' });
|
|
viewer.dispatchEvent({type:'viewChanged', name:'perspective' });
|
|
}
|
|
}
|
|
|
|
+ done && done();
|
|
},
|
|
},
|
|
- }, 500);
|
|
|
|
|
|
+ }, 800);
|
|
}
|
|
}
|
|
|
|
|
|
}
|
|
}
|