xzw 4 months ago
parent
commit
c7f3bb292d

+ 3 - 2
src/PotreeRendererNew.js

@@ -1803,8 +1803,9 @@ export class Renderer {
 		// RENDER
         
         let mat = params.material || traversalResult.octrees[0].material
-         
-        if(Potree.settings.cloudSameMat && viewer.scene.volumes.length == 0 && mat.pointSizeType != PointSizeType.ADAPTIVE && mat.activeAttributeName != "level of detail"){
+        let cloudSameMat = Potree.settings.cloudSameMat && !traversalResult.octrees.some(e=>e.material.activeAttributeName != mat.activeAttributeName) //activeAttributeName都一样才行
+           
+        if(cloudSameMat && viewer.scene.volumes.length == 0 && mat.pointSizeType != PointSizeType.ADAPTIVE && mat.activeAttributeName != "level of detail"){
             this.renderOctree(traversalResult.octrees, null, camera, target, params);  //所有点云除了个别属性需要在shader中更新,其他都使用第一个点云的材质
         }else for (const octree of traversalResult.octrees) {  
             for (const octree of traversalResult.octrees) { 

+ 3 - 3
src/custom/materials/BasicMaterial.js

@@ -15,14 +15,14 @@ class BasicMaterial  extends THREE.ShaderMaterial{
             uniforms:{
                 color:  {type:'v3',   value: o.color || new THREE.Color("#FFF")} ,
                 map:    {type: 't',    value: o.map },
-                opacity : {type:'f',    value : 1}
+                opacity : {type:'f',    value : o.opacity == void 0 ? 1 : o.opacity  }
                  
             },
             vertexShader: Shaders['basicTextured.vs'],   
             fragmentShader: Shaders['basicTextured.fs'], 
             defines:{HasColor:'' }
         },o))
-        this.opacity = o.opacity == void 0 ? 1 : o.opacity 
+        //this.opacity = o.opacity == void 0 ? 1 : o.opacity 
     } 
      
     
@@ -38,7 +38,7 @@ class BasicMaterial  extends THREE.ShaderMaterial{
     
     set opacity(o){
         this.uniforms && (this.uniforms.opacity.value = o)
-        this.transparent = o<1
+        //this.transparent = o<1
     }
     get opacity(){
         return this.uniforms.opacity.value  

+ 3 - 0
src/custom/mergeStartTest.js

@@ -353,6 +353,9 @@ var start = function(dom, mapDom, number, fileServer, webSite){ //t-Zvd3w0m
     ], tileIndex = 0
     
      let glbUrls = [ 
+     
+        {url:`${Potree.resourcePath}/models/glb/animation/kid.glb`, angle:Math.PI/2},
+     
         {url:`${Potree.resourcePath}/models/glb/animation/Soldier.glb`, angle:Math.PI/2},
         {url:`${Potree.resourcePath}/models/glb/animation/man.glb`, angle:Math.PI/2}, /* 
         {url:`${Potree.resourcePath}/models/glb/animation/man--running.glb`, angle:Math.PI/2},

+ 2 - 2
src/custom/modules/panos/Images360.js

@@ -260,7 +260,7 @@ export class Images360 extends THREE.EventDispatcher{
                             btnHot.on('click',()=>{
                                  onHot = !onHot    
                                  Potree.settings.showHotIr = onHot
-                                 btnHot.text((btnHot?'关闭':'打开')   +  '热成像')
+                                 btnHot.text((onHot?'关闭':'打开')   +  '热成像')
                             })
                         }
                         if(attrs.temp){
@@ -287,7 +287,7 @@ export class Images360 extends THREE.EventDispatcher{
                     },100)
                     
                                          
-                })
+                },{once:true})
                 
                 
             }

+ 2 - 2
src/custom/modules/panos/Panorama.js

@@ -300,8 +300,8 @@ class Panorama extends THREE.EventDispatcher{
         if(!this['has_'+type] || this[type+'Tex'] || this[type+'Loading'])return
         
          
-        let url = `${Potree.settings.urls.prefix1}/testdata/${Potree.settings.number}/data/${this.pointcloud.sceneCode}/imagemap/${this.originID}_${type}.png`
-        //let url = `${Potree.settings.urls.prefix1}/testdata/${Potree.settings.number}/data/${this.pointcloud.sceneCode}/imagemap/${this.originID}_temp.png`
+        let url = `${Potree.settings.urls.prefix1}/testdata/${this.pointcloud.sceneCode}/data/${this.pointcloud.sceneCode}/imagemap/${this.originID}_${type}.png`
+        //let url = `${Potree.settings.urls.prefix1}/testdata/${this.pointcloud.sceneCode}/data/${this.pointcloud.sceneCode}/imagemap/${this.originID}_temp.png`
          
         let range = {min:Infinity, max:-Infinity, minPixel:null, maxPixel:null}  
         let pixels 

+ 4 - 5
src/custom/objects/Magnifier.js

@@ -38,7 +38,7 @@ export default class Magnifier extends THREE.Object3D {//放大镜or望远镜
         { 
             let density
             let sizeType
-            let colorType
+            let colorType = new Map()
             let opacityBefore = new Map()
             let sizeBefore = new Map()
             let visiMap = new Map()
@@ -50,7 +50,7 @@ export default class Magnifier extends THREE.Object3D {//放大镜or望远镜
                 viewer.scene.pointclouds.forEach(e=>{//因为更改pointDensity时会自动变opacity,所以这项最先获取
                     visiMap.set(e,e.visible)
                     e.visible = Potree.Utils.getObjVisiByReason(e, 'datasetSelection'); //先将隐藏的点云显示
-                
+                    colorType.set(e, e.material.activeAttributeName)  
                     opacityBefore.set(e,e.temp.pointOpacity)  
                     sizeBefore.set(e,e.temp.pointSize)  
                 }) 
@@ -64,8 +64,7 @@ export default class Magnifier extends THREE.Object3D {//放大镜or望远镜
                     sizeType = e.material.pointSizeType  
                     e.material.pointSizeType = Potree.config.material.pointSizeType  
                      
-                    //材质
-                    colorType = e.material.activeAttributeName
+                    //材质 
                     e.material.activeAttributeName = 'rgba'
                     e.changePointOpacity(1) 
                     //e.changePointSize(Potree.config.material.realPointSize, true)
@@ -81,7 +80,7 @@ export default class Magnifier extends THREE.Object3D {//放大镜or望远镜
                     
                     e.visible = visiMap.get(e)                      
                     e.material.pointSizeType = sizeType
-                    e.material.activeAttributeName = colorType  
+                    e.material.activeAttributeName = colorType.get(e)  
                     e.changePointOpacity(opacityBefore.get(e))  
                     //e.changePointSize(sizeBefore.get(e)) 
                 })  

+ 4 - 4
src/custom/start.js

@@ -362,7 +362,7 @@ export function start(dom, mapDom, number ){ //t-Zvd3w0m
                             } 
                         }
                         if(dataset.has_ir){//红外热成像漫游点数据
-                            let panoIrUrl = `${Potree.settings.urls.prefix1}/testdata/${Potree.settings.number}/data/${pointcloud.sceneCode}/imagemap/types.json`
+                            let panoIrUrl = `${Potree.settings.urls.prefix1}/testdata/${pointcloud.sceneCode}/data/${pointcloud.sceneCode}/imagemap/types.json`
                             Potree.loadFile(panoIrUrl,null,(e)=>{
                                 e.imagemap_types.forEach(o=>{
                                     o.uuids.forEach(uuid=>{
@@ -1023,13 +1023,13 @@ export function mergeEditStart(dom, mapDom){
                     //MergeEditor.maintainBoundXY(model) 
                     e.by2d || MergeEditor.maintainBoundCenter(model) 
                     updateBound()
-                    model.dispatchEvent('transformChanged')  
+                    model.dispatchEvent({type:'transformChanged',  byControl:e.byControl})  
                 }
-                model.addEventListener('position_changed', ()=>{//要先发送position_changed再其他
+                model.addEventListener('position_changed', (e)=>{//要先发送position_changed再其他
                     updateBound()
                     MergeEditor.getBoundCenter(model);//更新boundcenter
             
-                    model.dispatchEvent('transformChanged') 
+                    model.dispatchEvent({type:'transformChanged',  byControl:e.byControl}) 
                 })
                 model.addEventListener("rotation_changed", maintainCenter )
                 model.addEventListener("scale_changed", maintainCenter )

+ 4 - 3
src/custom/viewer/ViewerNew.js

@@ -5425,6 +5425,7 @@ export class Viewer extends ViewerBase{
                 return console.warn('已设置过pointStatesBefore!')
             }
             this.pointStatesBefore = {
+                colorType: new Map(),
                 opacity : new Map(), 
                 size: new Map(), 
                 density:Potree.settings.pointDensity,
@@ -5434,7 +5435,7 @@ export class Viewer extends ViewerBase{
             
             viewer.scene.pointclouds.forEach(e=>{
                 this.pointStatesBefore.opacity.set(e, e.temp.pointOpacity)  //因为更改pointDensity时会自动变opacity,所以这项最先获取
-                this.pointStatesBefore.colorType = e.material.activeAttributeName; 
+                this.pointStatesBefore.colorType.set(e,e.material.activeAttributeName) 
                 fitPointsize && this.pointStatesBefore.size.set(e,e.temp.pointSize) //这项不一定有用,因为会被后期覆盖
             }) 
             
@@ -5442,7 +5443,7 @@ export class Viewer extends ViewerBase{
             if(fitPointsize)Potree.settings.sizeFitToLevel = true 
             
             viewer.scene.pointclouds.forEach(e=>{   
-                e.material.activeAttributeName = 'rgba'; 
+                e.material.activeAttributeName = this.pointStatesBefore.colorType.get(e) == 'ir'?'ir':'rgba'; 
                 e.material.shape = Potree.PointShape['SQUARE']
                 fitPointsize && e.changePointSize(Potree.config.material.realPointSize, true) 
                 e.changePointOpacity(1)      
@@ -5459,7 +5460,7 @@ export class Viewer extends ViewerBase{
             
             
             viewer.scene.pointclouds.forEach(e=>{   
-                e.material.activeAttributeName = this.pointStatesBefore.colorType
+                e.material.activeAttributeName = this.pointStatesBefore.colorType.get(e)
                 e.changePointOpacity(this.pointStatesBefore.opacity.get(e)) 
                 e.material.shape = this.pointStatesBefore.shape