|
@@ -57957,7 +57957,7 @@
|
|
|
this.events = {
|
|
|
setSize:(e)=>{//如果出现横条状的异常,往往是viewportOffset出错 //地图不需要
|
|
|
let viewport = e.viewport;
|
|
|
- this.uniforms.resolution.value.copy(viewport.resolution);
|
|
|
+ this.uniforms.resolution.value.copy(viewport.resolution2);
|
|
|
this.uniforms.devicePixelRatio.value = window.devicePixelRatio;
|
|
|
this.lineWidth = this.lineWidth_; //update
|
|
|
if(!this.useDepth /* || !e.viewport.camera.isPerspectiveCamera */|| !e.viewport)return
|
|
@@ -70858,14 +70858,14 @@ void main()
|
|
|
});
|
|
|
|
|
|
|
|
|
-
|
|
|
+
|
|
|
this.events = {
|
|
|
setSize:(e)=>{//如果出现横条状的异常,往往是viewportOffset出错 //地图不需要
|
|
|
if(!this.useDepth /* || !e.viewport.camera.isPerspectiveCamera */|| !e.viewport)return
|
|
|
let viewport = e.viewport;
|
|
|
let viewportOffset = viewport.offset || new Vector2();
|
|
|
|
|
|
- this.uniforms.resolution.value.copy(viewport.resolution);
|
|
|
+ this.uniforms.resolution.value.copy(viewport.resolution2); //2023.6.12突然发现ratio>1的用resolution不对,得用2才对。但是之前明明记得不是这样
|
|
|
this.uniforms.viewportOffset.value.copy(viewportOffset);
|
|
|
},
|
|
|
render:(e)=>{//before render 如果有大于两个viewport的话,不同viewport用不同的depthTex
|
|
@@ -71069,11 +71069,18 @@ void main()
|
|
|
}
|
|
|
|
|
|
realVisible(){
|
|
|
+
|
|
|
+ if(!this.visible && this.unvisibleReasons && this.unvisibleReasons.some(e=>e != 'unableCompute')){
|
|
|
+ return false
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
let v = true;
|
|
|
- let parent = this;
|
|
|
- let lastParent;
|
|
|
+ let parent = this.parent;
|
|
|
+ let lastParent = this;
|
|
|
+
|
|
|
while(parent){
|
|
|
- if(parent.visible === false){
|
|
|
+ if(parent.visible === false ){
|
|
|
v = false;
|
|
|
break;
|
|
|
}
|
|
@@ -71125,7 +71132,7 @@ void main()
|
|
|
|
|
|
|
|
|
let r1 = Potree.Utils.getPos2d(center, camera, viewer.renderArea, e.viewport);
|
|
|
- if(!r1.trueSide)return //Potree.Utils.updateVisible(this, 'notTrueSide', false); 但这句会使realVisible为false从而无法更新//console.error('!r1.trueSide') //中心点如果在背面直接不渲染了
|
|
|
+ if(!r1.trueSide)return Potree.Utils.updateVisible(this, 'unableCompute', false);// 但这句会使realVisible为false从而无法更新//console.error('!r1.trueSide') //中心点如果在背面直接不渲染了
|
|
|
|
|
|
let r2, point2;
|
|
|
|
|
@@ -71144,6 +71151,12 @@ void main()
|
|
|
}
|
|
|
}else {
|
|
|
let dis = r2.pos.distanceTo(r1.pos);
|
|
|
+ if(dis == 0){
|
|
|
+ //console.log('dis == 0')
|
|
|
+ Potree.Utils.updateVisible(this, 'unableCompute', false);
|
|
|
+ return
|
|
|
+ break
|
|
|
+ }
|
|
|
if(dis<10 && !p2StateHistory.includes('tooLong')){//和r1的屏幕距离太近,要加长,否则精度过低
|
|
|
p2State = 'tooShort';
|
|
|
len = 100/dis * len;
|
|
@@ -71156,7 +71169,7 @@ void main()
|
|
|
//console.log(p2StateHistory,len)
|
|
|
|
|
|
if(!r2.trueSide){
|
|
|
- return //Potree.Utils.updateVisible(this, 'notTrueSide', false), console.log(' !r2.trueSide', )
|
|
|
+ return Potree.Utils.updateVisible(this, 'unableCompute', false)//, console.log(' !r2.trueSide', )
|
|
|
}
|
|
|
//Potree.Utils.updateVisible(this, 'notTrueSide', true)
|
|
|
|
|
@@ -95770,6 +95783,7 @@ ENDSEC
|
|
|
}else{ */
|
|
|
gl_FragDepthEXT = mix(depth0.y,depth1.y,progress);
|
|
|
//}
|
|
|
+ gl_FragDepthEXT = min(1.0, gl_FragDepthEXT); //防止部分手机出现黑块。ios 16 。 因为我给的超远值超出范围
|
|
|
|
|
|
|
|
|
|