|
@@ -762,8 +762,7 @@
|
|
zoom:{
|
|
zoom:{
|
|
enabled : true,
|
|
enabled : true,
|
|
min:1,
|
|
min:1,
|
|
- max: config$1.highQualityMaxZoom,
|
|
|
|
- activationThreshold: 1.1,
|
|
|
|
|
|
+ max: config$1.highQualityMaxZoom
|
|
},
|
|
},
|
|
navConstantly:true,
|
|
navConstantly:true,
|
|
navTileClass: browser.isMobile() ? '1k' : '2k', //默认加载到
|
|
navTileClass: browser.isMobile() ? '1k' : '2k', //默认加载到
|
|
@@ -64997,11 +64996,12 @@ void main() {
|
|
|
|
|
|
const Buttons = {// MouseEvent.buttons
|
|
const Buttons = {// MouseEvent.buttons
|
|
//buttons,设置按下了鼠标哪些键,是一个3个比特位的二进制值,默认为0。1表示按下主键(通常是左键),2表示按下次要键(通常是右键),4表示按下辅助键(通常是中间的键)。
|
|
//buttons,设置按下了鼠标哪些键,是一个3个比特位的二进制值,默认为0。1表示按下主键(通常是左键),2表示按下次要键(通常是右键),4表示按下辅助键(通常是中间的键)。
|
|
- NONE:0,//add
|
|
|
|
-
|
|
|
|
|
|
+ NONE:0,//add
|
|
LEFT: 0b0001,
|
|
LEFT: 0b0001,
|
|
RIGHT: 0b0010,
|
|
RIGHT: 0b0010,
|
|
- MIDDLE: 0b0100
|
|
|
|
|
|
+ MIDDLE: 0b0100,
|
|
|
|
+ 'L+R': 0b0011
|
|
|
|
+
|
|
};
|
|
};
|
|
/* 如果访问的是button, 用THREE.MOUSE来判断:
|
|
/* 如果访问的是button, 用THREE.MOUSE来判断:
|
|
button,设置按下了哪一个鼠标按键,默认为0。-1表示没有按键,0表示按下主键(通常是左键),1表示按下辅助键(通常是中间的键),2表示按下次要键(通常是右键)
|
|
button,设置按下了哪一个鼠标按键,默认为0。-1表示没有按键,0表示按下主键(通常是左键),1表示按下辅助键(通常是中间的键),2表示按下次要键(通常是右键)
|
|
@@ -68253,7 +68253,7 @@ void main() {
|
|
this.nodeMaxLevel = level;
|
|
this.nodeMaxLevel = level;
|
|
//viewer.dispatchEvent({type:'updateNodeMaxLevel', pointcloud: this, nodeMaxLevel:level})
|
|
//viewer.dispatchEvent({type:'updateNodeMaxLevel', pointcloud: this, nodeMaxLevel:level})
|
|
|
|
|
|
- console.log('updateNodeMaxLevel ' + this.dataset_id + " : "+ this.nodeMaxLevel);
|
|
|
|
|
|
+ //console.log('updateNodeMaxLevel ' + this.dataset_id + " : "+ this.nodeMaxLevel)
|
|
|
|
|
|
this.setPointLevel();//重新计算
|
|
this.setPointLevel();//重新计算
|
|
|
|
|
|
@@ -84427,8 +84427,8 @@ void main() {
|
|
}
|
|
}
|
|
}else {
|
|
}else {
|
|
//mode = e.buttons === Buttons.LEFT && (!e.dragViewport || e.dragViewport.name == 'MainView') ? 'rotate' : 'pan'
|
|
//mode = e.buttons === Buttons.LEFT && (!e.dragViewport || e.dragViewport.name == 'MainView') ? 'rotate' : 'pan'
|
|
- mode = e.buttons === Buttons.LEFT && camera.type != 'OrthographicCamera' ? 'rotate' : 'pan';
|
|
|
|
- }
|
|
|
|
|
|
+ mode = (e.buttons === Buttons.LEFT || e.buttons === Buttons['L+R']) && camera.type != 'OrthographicCamera' ? 'rotate' : 'pan';
|
|
|
|
+ }//加'L+R'是因鼠标有时候出问题
|
|
//console.log('mode ', mode )
|
|
//console.log('mode ', mode )
|
|
let moveSpeed = this.currentViewport.getMoveSpeed();
|
|
let moveSpeed = this.currentViewport.getMoveSpeed();
|
|
if (e.drag.startHandled === undefined) {///???????
|
|
if (e.drag.startHandled === undefined) {///???????
|
|
@@ -85091,9 +85091,9 @@ void main() {
|
|
this.yawDelta = 0;
|
|
this.yawDelta = 0;
|
|
this.pitchDelta = 0;
|
|
this.pitchDelta = 0;
|
|
}
|
|
}
|
|
- if(this.translationWorldDelta.length()>0) {
|
|
|
|
|
|
+ /* if(this.translationWorldDelta.length()>0) {
|
|
// console.log('translationDelta')
|
|
// console.log('translationDelta')
|
|
- }
|
|
|
|
|
|
+ } */
|
|
|
|
|
|
{ // apply translation
|
|
{ // apply translation
|
|
view.translate(
|
|
view.translate(
|
|
@@ -86151,7 +86151,10 @@ void main() {
|
|
|
|
|
|
|
|
|
|
onMouseMove (e) {
|
|
onMouseMove (e) {
|
|
- return this.dealPointerMove( e )
|
|
|
|
|
|
+ /* if(e.buttons != 1&&e.buttons != 0){
|
|
|
|
+ console.log(e.buttons)
|
|
|
|
+ } */
|
|
|
|
+ return this.dealPointerMove( e )
|
|
}
|
|
}
|
|
|
|
|
|
dealPointerMove(e, isTouch){
|
|
dealPointerMove(e, isTouch){
|
|
@@ -88511,8 +88514,11 @@ void main() {
|
|
return this.getPanoSize(e)
|
|
return this.getPanoSize(e)
|
|
}
|
|
}
|
|
|
|
|
|
- detectMaxZoomPanoSize() {
|
|
|
|
- if(this.zoomLevelResolution){
|
|
|
|
|
|
+ detectMaxZoomPanoSize() { //获取当前zoomRenderTarget应下载的最高级别
|
|
|
|
+
|
|
|
|
+ //若是有三个级别,每次只需要加载到当前的zoomLevel;而两级时因为有zoomed来判断是使用基本贴图还是zoomRenderTarget,所以只需要返回最大的即可
|
|
|
|
+
|
|
|
|
+ if(this.zoomLevelResolution){//有三个级别
|
|
if(this.zoomLevelResolution == '4k' && this.useUltraHighResolutionPanos){
|
|
if(this.zoomLevelResolution == '4k' && this.useUltraHighResolutionPanos){
|
|
return this.getPanoSize(PanoSizeClass.ULTRAHIGH);
|
|
return this.getPanoSize(PanoSizeClass.ULTRAHIGH);
|
|
}else if(this.zoomLevelResolution == '1k' || !this.useHighResolutionPanos){
|
|
}else if(this.zoomLevelResolution == '1k' || !this.useHighResolutionPanos){
|
|
@@ -90323,7 +90329,7 @@ void main() {
|
|
r && this.deactiveDescripor(r.renderTarget);
|
|
r && this.deactiveDescripor(r.renderTarget);
|
|
r = this.activeDescripor(l);
|
|
r = this.activeDescripor(l);
|
|
if (!r) {
|
|
if (!r) {
|
|
- var ren = this.initTiledPano(l, true);
|
|
|
|
|
|
+ var ren = this.initTiledPano(l, !browser.isMobile());
|
|
r = this.initDescriptor(ren.width);
|
|
r = this.initDescriptor(ren.width);
|
|
r.renderTarget = ren;
|
|
r.renderTarget = ren;
|
|
}
|
|
}
|
|
@@ -90448,7 +90454,7 @@ void main() {
|
|
texture.minFilter = LinearFilter);
|
|
texture.minFilter = LinearFilter);
|
|
|
|
|
|
//平时还是直接用LinearMipMapLinearFilter,其实并非不清晰,只是没有加锐化,像加了层柔光和抗锯齿,观感更好。放大后使用LinearFilter
|
|
//平时还是直接用LinearMipMapLinearFilter,其实并非不清晰,只是没有加锐化,像加了层柔光和抗锯齿,观感更好。放大后使用LinearFilter
|
|
-
|
|
|
|
|
|
+ // 如果抗锯齿的话,采用mipmap,会增加一倍的存储消耗。原版本都是不抗锯齿的。但是抗锯齿效果更柔和
|
|
|
|
|
|
|
|
|
|
renderTarget.texture = texture; //居然漏了一句,2022.10.9补
|
|
renderTarget.texture = texture; //居然漏了一句,2022.10.9补
|
|
@@ -90931,7 +90937,7 @@ void main() {
|
|
if(targets[size]){
|
|
if(targets[size]){
|
|
this.zoomRenderTarget = targets[size];
|
|
this.zoomRenderTarget = targets[size];
|
|
}else {
|
|
}else {
|
|
- this.zoomRenderTarget = this.initTiledPano(size, false );
|
|
|
|
|
|
+ this.zoomRenderTarget = this.initTiledPano(size, false ); //放大后不使用抗锯齿,否则消
|
|
targets[size] = this.zoomRenderTarget;
|
|
targets[size] = this.zoomRenderTarget;
|
|
}
|
|
}
|
|
|
|
|
|
@@ -91959,7 +91965,8 @@ void main() {
|
|
|
|
|
|
|
|
|
|
if(config2.showSkybox || config2.pointUsePanoTex){
|
|
if(config2.showSkybox || config2.pointUsePanoTex){
|
|
- let wait = ()=> {
|
|
|
|
|
|
+ let wait = (e)=> {
|
|
|
|
+ if(e.pano && e.pano != this.currentPano)return//loadedDepthImg
|
|
setTimeout( ()=>{
|
|
setTimeout( ()=>{
|
|
if(latestRequestMode == mode ){
|
|
if(latestRequestMode == mode ){
|
|
Potree.settings.displayMode = mode;
|
|
Potree.settings.displayMode = mode;
|
|
@@ -92309,7 +92316,7 @@ void main() {
|
|
this.dispatchEvent({type:'flyToPano', toPano});
|
|
this.dispatchEvent({type:'flyToPano', toPano});
|
|
return done(true);
|
|
return done(true);
|
|
}
|
|
}
|
|
- if(this.latestToPano && this.latestToPano != toPano){
|
|
|
|
|
|
+ if(this.latestToPano && this.latestToPano != toPano){//还在飞
|
|
return done(false)
|
|
return done(false)
|
|
}
|
|
}
|
|
|
|
|
|
@@ -92335,7 +92342,8 @@ void main() {
|
|
|
|
|
|
{//不飞的话是否不要执行这段?
|
|
{//不飞的话是否不要执行这段?
|
|
|
|
|
|
- let wait = ()=> {
|
|
|
|
|
|
+ let wait = (e)=> {
|
|
|
|
+ if(e.pano && this.latestToPano && e.pano != this.latestToPano.pano)return//loadedDepthImg
|
|
if(this.latestToPano != toPano)return Potree.Log('已经取消')//如果取消了
|
|
if(this.latestToPano != toPano)return Potree.Log('已经取消')//如果取消了
|
|
setTimeout(()=>{
|
|
setTimeout(()=>{
|
|
if(this.latestToPano != toPano)return
|
|
if(this.latestToPano != toPano)return
|
|
@@ -93376,7 +93384,7 @@ void main() {
|
|
});
|
|
});
|
|
|
|
|
|
//剔除那些突然间离相机很近的dir。有可能是拍摄的人、或者杆子、树
|
|
//剔除那些突然间离相机很近的dir。有可能是拍摄的人、或者杆子、树
|
|
- const maxRatio = 8;
|
|
|
|
|
|
+
|
|
/* dirs2.forEach((e,i)=>{
|
|
/* dirs2.forEach((e,i)=>{
|
|
console.log(i, e.dis)
|
|
console.log(i, e.dis)
|
|
let smallThanBefore = ()=>{
|
|
let smallThanBefore = ()=>{
|
|
@@ -93398,6 +93406,7 @@ void main() {
|
|
}
|
|
}
|
|
|
|
|
|
}) */
|
|
}) */
|
|
|
|
+ const maxRatio1 = 3 , maxRatio2 = 8; //超过maxRatio1就要加入判断,而最终结果的设限其实是maxRatio2
|
|
const minWidth = 0.5;
|
|
const minWidth = 0.5;
|
|
let computeWidth = (start,end)=>{
|
|
let computeWidth = (start,end)=>{
|
|
start+=1; //不包含start和end
|
|
start+=1; //不包含start和end
|
|
@@ -93415,21 +93424,28 @@ void main() {
|
|
start+=1; //不包含start和end
|
|
start+=1; //不包含start和end
|
|
for(let m=start;m<end;m++){
|
|
for(let m=start;m<end;m++){
|
|
dirs2[m].disB = dirs2[end].dis * 0.8;
|
|
dirs2[m].disB = dirs2[end].dis * 0.8;
|
|
- console.log('changeDis', m, dirs2[m].disB);
|
|
|
|
|
|
+ //console.log('changeDis', m, dirs2[m].disB)
|
|
}
|
|
}
|
|
};
|
|
};
|
|
let start = -1;
|
|
let start = -1;
|
|
for(let i=0;i<count1;i++){//遍历时将左边dis比之小很多且宽度较小的改大
|
|
for(let i=0;i<count1;i++){//遍历时将左边dis比之小很多且宽度较小的改大
|
|
//console.log(i, dirs2[i].dis)
|
|
//console.log(i, dirs2[i].dis)
|
|
let j = i-1;
|
|
let j = i-1;
|
|
- while(j>start && dirs2[i].dis / dirs2[j].dis > maxRatio){
|
|
|
|
- j--;
|
|
|
|
- }
|
|
|
|
- let count = i-j;
|
|
|
|
- if(count > 1 && (count == 2 || computeWidth(j,i)<minWidth)){//若只有一个不用判断宽度直接修改,count == 2 即只有一个
|
|
|
|
|
|
+ let ratios = 0;
|
|
|
|
+ while(j>start && dirs2[i].dis / dirs2[j].dis > maxRatio1){
|
|
|
|
+ ratios += dirs2[i].dis / dirs2[j].dis;
|
|
|
|
+ j--;
|
|
|
|
+ }
|
|
|
|
+ let count = i-j-1;
|
|
|
|
+ ratios /= count;
|
|
|
|
+ if(count > 0 && computeWidth(j,i)< minWidth * ratios / maxRatio2 ){
|
|
changeDis(j,i);
|
|
changeDis(j,i);
|
|
start = i; //在此之前的修改过,之后不用再判断
|
|
start = i; //在此之前的修改过,之后不用再判断
|
|
}
|
|
}
|
|
|
|
+ /* if(count > 0 && (count == 1 || computeWidth(j,i)<minWidth)){//若只有一个不用判断宽度直接修改
|
|
|
|
+ changeDis(j,i)
|
|
|
|
+ start = i //在此之前的修改过,之后不用再判断
|
|
|
|
+ } */
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
@@ -94274,50 +94290,34 @@ void main() {
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
- /* zoomDefault{
|
|
|
|
- this.zoomTo(1, !0)
|
|
|
|
- }
|
|
|
|
- smoothZoomToDefault(e, t) {
|
|
|
|
- var i, n = this.zoomLevel,
|
|
|
|
- r = function(e) {
|
|
|
|
- e > 1 && (e = 1),
|
|
|
|
- i = n * (1 - e) + e,
|
|
|
|
- this.zoomTo(i, !0)
|
|
|
|
- }
|
|
|
|
- .bind(this),
|
|
|
|
- o = function() {
|
|
|
|
- this.zoomDefault(),
|
|
|
|
- t && window.setTimeout(t, 50)
|
|
|
|
- }
|
|
|
|
- .bind(this);
|
|
|
|
- transitions.start(r, e, o, null, 0, easing[settings.transition.blendEasing])
|
|
|
|
- } */
|
|
|
|
-
|
|
|
|
|
|
+
|
|
|
|
|
|
|
|
|
|
updateZoomPano() {
|
|
updateZoomPano() {
|
|
if (!this.panoRenderer.zoomPanoRenderingDisabled && Potree.settings.displayMode == 'showPanos') {
|
|
if (!this.panoRenderer.zoomPanoRenderingDisabled && Potree.settings.displayMode == 'showPanos') {
|
|
var currentPano = this.currentPano;
|
|
var currentPano = this.currentPano;
|
|
if (currentPano) {
|
|
if (currentPano) {
|
|
- var activationThreshold = Potree.settings.navTileClass == '2k' && Potree.settings.tileClass == '4k' ? 1.7 : Potree.settings.zoom.activationThreshold;//1.1
|
|
|
|
- var t = this.zoomLevel > activationThreshold,
|
|
|
|
|
|
+
|
|
|
|
+ let levelThreshold1 = Potree.settings.navTileClass == '1k' ? 1.3 : 1.7 , levelThreshold2 = 2;
|
|
|
|
+
|
|
|
|
+ var t = this.zoomLevel > levelThreshold1,
|
|
n = !(this.flying && this.nextPano && this.nextPano !== this.currentPano),
|
|
n = !(this.flying && this.nextPano && this.nextPano !== this.currentPano),
|
|
r = t && n;
|
|
r = t && n;
|
|
this.tileDownloader.tilePrioritizer.setZoomingActive(r);
|
|
this.tileDownloader.tilePrioritizer.setZoomingActive(r);
|
|
this.panoRenderer.setZoomingActive(r, currentPano, !0);
|
|
this.panoRenderer.setZoomingActive(r, currentPano, !0);
|
|
|
|
|
|
- var o = (pano, zoomedFlag)=>{
|
|
|
|
|
|
+ var o = (pano, ifZoom)=>{
|
|
this.panoRenderer.resetRenderStatus(pano.id, !1, !0, this.qualityManager.getMaxNavPanoSize());
|
|
this.panoRenderer.resetRenderStatus(pano.id, !1, !0, this.qualityManager.getMaxNavPanoSize());
|
|
this.panoRenderer.clearAllQueuedUploadsForPano(pano.id);
|
|
this.panoRenderer.clearAllQueuedUploadsForPano(pano.id);
|
|
this.panoRenderer.renderPanoTiles(pano.id, null, !1, !1);
|
|
this.panoRenderer.renderPanoTiles(pano.id, null, !1, !1);
|
|
- pano.setZoomed(zoomedFlag);
|
|
|
|
|
|
+ pano.setZoomed(ifZoom);
|
|
};
|
|
};
|
|
|
|
|
|
|
|
|
|
- if (r && (!currentPano.zoomed || this.qualityManager.zoomLevelResolution && this.qualityManager.zoomLevelResolution != '4k')) {
|
|
|
|
|
|
+ if (r && (!currentPano.zoomed || this.qualityManager.zoomLevelResolution && this.qualityManager.zoomLevelResolution != '4k')) {//needZoom
|
|
currentPano.zoomed || o(currentPano, !0);
|
|
currentPano.zoomed || o(currentPano, !0);
|
|
|
|
|
|
- if(Potree.settings.navTileClass == '1k' && Potree.settings.tileClass != '1k' && this.zoomLevel < 2){
|
|
|
|
|
|
+ if(Potree.settings.navTileClass == '1k' && Potree.settings.tileClass != '1k' && this.zoomLevel < levelThreshold2){
|
|
this.panoRenderer.enableHighQuality( function() {//开启2k
|
|
this.panoRenderer.enableHighQuality( function() {//开启2k
|
|
if(Potree.settings.tileClass != '4k') o(currentPano, !0);
|
|
if(Potree.settings.tileClass != '4k') o(currentPano, !0);
|
|
}.bind(this));
|
|
}.bind(this));
|
|
@@ -94333,23 +94333,23 @@ void main() {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
- if(r && Potree.settings.navTileClass == '1k' && Potree.settings.tileClass == '4k' ){ //目前只有手机端navTileClass == '1k'
|
|
|
|
|
|
+ if(r && Potree.settings.navTileClass == '1k' && Potree.settings.tileClass == '4k' ){ //目前只有手机端navTileClass == '1k' (分三个梯度)
|
|
var change = (zoomedFlag)=>{
|
|
var change = (zoomedFlag)=>{
|
|
this.qualityManager.updateMaximums();//更新maxZoomPanoSize
|
|
this.qualityManager.updateMaximums();//更新maxZoomPanoSize
|
|
this.panoRenderer.setupZoomRenderTarget(); //更新renderTarget
|
|
this.panoRenderer.setupZoomRenderTarget(); //更新renderTarget
|
|
//currentPano.setZoomed(t);//更新uniforms贴图
|
|
//currentPano.setZoomed(t);//更新uniforms贴图
|
|
};
|
|
};
|
|
- this.qualityManager.zoomLevelResolution = this.zoomLevel >= 2 ? '4k' : this.zoomLevel > 1.1 ? '2k' : '1k';
|
|
|
|
|
|
+ this.qualityManager.zoomLevelResolution = this.zoomLevel >= levelThreshold2 ? '4k' : this.zoomLevel > levelThreshold1 ? '2k' : '1k';
|
|
|
|
|
|
- if(this.oldZoomLevel < 2 && this.zoomLevel >= 2){//1k/2k-4k
|
|
|
|
|
|
+ if(this.oldZoomLevel < levelThreshold2 && this.zoomLevel >= levelThreshold2){//1k/2k-4k
|
|
change();
|
|
change();
|
|
o(currentPano, t);
|
|
o(currentPano, t);
|
|
- }else if(this.oldZoomLevel <= Potree.settings.zoom.activationThreshold && this.zoomLevel > Potree.settings.zoom.activationThreshold){//1k-2k
|
|
|
|
|
|
+ }else if(this.oldZoomLevel <= levelThreshold1 && this.zoomLevel > levelThreshold1){//1k-2k
|
|
change();
|
|
change();
|
|
- }else if(this.oldZoomLevel > 2 && this.zoomLevel <= 2){//4k-2k/1k
|
|
|
|
|
|
+ }else if(this.oldZoomLevel > levelThreshold2 && this.zoomLevel <= levelThreshold2){//4k-2k/1k
|
|
change();
|
|
change();
|
|
o(currentPano, t);
|
|
o(currentPano, t);
|
|
- }else if(this.oldZoomLevel > Potree.settings.zoom.activationThreshold && this.zoomLevel <= Potree.settings.zoom.activationThreshold){//2k-1k
|
|
|
|
|
|
+ }else if(this.oldZoomLevel > levelThreshold1 && this.zoomLevel <= levelThreshold1){//2k-1k
|
|
change();
|
|
change();
|
|
}
|
|
}
|
|
this.oldZoomLevel = this.zoomLevel;
|
|
this.oldZoomLevel = this.zoomLevel;
|
|
@@ -94387,7 +94387,7 @@ void main() {
|
|
|
|
|
|
if(Potree.settings.isTest){
|
|
if(Potree.settings.isTest){
|
|
var colorHue = Math.random();
|
|
var colorHue = Math.random();
|
|
- tile.material.color = (new Color()).setHSL(colorHue, 0.5, 0.9);
|
|
|
|
|
|
+ tile.material.color = (new Color()).setHSL(colorHue, 0.6, 0.7);
|
|
}
|
|
}
|
|
|
|
|
|
tile.visible = false;
|
|
tile.visible = false;
|
|
@@ -94428,7 +94428,11 @@ void main() {
|
|
cube.name = 'highMapCube';
|
|
cube.name = 'highMapCube';
|
|
this.highMapCube = cube;
|
|
this.highMapCube = cube;
|
|
viewer.scene.scene.add(cube);
|
|
viewer.scene.scene.add(cube);
|
|
- //cube.scale.set(0.01,0.01,0.01)
|
|
|
|
|
|
+
|
|
|
|
+ {
|
|
|
|
+ let s = 0.1;
|
|
|
|
+ cube.scale.set(s,s,s);
|
|
|
|
+ }//注:由于原本的mesh上加了深度贴图,可能距离镜头比这里的近。凡是在cube以内的部分都会挡住cube导致模糊。但是应该不常见吧。
|
|
|
|
|
|
this.highMapCube.visible = false;
|
|
this.highMapCube.visible = false;
|
|
viewer.setObjectLayers(this.highMapCube, 'sceneObjects'/* 'skybox' */); //如果是skybox层,点云可见时会被遮住,depthTest为false呢? 但不会遮住场景物体
|
|
viewer.setObjectLayers(this.highMapCube, 'sceneObjects'/* 'skybox' */); //如果是skybox层,点云可见时会被遮住,depthTest为false呢? 但不会遮住场景物体
|
|
@@ -94505,6 +94509,7 @@ void main() {
|
|
if(!this.highMapCube) return
|
|
if(!this.highMapCube) return
|
|
//console.warn('showHighMap')
|
|
//console.warn('showHighMap')
|
|
this.highMapCube.visible = true;
|
|
this.highMapCube.visible = true;
|
|
|
|
+
|
|
}
|
|
}
|
|
hideHighMap(){
|
|
hideHighMap(){
|
|
if(!this.highMapCube) return
|
|
if(!this.highMapCube) return
|
|
@@ -94527,10 +94532,7 @@ void main() {
|
|
//}
|
|
//}
|
|
let pano = new Panorama( info, this );
|
|
let pano = new Panorama( info, this );
|
|
|
|
|
|
- /* pano.mesh.layers.set(Potree.config.renderLayers.marker)
|
|
|
|
- pano.marker.layers.set(Potree.config.renderLayers.marker) */
|
|
|
|
-
|
|
|
|
-
|
|
|
|
|
|
+
|
|
pano.addEventListener('dispose',(e)=>{
|
|
pano.addEventListener('dispose',(e)=>{
|
|
if(this.closestPano == pano) this.closestPano = null;
|
|
if(this.closestPano == pano) this.closestPano = null;
|
|
});
|
|
});
|
|
@@ -94556,29 +94558,12 @@ void main() {
|
|
|
|
|
|
this.tileDownloader.setPanoData(this.panos, [] /* , Potree.settings.number */);
|
|
this.tileDownloader.setPanoData(this.panos, [] /* , Potree.settings.number */);
|
|
|
|
|
|
- {
|
|
|
|
- /* var panosBound = new THREE.Box3
|
|
|
|
- this.panos.forEach(pano=>{
|
|
|
|
- panosBound.expandByPoint(pano.position)
|
|
|
|
- })
|
|
|
|
- let center = panosBound.getCenter(new THREE.Vector3)
|
|
|
|
- let minBound = (new THREE.Box3()).setFromCenterAndSize(center, new THREE.Vector3(1,1,1))
|
|
|
|
- panosBound.union(minBound)
|
|
|
|
-
|
|
|
|
- this.bound = {
|
|
|
|
- bounding:panosBound,
|
|
|
|
- size: panosBound.getSize(new THREE.Vector3),
|
|
|
|
- center,
|
|
|
|
- } */
|
|
|
|
-
|
|
|
|
|
|
+ {
|
|
let minSize = new Vector3(1,1,1);
|
|
let minSize = new Vector3(1,1,1);
|
|
this.bound = math.getBoundByPoints(this.panos.map(e=>e.position), minSize);
|
|
this.bound = math.getBoundByPoints(this.panos.map(e=>e.position), minSize);
|
|
-
|
|
|
|
-
|
|
|
|
|
|
+
|
|
viewer.scene.pointclouds.forEach(pointcloud=>pointcloud.getPanosBound());
|
|
viewer.scene.pointclouds.forEach(pointcloud=>pointcloud.getPanosBound());
|
|
-
|
|
|
|
|
|
|
|
-
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
@@ -94656,7 +94641,7 @@ void main() {
|
|
throw msg;
|
|
throw msg;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- }();
|
|
|
|
|
|
+ }();//加载全景图的流程:请求下载当前点的最低分辨率图(不过有可能已经下载了),并且请求uploadTile渲染当前漫游点,若tile都upload完(先6个)会发送消息,LoadComplete 从而回调成功。
|
|
|
|
|
|
|
|
|
|
|
|
|