Browse Source

fix: 天空盒加好了

xzw 2 years ago
parent
commit
7e8574837c
4 changed files with 198 additions and 134 deletions
  1. 196 133
      public/lib/potree/potree.js
  2. 1 1
      public/lib/potree/potree.js.map
  3. 0 0
      src/assets/xingkong.jpg
  4. 1 0
      src/sdk/cover/index.js

+ 196 - 133
public/lib/potree/potree.js

@@ -68767,14 +68767,17 @@ void main()
 
 
 	Utils.loadSkybox = function(path, oldSky ) {
-	    let  camera, scene, parent; 
+	    let  camera, scene, parent , cameraOrtho;
 	    if(!oldSky){
 	        parent = new Object3D("skybox_root");
 
 	        camera = new PerspectiveCamera(75, window.innerWidth / window.innerHeight, 1, 100000);
+	        cameraOrtho = new OrthographicCamera(-1, 1, 1, -1, Potree.config.view.near, Potree.settings.cameraFar);
 	        if(!window.axisYup)  camera.up.set(0, 0, 1);//add
 	        scene = new Scene();
-	        let skyGeometry = new BoxGeometry(10000,10000,10000);//(500, 500, 500);
+	        
+	        let skyboxBgWidth = Potree.config.skyboxBgWidth;
+	        let skyGeometry = new BoxBufferGeometry(skyboxBgWidth,skyboxBgWidth,skyboxBgWidth); 
 	        let skybox = new Mesh(skyGeometry, new ShaderMaterial({
 	            vertexShader: Shaders['skybox.vs'],   
 	            fragmentShader: Shaders['skybox.fs'],  
@@ -68789,6 +68792,8 @@ void main()
 	                    value: new Matrix4
 	                } 
 	            },
+	            depthTest:false,
+	            depthWrite:false
 	        }) );
 
 	        scene.add(skybox);
@@ -68805,6 +68810,7 @@ void main()
 	        camera = oldSky.camera, 
 	        scene = oldSky.scene;
 	        parent = oldSky.parent;
+	        cameraOrtho = oldSky.cameraOrtho;
 	    }
 	    
 	    let texture = texLoader$1.load( path, ()=>{
@@ -68819,7 +68825,7 @@ void main()
 	    });
 	    
 
-	    return {camera, scene, parent};
+	    return {camera, scene, parent, cameraOrtho};
 	};
 
 	Utils.getMousePointCloudIntersection = function(viewport, mouse, pointer, camera, viewer, pointclouds, pickParams = {} ) {
@@ -71526,7 +71532,7 @@ void main()
 	        //navvis的shader在哪里 为什么不会抖动
 	    }
 	    ,
-	    skyboxWidth : 10000, 
+	    skyboxBgWidth : 100 , 
 	    
 	    renderLayers:{//渲染层,方便分批渲染管理,替代scene的创建。数字不代表顺序。(数字不能太大)
 	        bg: 20, 
@@ -114847,7 +114853,7 @@ ENDSEC
 	    viewContainsPoints:[new Vector3(0,0,0)],
 	    margin:{x:300, y:250} ,
 	} ];
-	 
+	let cylinderSkyGeo, oldSkyGeo;
 	 
 	 
 	let MergeEditor = {
@@ -114879,7 +114885,7 @@ ENDSEC
 	            //见笔记:透明物体的材质设置
 	        }
 	        
-	        
+	        let oriEdgeStrength = viewer.outlinePass.edgeStrength; 
 	        {
 	            
 	            this.transformControls = new TransformControls(viewer.mainViewport.camera, viewer.renderArea,{
@@ -114899,7 +114905,8 @@ ENDSEC
 	            this.transformControls.setSize(1.5);
 	            viewer.scene.scene.add(this.transformControls2); 
 	            viewer.setObjectLayers(this.transformControls2, 'layer2' );  
-	            
+	             
+	             
 	            let mouseDown = (e)=>{
 	                 
 	                viewer.outlinePass.edgeStrength = 0;//暂时消失线
@@ -114907,8 +114914,8 @@ ENDSEC
 	            };
 	            let mouseUp = (e)=>{
 	                 
-	                this.updateEdgeStrength();
-	                 
+	                //this.updateEdgeStrength()
+	                viewer.outlinePass.edgeStrength = oriEdgeStrength;
 	            };
 	            this.transformControls.addEventListener('mouseDown',mouseDown);
 	            this.transformControls2.addEventListener('mouseDown',mouseDown);
@@ -115068,12 +115075,18 @@ ENDSEC
 	                dragInfo = null;
 	                this.clearTranCursor();
 	                  
-	                this.updateEdgeStrength();
-	                  
+	                //this.updateEdgeStrength()
+	                viewer.outlinePass.edgeStrength = oriEdgeStrength;  
 	                
 	            });
 	        
 	        }
+	        
+	        
+	        /* viewer.addEventListener('background_changed',()=>{
+	          
+	        }) */
+	        
 	    },
 	    
 	    
@@ -115110,10 +115123,22 @@ ENDSEC
 	        
 	        
 	        viewer.setControls(viewer.fpControls);  
-	        viewer.viewports.find(e=>e.name == 'right').rotateSide = true; 
-	        viewer.viewports.find(e=>e.name == 'top').alignment = true;
-	       
 	         
+	        let rightViewport = viewer.viewports.find(e=>e.name == 'right');
+	        let topViewport = viewer.viewports.find(e=>e.name == 'top');
+	        topViewport.alignment = true;
+	        rightViewport.rotateSide = true;  
+	        rightViewport.skyboxFixPos = true;
+	        rightViewport.skyboxMinZoom = 10;
+	        rightViewport.skyboxRenderFun = ()=>{// 使cube的一面永远正向镜头。 因侧视图的camera是ortho类型,需要平视mesh才不会拉伸
+	            viewer.skybox.scene.children[0].rotation.copy(rightViewport.camera.rotation);
+	        };
+	        topViewport.skyboxRenderFun = ()=>{
+	            viewer.skybox.scene.children[0].rotation.set(0,0,0);
+	        };
+	         
+	        
+	        
 	        viewer.viewports[1].layersAdd('layer2'); 
 	        viewer.viewports[0].layersAdd('layer1'); 
 	        viewer.setObjectLayers(this.transformControls, 'layer1' ); 
@@ -115131,8 +115156,11 @@ ENDSEC
 	        viewer.compass.changeViewport(viewer.viewports[1]);
 	        viewer.compass.setDomPos();
 	        
+	        
+	        //this.changeSkyboxGeo(true)
 	    },
 	    
+	    
 	    leaveSplit(){
 	        this.split = false;
 	        this.SplitScreen.unSplit();    
@@ -115153,7 +115181,7 @@ ENDSEC
 	        viewer.compass.setDomPos();
 	        this.secondCompass.setDisplay(false);
 	        
-	         
+	        
 	    },
 	    
 	    rotateSideCamera(angle){
@@ -115164,6 +115192,9 @@ ENDSEC
 	        this.transformState = state;  
 	        this.clearTranCursor();       
 	    },
+	    
+	  
+	    
 	    //---------------------------
 	    
 	    /* writeToHistory(content){ 
@@ -115223,10 +115254,8 @@ ENDSEC
 	              
 	           
 	            this.showModelOutline(model);
-	            
-	            
-	            
-	            this.updateEdgeStrength();
+	             
+	            //this.updateEdgeStrength()
 	            
 	            //console.log('selectModel', model)
 	            
@@ -115273,15 +115302,14 @@ ENDSEC
 	        }
 	    },
 	    
-	    updateEdgeStrength(){
-	        if(!this.selected)return
-	        viewer.outlinePass.edgeStrength = 100;
-	        /* if(this.selected.isPointcloud){
+	    /*updateEdgeStrength(){
+	        if(!this.selected)return 
+	         if(this.selected.isPointcloud){
 	            viewer.outlinePass.edgeStrength = edgeStrengths.pointcloud// / this.selected.material.opacity  
 	        }else{
 	            viewer.outlinePass.edgeStrength = edgeStrengths.glb
-	        }  */ 
-	    },
+	        }  
+	    },*/ 
 	    focusOn(objects, duration = 400, fitBound=true, dontLookUp){  
 	        if(!(objects instanceof Array)){
 	            objects = [objects];
@@ -147492,7 +147520,7 @@ ENDSEC
 	            viewer.backgroundOpacity = 1;
 
 	            
-	            if(this.showHiddenPart){ 
+	            if(this.showHiddenPart){ //几乎不会使用
 	                viewports.forEach(e=>{ 
 	                    e.oldBeforeRender = e.beforeRender;
 	                    e.beforeRender = ()=>{ 
@@ -147526,63 +147554,67 @@ ENDSEC
 	                });
 	                
 	            }else {
+	                //不渲染背景 
 	                scenes.forEach(scene=>{
 	                    scene.currentBackground = scene.background;
 	                    scene.background = null; 
 	                });
 	            }
 	            
-	            
-
-	            // Make non selected objects invisible, and draw only the selected objects, by comparing the depth buffer of non selected objects
-	            this.changeVisibilityOfNonSelectedObjects( false , scenes);
-	            
-	            
-	            scenes.forEach(scene=>{ 
-	                scene.overrideMaterial = this.prepareMaskMaterial; 
-	            });
-	            
-	            if(this.showHiddenPart){ 
-	                this.prepareMaskMaterial.uniforms[ "depthTexture" ].value = this.renderTargetDepthBuffer.texture;
-	                this.prepareMaskMaterial.uniforms[ "textureMatrix" ].value = this.textureMatrix;
-	            }
-	             
 	            let colorType, colors = new Map() , opas = new Map();
-	            viewer.scene.pointclouds.forEach(e=>{  //先将点云透明度变为1,因为点云透明度莫名其妙会影响其r值//可能因为点云不受prepareMaskMaterial作用,渲染出的颜色各异
-	                colorType = e.material.activeAttributeName;
-	                e.material.activeAttributeName = 'color';
-	                
-	                colors.set(e, e.material.color);
-	                e.material.color = '#000000';
+	            {//绘制选中部分
+	                // Make non selected objects invisible, and draw only the selected objects, by comparing the depth buffer of non selected objects
+	                this.changeVisibilityOfNonSelectedObjects( false , scenes);
+	                 
+	                scenes.forEach(scene=>{ 
+	                    scene.overrideMaterial = this.prepareMaskMaterial; 
+	                });
 	                
-	                opas.set(e, e.material.opacity);
-	                e.material.opacity = 1; 
-	            });
+	                if(this.showHiddenPart){ 
+	                    this.prepareMaskMaterial.uniforms[ "depthTexture" ].value = this.renderTargetDepthBuffer.texture;
+	                    this.prepareMaskMaterial.uniforms[ "textureMatrix" ].value = this.textureMatrix;
+	                }
+	                  
+	                //因为点云不受prepareMaskMaterial作用,所以手动将他们变为黑色不透明 
+	                viewer.scene.pointclouds.forEach(e=>{  //先将点云透明度变为1,因为点云透明度莫名其妙会影响其r值//
+	                    colorType = e.material.activeAttributeName;
+	                    e.material.activeAttributeName = 'color';
+	                    
+	                    colors.set(e, e.material.color);
+	                    e.material.color = '#000000';
+	                    
+	                    opas.set(e, e.material.opacity);
+	                    e.material.opacity = 1; 
+	                });
+	            }
 	            
 	            render2(this.renderTargetMaskBuffer);
 	            
-	            viewer.scene.pointclouds.forEach(e=>{//恢复 
-	                e.material.activeAttributeName = colorType; 
-	                e.material.color = colors.get(e); 
-	                e.material.opacity = opas.get(e); 
-	            });
 	            
-	            if(this.showHiddenPart){
-	                viewports.forEach((e)=>{e.beforeRender = e.oldBeforeRender;});
+	            {//恢复 
+	                viewer.scene.pointclouds.forEach(e=>{
+	                    e.material.activeAttributeName = colorType; 
+	                    e.material.color = colors.get(e); 
+	                    e.material.opacity = opas.get(e); 
+	                });
+	                
+	                if(this.showHiddenPart){
+	                    viewports.forEach((e)=>{e.beforeRender = e.oldBeforeRender;});
+	                }
+	                
+	                scenes.forEach(scene=>{ 
+	                    scene.overrideMaterial = null;
+	                    scene.background = scene.currentBackground; 
+	                }); 
+	                viewer.background = oldBG;
+	                viewer.backgroundOpacity = oldBgOpacity;
+	                
+	                this.changeVisibilityOfNonSelectedObjects( true , scenes);
+	                
 	            }
-	            
-	            scenes.forEach(scene=>{ 
-	                scene.overrideMaterial = null;
-	                scene.background = scene.currentBackground; 
-	            }); 
-	        
-	        
-	             
-	            
-				this.changeVisibilityOfNonSelectedObjects( true , scenes);
-	            
-	            
 
+
+	            //检测边缘并绘制
 				// 3. Apply Edge Detection Pass
 				this.quad.material = this.edgeDetectionMaterial;
 				this.edgeDetectionMaterial.uniforms[ "maskTexture" ].value = this.renderTargetMaskBuffer.texture;//this.renderTargetMaskDownSampleBuffer.texture;
@@ -147594,21 +147626,15 @@ ENDSEC
 				this.edgeDetectionMaterial.uniforms[ "hiddenEdgeColor" ].value = this.hiddenEdgeColor; //this.tempPulseColor2;
 				
 	            
-	            if(!this.showHiddenPart){
-	                scenes.forEach(scene=>{  
-	                    scene.background = scene.currentBackground; 
-	                }); 
-	            }
-	            viewer.background = oldBG;
-	            viewer.backgroundOpacity = oldBgOpacity;
+	             
 	            
-	            let buffer = readBuffer;
+	            let buffer;
 	            if ( this.renderToScreen ) {
 	                this.quad.material.transparent = true;
 	                
 	                buffer = null; 
 	                renderer.setClearColor( this.oldClearColor, this.oldClearAlpha );  
-	                render2(null,false);
+	                render2(null,false); //普通绘制原场景
 	                
 	                //绘制到全屏
 	                let renderSize = renderer.getSize(new Vector2()); //是client大小
@@ -147616,37 +147642,17 @@ ENDSEC
 	                renderer.setScissorTest( false );
 	                  
 	            }else {
+	                buffer = readBuffer;
 	                renderer.setClearColor( 0x000000, 0 );
 	                renderer.clear();
 	            } 
-	            
-	         
-	            renderer.setRenderTarget(buffer ); 
-	            renderer.render( this.scene,  this.camera );
+	             
+	            renderer.setRenderTarget( buffer ); 
+	            renderer.render( this.scene,  this.camera );    //将边缘覆盖上去
 	           
-
-	            //这次删掉
-				/* // Blend it additively over the input texture
-				this.quad.material = this.overlayMaterial;
-				//this.overlayMaterial.uniforms[ "maskTexture" ].value = this.renderTargetMaskBuffer.texture;
-				this.overlayMaterial.uniforms[ "edgeTexture1" ].value = this.renderTargetEdgeBuffer1.texture;
-				//this.overlayMaterial.uniforms[ "edgeTexture2" ].value = this.renderTargetEdgeBuffer2.texture;
-				//this.overlayMaterial.uniforms[ "patternTexture" ].value = this.patternTexture;
-				this.overlayMaterial.uniforms[ "edgeStrength" ].value = this.edgeStrength;
-				//this.overlayMaterial.uniforms[ "edgeGlow" ].value = this.edgeGlow;
-				//this.overlayMaterial.uniforms[ "usePatternTexture" ].value = this.usePatternTexture;
 	           
-
-				if ( maskActive ) renderer.context.enable( renderer.context.STENCIL_TEST ); 
-				//renderer.render( this.scene,  camera, readBuffer, false );
-	            
-	            //改:清空readBuffer, 仅绘制出outline的部分 
-	            
-	            renderer.setClearColor( 0x000000, 0 );
-	            renderer.setRenderTarget(readBuffer)
-	            renderer.clear()
-	            renderer.render(  this.scene,  this.camera );
-	            */
+	           
+	 
 	            renderer.setRenderTarget(oldTarget); 
 				renderer.setClearColor( this.oldClearColor, this.oldClearAlpha );
 				renderer.autoClear = oldAutoClear;
@@ -147692,16 +147698,14 @@ ENDSEC
 
 	                    '	float depth = unpackRGBAToDepth(texture2DProj( depthTexture, projTexCoord ));',
 	                    '	float viewZ = - DEPTH_TO_VIEW_Z( depth, cameraNearFar.x, cameraNearFar.y );',
-	                    '	float depthTest = (-vPosition.z > viewZ) ? 1.0 : 0.0;',   
+	                    '	float depthTest = (-vPosition.z > viewZ) ? 1.0 : 0.0;',   //决定是否为hiddenPart
 	                    '	gl_FragColor = vec4(0.0, depthTest, 1.0, 1.0);',
 
 	                    '}'
-	                ].join( '\n' )
-	                //scene.overrideMaterial
-	                //为什么画出来红色通道不为0,且depthTest似乎会改变红色通道的值
+	                ].join( '\n' ) 
 	            } );//没有绘制部分的颜色是clearColor,255
 	        }else {
-	            return new MeshBasicMaterial({color:'#000000'})
+	            return new MeshBasicMaterial({color:'#000000'}) //不检测深度,不判断遮挡
 	        }
 
 		},
@@ -147769,7 +147773,7 @@ ENDSEC
 					float d = length( vec2(diff1, diff2) ) * edgeStrength;
 					float a1 = min(c1.g, c2.g);
 					float a2 = min(c3.g, c4.g);
-					float visibilityFactor = min(a1, a2);
+					float visibilityFactor = min(a1, a2); //检测深度值,是否被遮挡
 					vec3 edgeColor = 1.0 - visibilityFactor > 0.001 ? visibleEdgeColor : hiddenEdgeColor;
 					//gl_FragColor = vec4(0.0,1.0,0.0,1.0); 
                     gl_FragColor = vec4(edgeColor, 1.0) * vec4(d); 
@@ -147833,7 +147837,7 @@ ENDSEC
 
 		},
 
-		getOverlayMaterial: function () {
+		getOverlayMaterial: function () {//对边缘线进一步处理,已被废弃
 
 			return new ShaderMaterial( {
 
@@ -147897,6 +147901,39 @@ ENDSEC
 	OutlinePass.BlurDirectionX = new Vector2( 1.0, 0.0 );
 	OutlinePass.BlurDirectionY = new Vector2( 0.0, 1.0 );
 
+
+
+
+
+
+	/* 
+
+
+	渲染步骤:(没有showHiddenPart时)
+
+	仅绘制选中部分,材质为普通的单色材质,颜色是黑色不透明。未绘制部分的clearColor是白色不透明。
+	(详见prepareMaskMaterial,输出的r要为0) 
+	     
+
+
+	然后在上面绘制的图中,根据r的差值,得到边缘线。
+
+
+	正常绘制场景之后,将上面的边缘线覆盖于其上。
+
+
+
+	(如果showHiddenPart,最开始还要先隐藏选中部分,这是为了得到非选中部分的深度值,然后再绘制选中部分时去比较选中和非选中部分之间的深度差异。以判断是否被遮挡。)
+
+
+
+
+
+
+
+
+	 */
+
 	/**
 	 * @author mschuetz / http://mschuetz.at
 	 *
@@ -148895,7 +148932,7 @@ ENDSEC
 	                outlinePass.renderToScreen = true;  //这样更流畅,不用ssaa了,缺点是outline有锯齿
 	                outlinePass.enabled = false;
 	                this.composer.addPass( outlinePass );
-	                outlinePass.edgeStrength = 10;
+	                outlinePass.edgeStrength = 4;
 	                outlinePass.edgeGlow = 0; 
 	                outlinePass.visibleEdgeColor = new Color("#09a1b3");  
 	                outlinePass.hiddenEdgeColor = new Color("#09a1b3");  
@@ -151217,7 +151254,7 @@ ENDSEC
 	        if(background instanceof Color){ //add
 	            renderer.setClearColor(background, backgroundOpacity);
 	        }else if(background === "skybox"){
-				renderer.setClearColor( 0xffffff, 1 /*  0x000000, 0 */);
+				renderer.setClearColor(0x000000, 0 );
 			} else if (background === 'gradient') {
 				renderer.setClearColor(0x000000, 0);
 			} else if (background === 'black') {
@@ -151292,7 +151329,7 @@ ENDSEC
 	                    params_.target.viewport.set(left, bottom, width, height);  
 	                    scissorTest && params_.target.scissor.set(left, bottom, width, height); 
 	                    params_.target.scissorTest = scissorTest;
-	                    
+	                    this.renderer.setRenderTarget(params_.target);
 	                }else {        
 	                    this.renderer.setViewport(left, bottom, width, height); //规定视口,影响图形变换(画布的使用范围) 
 	                    scissorTest && this.renderer.setScissor( left, bottom, width, height );//规定渲染范围
@@ -151317,12 +151354,14 @@ ENDSEC
 	                    /* renderOverlay: this.renderOverlay.bind(this),  */ force:!view.noPointcloud //如果要渲染点云,必须也一直渲染地图,否则地图会被覆盖(点云目前未能获取是否改变,也可能有其他动态物体,所以还是一直渲染的好)
 	                }));
 	            }else { 
-	                this.clear(params); 
+	                this.clear(params);  
+	                pRenderer.clearTargets(params);
+	                
+	         
 	                
 	                this.renderBG(view);
 	                
-	                pRenderer.clearTargets(params);
-	                 
+	                
 	                if(Potree.settings.notAdditiveBlending){
 	                    params.renderBeforeCloud = true;
 	                    this.renderOverlay1(params);   //先渲染不透明的model  
@@ -151386,24 +151425,48 @@ ENDSEC
 	        let backgroundOpacity = view.backgroundOpacity == void 0 ? viewer.backgroundOpacity : view.backgroundOpacity;//如果想完全透明,只需要backgroundOpacity为0
 	        if(backgroundOpacity != 0){//绘制背景
 	            if(background === "skybox"){
-	                //限制相机到原点的距离。
-	                let dir = new Vector3().subVectors(viewer.scene.cameraP.position, viewer.bound.center);
+	                //限制相机到原点的距离。 
+	                let skyCamera = view.camera.type == "OrthographicCamera" ? viewer.skybox.cameraOrtho : viewer.skybox.camera;
 	                let safeRatio = 0.02;
-	                let safeWidth = Potree.config.skyboxWidth * safeRatio / 2;  //相机只能在这个范围内移动
-	                let length = dir.length();
-	                let aimRadius = easing.easeOutQuad(Math.min(length, safeWidth) , 0, safeWidth, safeWidth); 
-	                dir.multiplyScalar(aimRadius/length); 
-	                viewer.skybox.camera.position.copy(dir);
-	                viewer.skybox.camera.rotation.copy(viewer.scene.cameraP.rotation);
-	                viewer.skybox.camera.fov = viewer.scene.cameraP.fov;
-	                viewer.skybox.camera.aspect = viewer.scene.cameraP.aspect;
-
-	                viewer.skybox.parent.rotation.x = 0;
-	                viewer.skybox.parent.updateMatrixWorld();
-
-	                viewer.skybox.camera.updateProjectionMatrix();
+	                let safeWidth = Potree.config.skyboxBgWidth * safeRatio / 2;  //相机只能在这个范围内移动
+	                if(!view.skyboxFixPos){ //允许不在全景图中心,允许位移造成一定程度畸变 
+	                    let dir = new Vector3().subVectors(view.camera.position, viewer.bound.center);
+	                    let length = dir.length();
+	                    const moveMax = 100;
+	                    let aimRadius = easing.easeOutQuart(Math.min(length, moveMax) , 0, safeWidth, moveMax); //(x, startY, wholeY, maxX)
+	                    dir.multiplyScalar(aimRadius/length);  
+	                    skyCamera.position.copy(dir);
+	                }else {
+	                    skyCamera.position.set(0,0,0);
+	                }
+	                
+	                skyCamera.rotation.copy(view.camera.rotation);
+	                skyCamera.aspect = view.camera.aspect;
+	                
+	                if(view.camera.type == "OrthographicCamera"){ //调节zoom
+	                    skyCamera.left = view.camera.left; skyCamera.right = view.camera.right; skyCamera.top = view.camera.top; skyCamera.bottom = view.camera.bottom;
+	                    
+	                    let a = Potree.config.skyboxBgWidth / 2 - safeWidth;
+	                    let minY = Math.max(skyCamera.right / a, skyCamera.top / a,  view.skyboxMinZoom||0); //能够使skybox铺满画布的最小zoom.  提示:越远zoom越小
+	                    let maxY = Math.max(20, minY) ;//自定义一个 不会超过的最大实际zoom
+	                    //view.camera.zoom自变量的变化范围:
+	                    let minX = 1;
+	                    let maxX = 80;  
+	                    let x = MathUtils.clamp(view.camera.zoom - minX, minX, maxX); 
+	                    skyCamera.zoom = easing.easeOutCubic(x-minX, minY, maxY-minY, maxX-minX); //自变量范围从0开始,所以减去minX
+	                    
+	                    //pos的范围先不管了 其实aimRadius是有误的,但效果还行
+	                }else {
+	                    skyCamera.fov = view.camera.fov;
+	                    skyCamera.zoom = 1;
+	                }
+	                  
+	                
+	                view.skyboxRenderFun && view.skyboxRenderFun();
 	                
-	                viewer.renderer.render(viewer.skybox.scene, viewer.skybox.camera);
+	                skyCamera.updateProjectionMatrix();
+	                skyCamera.updateMatrixWorld();
+	                viewer.renderer.render(viewer.skybox.scene, skyCamera);
 	            }else if(background === 'gradient'){ 
 	                viewer.scene.cameraBG.layers.set(Potree.config.renderLayers.bg);
 	                viewer.renderer.render(viewer.scene.scene, viewer.scene.cameraBG);

File diff suppressed because it is too large
+ 1 - 1
public/lib/potree/potree.js.map


src/assets/xingkong .jpg → src/assets/xingkong.jpg


+ 1 - 0
src/sdk/cover/index.js

@@ -298,6 +298,7 @@ export const enter = (dom, isLocal) => {
             }else{
                 viewer.setBackground('skybox', sky) 
             }
+            
              
         },