xzw 1 éve
szülő
commit
32ce425384

+ 10 - 0
src/custom/materials/ModelTextureMaterial.js

@@ -229,6 +229,14 @@ let shader = {
                     
                     depthValue.y = 0.5 * ((gl_DepthRange.far - gl_DepthRange.near) * ndcPos2.z
                             + gl_DepthRange.near + gl_DepthRange.far); 
+                    
+                    #if defined(depth_background) 
+                        //后排的 skybox 不能挡住chunk  
+                        depthValue.y += 0.3;
+                    #endif
+                    
+                    
+                    
                     return depthValue;      
                 }
                 //注:未加载好的话,depth为0,导致第一次漫游过去的时候许多mesh会立刻被遮挡,所以要确保加载完
@@ -422,6 +430,8 @@ export default class ModelTextureMaterial extends THREE.RawShaderMaterial {
     }
     
     updateDepthTexEnable(){
+        if(this.dontChangeDepth)return
+        
         let hasDepthTex = this.pano0 && this.pano1 && this.pano0.pointcloud.hasDepthTex && this.pano1.pointcloud.hasDepthTex  //暂时不知道一个有图一个没图怎么写所以
         
         Potree.Utils.addOrRemoveDefine(this, 'hasDepthTex', hasDepthTex?'add':'remove' )

+ 22 - 1
src/custom/modules/panos/Images360.js

@@ -75,6 +75,13 @@ export class Images360 extends THREE.EventDispatcher{
             this.cube.layers.set(Potree.config.renderLayers.skybox)
             this.cube.name = 'skyboxCube'
             viewer.scene.scene.add(this.cube)
+            
+            
+            if(Potree.settings.mergeType2){
+                this.materialInside = new ModelTextureMaterial( )
+                this.materialInside.dontChangeDepth = true //chunk本身深度是对的,不用深度图,否则过渡会有很多裂痕
+                this.cube.material.defines.depth_background = '' //skybox的深度改得向后一些, 避免盖住chunk,造成坑坑洼洼
+            }
         }
         if(Potree.settings.testCube){
             this.cubeTest = this.cube.clone() 
@@ -421,6 +428,20 @@ export class Images360 extends THREE.EventDispatcher{
                         }
                         
                         
+                        if(Potree.settings.mergeType2 && this.currentPano.pointcloud.is4dkkModel){
+                            if(this.currentPano.pointcloud.fileType == '3dTiles'){
+                                viewer.model4dkk.runtime.limit2lowestDepth(mode == 'showPanos')
+                                viewer.model4dkk.runtime.getTileset().tiles.forEach(e=>{
+                                    let mesh = e.tileContent.children[0]
+                                    mesh.material = mode == 'showPanos' ? this.materialInside : mesh.materialOutside
+                                    Potree.Utils.setObjectLayers(mesh,  mode == 'showPanos' ? 'skybox' : 'model' )
+                                })
+                                
+                            }else{
+                                
+                            }
+                        }
+                        
                         
                         /* viewer.dispatchEvent({
                             type: "enableChangePos",
@@ -871,7 +892,7 @@ export class Images360 extends THREE.EventDispatcher{
         let onUpdate = (progress)=>{
             
             this.cube.material.uniforms.progress.value = progress 
-            
+            this.materialInside && (this.materialInside.uniforms.progress.value = progress) 
             viewer.scene.pointclouds.forEach(e=>{
                 e.material.uniforms.progress.value = progress 
             })