xzw 2 месяцев назад
Родитель
Сommit
4ffc59c056

+ 3 - 1
src/custom/mergeStartTest.js

@@ -320,7 +320,9 @@ var start = function(dom, mapDom, number, fileServer, webSite){ //t-Zvd3w0m
       
              
          
-    let tilesetUrls = [   
+    let tilesetUrls = [    
+        
+        'https://4dkk.4dage.com/scene_view_data/SS-t-8bMZzAAcpul/images/3dtiles/tileset.json?_=1760681463937',
         'https://4dkk.4dage.com/fusion/test/b3dm/modelId_11947/tileset.json',//json有的包含多个materials,之前会花掉,现在解决了
         'https://4dkk.4dage.com/fusion/testb3dm/test001/tileset.json',  //体育中心
       // `${Potree.resourcePath}/models/3dtiles/SG-CPwbgVaPvcY/tileset.json`,

+ 7 - 7
src/custom/modules/panoEdit/panoEditor.js

@@ -76,7 +76,7 @@ const cameraProps = [
 ]   
 
 
-
+const hoveredColor = Common.getHSV(Potree.config.mainColor, {add:{v : -20 }})
 
 class PanoEditor extends THREE.EventDispatcher{
     
@@ -129,12 +129,12 @@ class PanoEditor extends THREE.EventDispatcher{
                 depthTest:false  
             })
             lineMats.hovered = LineDraw.createFatLineMat({
-                color: '#00c8af', 
+                color: Potree.config.mainColor, 
                 lineWidth: 2,   
                 depthTest:false   
             })             
             lineMats.selected = LineDraw.createFatLineMat({
-                color: '#00c8af', 
+                color: Potree.config.mainColor, 
                 lineWidth: 3,   
                 depthTest:false   
             }) 
@@ -1114,7 +1114,7 @@ class PanoEditor extends THREE.EventDispatcher{
             color: 0xffffff,
             transparent: true, 
             useDepth:true,
-            backColor: 0x33ffdd,
+            backColor: Common.getHSV(Potree.config.mainColor, {add:{s:-50, v:-10 }}),
             occlusionDistance: 10,//变为backColor距离 
             clipDistance : 5,//消失距离            
             maxClipFactor: 0.8,  
@@ -1133,13 +1133,13 @@ class PanoEditor extends THREE.EventDispatcher{
         circleMats.selected_rtk_off.map = texLoader.load(Potree.resourcePath+'/textures/rtk-f-s.png' ) 
         
         circleMats.hovered_normal = circleMats.default_normal.clone();
-        circleMats.hovered_normal.color.set(0x00ff00)
+        circleMats.hovered_normal.color.copy(hoveredColor)
         circleMats.hovered_normal.useDepth = false
         circleMats.hovered_rtk_on = circleMats.default_rtk_on.clone();
-        circleMats.hovered_rtk_on.color.set(0x00ff00)
+        circleMats.hovered_rtk_on.color.set(hoveredColor)
         circleMats.hovered_rtk_on.useDepth = false        
         circleMats.hovered_rtk_off = circleMats.default_rtk_off.clone();
-        circleMats.hovered_rtk_off.color.set(0x00ff00)
+        circleMats.hovered_rtk_off.color.set(hoveredColor)
         circleMats.hovered_rtk_off.useDepth = false         
         
         

+ 10 - 4
src/custom/settings.js

@@ -2,8 +2,14 @@
 import browser from './utils/browser.js'
 
 const labelorder = 5
- 
+const green = '#00C8AF'
+const blue = '#007BFF'
+const mainColor = window.globalSettings?.mainColor || green;
+
+  
+
 const config = {//配置参数   不可修改
+    mainColor,
     displayMode:{ 
 		showPointCloud:{
 			atPano:{
@@ -209,13 +215,13 @@ const config = {//配置参数   不可修改
     
     
     measure:{
-        color:'#00C8AF',
+        color:  mainColor ,
         default:{
-            color:"#64C8BB",//"#00c7b2",
+            color: "#64C8BB", 
             opacity:0.7
         },
         highlight:{
-            color:'#00C8AF',//"#00c7b2", 
+            color: mainColor,//"#00c7b2", 
             opacity:1,
             labelOpacity:0.7//1会挡住线和端点
         },

+ 81 - 0
src/custom/three.shim.js

@@ -950,4 +950,85 @@ THREE.Triangle.getInterpolatedAttribute = function( attr, i1, i2, i3, barycoord,
 
     return target;
 
+}
+
+let _vector$7 = new THREE.Vector3
+THREE.InterleavedBufferAttribute.prototype.applyNormalMatrix = function(m) {
+
+    for (let i = 0, l = this.count; i < l; i++) {
+
+        _vector$7.fromBufferAttribute(this, i);
+
+        _vector$7.applyNormalMatrix(m);
+
+        this.setXYZ(i, _vector$7.x, _vector$7.y, _vector$7.z);
+
+    }
+
+    return this;
+
+}
+
+THREE.Color.prototype.getHSV = function() {
+    //or hsb   色相、饱和度、明度(不同于hsl的亮度,只有色相是和hsl一样)代码源于deepseek 
+    let r = this.r, g = this.g, b = this.b
+    let max = Math.max(r, g, b);
+    let min = Math.min(r, g, b);
+    let h, s, v = max;
+
+    let d = max - min;
+    s = max === 0 ? 0 : d / max;
+
+    if (max === min) {
+        h = 0;
+        // 无色
+    } else {
+        switch (max) {
+        case r:
+            h = (g - b) / d + (g < b ? 6 : 0);
+            break;
+        case g:
+            h = (b - r) / d + 2;
+            break;
+        case b:
+            h = (r - g) / d + 4;
+            break;
+        }
+        h /= 6;
+    }
+
+    return {h: h * 360, s: s * 100, v: v * 100};
+} 
+THREE.Color.prototype.setHSV = function( h, s, v ) { 
+    h = h % 360;
+    s /= 100;
+    v /= 100;
+
+    let c = v * s;
+    let x = c * (1 - Math.abs((h / 60) % 2 - 1));
+    let m = v - c;
+
+    let r, g, b;
+
+    if (0 <= h && h < 60) {
+        [r,g,b] = [c, x, 0];
+    } else if (60 <= h && h < 120) {
+        [r,g,b] = [x, c, 0];
+    } else if (120 <= h && h < 180) {
+        [r,g,b] = [0, c, x];
+    } else if (180 <= h && h < 240) {
+        [r,g,b] = [0, x, c];
+    } else if (240 <= h && h < 300) {
+        [r,g,b] = [x, 0, c];
+    } else if (300 <= h && h < 360) {
+        [r,g,b] = [c, 0, x];
+    }
+
+    return this.setRGB(r + m, g + m, b + m) 
+}
+
+let oldSet = THREE.Color.prototype.set 
+THREE.Color.prototype.set = function(){
+    if(arguments.length >= 3)return this.setRGB.apply(this, arguments)
+    return oldSet.apply(this, arguments)
 }

+ 21 - 0
src/custom/utils/Common.js

@@ -776,7 +776,28 @@ var Common = {
         });
         
         return texture
+    },
+    
+    
+    
+    //hsv感觉比hsl好一些,更能保持颜色本身不变。  色调(H),饱和度(S),明度(V/B)。
+
+       
+    getHSV(color, prop={}  ){
+        let c = new THREE.Color()
+        let hsv = c.set(color).getHSV()
+        if(prop.add){
+            for(let i in prop.add) hsv[i] += prop.add[i]
+        }else{
+            hsv = Object.assign(hsv, prop)
+        }
+        let {h, s, v} = hsv
+        return c.setHSV(h, s, v)  //setHSV(hsb.h, hsb.s, 100) 
     }
+       
+//let c = new THREE.Color().set(this.color).getHSL({ h: 0, s: 0, l: 0 })  
+
+
 }  
 
 Potree.Common = Common