Explorar o código

Merge branch 'master' of http://192.168.0.115:3000/chenzhiguang/shuangchuangzhou_2022

tremble %!s(int64=3) %!d(string=hai) anos
pai
achega
e4258c515e

BIN=BIN
public/static/images/ani/HH_talk01.png


BIN=BIN
public/static/images/ani/HH_talk02.png


BIN=BIN
public/static/images/ani/HH_talk03.png


BIN=BIN
public/static/images/ani/HH_walk02.png


BIN=BIN
public/static/images/ani/ZZ_J.png


BIN=BIN
public/static/images/ani/ZZ_talk01.png


BIN=BIN
public/static/images/ani/ZZ_talk02.png


BIN=BIN
public/static/images/ani/ZZ_talk03.png


BIN=BIN
public/static/images/ani/ZZ_walk02.png


+ 18 - 3
public/static/js/Hot.js

@@ -1,6 +1,6 @@
 //合并热点和展览
 g_currentHot = null;
-
+const playVideoWhenFlyOut = false
 window.initHot = function(model) {
   var objLoader = new THREE.OBJLoader();
   var _planeGeometry = new THREE.PlaneGeometry(1, 1);
@@ -287,7 +287,7 @@ window.initHot = function(model) {
           var video = $(
             `<video  controls="controls" loop autoplay x5-playsinline="" webkit-playsinline="true" playsinline="true" controlslist="nodownload"></video>`
           )[0];
-          video.src = manage.dealURL(this.info.texSrc);
+          //video.src = manage.dealURL(this.info.texSrc);
           video.name = this.info.fileName;
         }
 
@@ -786,6 +786,13 @@ window.initHot = function(model) {
 
         var cornerPointInfo = this.getCornerPoint();
         var cornerPoint;
+        
+        if(cornerPointInfo.diffLon < 3  || cornerPointInfo.diffLat < 3 ){
+            //console.log('two far and small')
+            return false
+        }
+
+        
         if (cornerPointInfo.diffLon < 15 && cornerPointInfo.diffLat < 15) {
           //当很小的时候,只判断中心点即可
           cornerPoint = [cornerPointInfo.cornerPoint[0]];
@@ -801,7 +808,7 @@ window.initHot = function(model) {
         }
       } else {
         //飞出要判断模型阻挡,有点耗时就算了
-        return true;
+        return playVideoWhenFlyOut;
       }
     }
 
@@ -853,6 +860,13 @@ window.initHot = function(model) {
       this.videoControl(state);
     }
 
+    loadVideo(video){
+        if(video.src)return 
+        video.src = manage.dealURL(this.info.texSrc); 
+    }
+
+
+
     videoControl(state) {
       if (this.texType != "video" || !this.material_.map) return;
       var video = this.material_.map.image;
@@ -867,6 +881,7 @@ window.initHot = function(model) {
         }
       } else if (state) {
         if (video.paused) {
+            this.loadVideo(video)
           video.play();
           //console.log("play " + this.sid)
         }

+ 203 - 64
public/static/js/main_2020_show.js

@@ -385,11 +385,13 @@ var createGuideAni = function(model){
     sprite2.visible = false;
     
     animations.push({
+        name:'HH',
         idleAnimation:[animation1, animation5, animation7],
         walkAnimation:animation3,
         mesh:sprite1,
         //currentIdleAnimation:
     }, {
+        name:'ZZ',
         idleAnimation:[animation2, animation6, animation8],
         walkAnimation:animation4,
         mesh:sprite2,
@@ -401,16 +403,63 @@ var getRandomItem = function(arr){
     return arr[Math.round(arr.length * random) % arr.length]
 }
 
+var musicGroup = {
+    'ZZ':[
+        "https://///super.4dage.com/data/1204/edit/20220708_103655975.mp3",
+        "https://///super.4dage.com/data/1204/edit/20220711_092443845.mp3",
+        "https://///super.4dage.com/data/1204/edit/20220708_114240478.mp3",
+        "https://///super.4dage.com/data/1204/edit/20220708_114334743.mp3",
+        "https://///super.4dage.com/data/1204/edit/20220708_114347280.mp3",
+        "https://///super.4dage.com/data/1204/edit/20220708_114503575.mp3",
+        "https://///super.4dage.com/data/1204/edit/20220708_114516835.mp3",
+        "https://///super.4dage.com/data/1204/edit/20220708_114553878.mp3",
+        "https://///super.4dage.com/data/1204/edit/20220708_114604570.mp3",
+        "https://///super.4dage.com/data/1204/edit/20220708_114645360.mp3",
+        "https://///super.4dage.com/data/1204/edit/20220708_114658600.mp3",
+        "https://///super.4dage.com/data/1204/edit/20220708_114741742.mp3",
+        "https://///super.4dage.com/data/1204/edit/20220708_114753943.mp3",
+        "https://///super.4dage.com/data/1204/edit/20220722_111147250.mp3",
+    ],
+    
+    'HH':[
+        
+        "https://///super.4dage.com/data/1204/edit/20220708_114250269.mp3",
+        "https://///super.4dage.com/data/1204/edit/20220708_114306331.mp3",
+        "https://///super.4dage.com/data/1204/edit/20220708_114432502.mp3",
+        "https://///super.4dage.com/data/1204/edit/20220708_114443468.mp3",
+        "https://///super.4dage.com/data/1204/edit/20220708_114453488.mp3",
+        "https://///super.4dage.com/data/1204/edit/20220708_114526161.mp3",
+        "https://///super.4dage.com/data/1204/edit/20220708_114534281.mp3",
+        "https://///super.4dage.com/data/1204/edit/20220708_114543407.mp3",
+        "https://///super.4dage.com/data/1204/edit/20220708_114615079.mp3",
+        "https://///super.4dage.com/data/1204/edit/20220708_114625749.mp3",
+        "https://///super.4dage.com/data/1204/edit/20220708_114634288.mp3",
+        "https://///super.4dage.com/data/1204/edit/20220708_114710872.mp3",
+        "https://///super.4dage.com/data/1204/edit/20220708_114720891.mp3",
+        "https://///super.4dage.com/data/1204/edit/20220708_114731411.mp3",
+    ]
+    
+    
+    
+}
+
+
+
 var startIdle = function(){
+    
+    var musicInfo = player.model.heroLocations[player.director.destinationItem[0]].musicInfo
+    console.log(musicInfo)
+    var musicSrc = musicInfo && musicInfo.music
+    
     animations.forEach((e,i)=>{
         e.mesh.visible = true; 
         let a = getRandomItem(e.idleAnimation)
         e.mesh.material.map = a.animation.texture
         GifTexDeal.stop(e.walkAnimation)
-        GifTexDeal.start(a )
+        musicGroup[e.name].some(e=>e.includes(musicSrc)) && GifTexDeal.start(a )
         e.currentIdleAnimation = a
         
-        console.log('animationIdle', i, 'use',  e.idleAnimation.indexOf(a))
+        //console.log('animationIdle', i, 'use',  e.idleAnimation.indexOf(a))
     })
     updatePose(null,null)
     
@@ -434,27 +483,64 @@ var stopAnimation = function(){
 
 
  
-var idleGap = Math.min(1.4, window.innerWidth / window.innerHeight * 0.8);//站着时的间隔
+var idleGap = Math.min(1.3, window.innerWidth / window.innerHeight * 0.75);//站着时的间隔
 var walkGap = 0.4;  
 
 const spriteDisToCamera = 2.8
-const disTpCameras = [
+const disTpCameras = [ 
+     
     /* {
-        items: [[7,0],[7,1], [22,0],[22,1],  [19,0],[19,1], [26,0], [26,1]],   
-        dis: 1.6
-    }
-    ,
+        items: [[29,0],[30,0],[31,0],[32,0],    [28,0]],   //29蓝色隧道口 32隧道尾部
+        dis: 2.3, gap: 0.55
+    },
+    
     {
-        items: [[15,0]],  //137
-        dis: 2.1,
-        gap:-1
-    }
-    ,
+        items: [[16,0],[25,0]],   //站到黄色展板上了
+          gap: 0.55, y: -0.47
+    },
+     
     {
-        items: [[15,1]],  //137
-        dis: 2.1,
-        gap:-0.56
+        items: [[21,0] ],   //站到大众创业杆子后方了
+         dis: 2.1,  gap: 0.45 
     } */
+    
+    {
+        items: [[3,0],[6,0]],   
+            y: 0.4 
+    },
+    {
+        items: [ [5,0],[4,0] ],   
+            y: 0.59
+    },
+    {
+        items: [ [8,0],[9,0],[10,0],[11,0] ],   
+            y: 0.3
+    },
+    
+    
+    
+    //站到黄色展板上了
+    {
+        items: [[13,0]],   
+         dis:3.4, gap: 0.55, y: 0.1
+    },
+    {
+        items: [[14,0],[15,0],[16,0],[18,0]],   
+         dis:3.4, gap: 0.55, y: -0.6
+    },
+    {
+        items: [[19,0],[20,0],[21,0]],   
+         dis:5, gap: 0.55 , y: -0.6
+    },
+    {
+        items: [[23,0],[24,0] ],   
+         dis:2.4,  gap: 0.55,  y: -0.4
+    },
+    
+    {
+        items: [ [25,0],[26,0]],   
+          gap: 0.55,  y: -0.45
+    },
 ]
 
 
@@ -462,19 +548,31 @@ var getDisToCamera = function(){
     /* if(disTpCameras[pano.id]){
         return disTpCameras[pano.id]
     }else return spriteDisToCamera */
-    var currentItem = player.director.currentItem;
+    /* var currentItem = player.director.currentItem;
     var item = disTpCameras.find(e=>e.items.find(u=>currentItem[0] == u[0] && currentItem[1] == u[1] )   )
-    var result = item && {dis:item.dis, gap:item.gap}
-    if(item && item.gap){
-        var dis = item.dis || spriteDisToCamera
-        var zoomLevel = Math.max(player.model.getHeroDescriptorByIndex(currentItem).zoom||0,  player.zoomLevel  )
-        var x = Math.tan(THREE.Math.degToRad(player.baseFov * zoomLevel/2) ) / Math.tan(THREE.Math.degToRad(player.baseFov/2))   
-        
-        var minGap = idleGap / x * dis / spriteDisToCamera * 0.9
-        
-        result.gap = Math.min(Math.abs(item.gap), minGap) * Math.sign(item.gap);
+     */
+    var destinationItem = player.director.destinationItem;
+    var item = disTpCameras.find(e=>e.items.find(u=>destinationItem[0] == u[0] && destinationItem[1] == u[1] )   )
+    var result 
+    
+    
+    if(item){
+        result = {dis:item.dis, gap:item.gap}
+        if(item.gap){
+            var dis = item.dis || spriteDisToCamera
+            var zoomLevel = Math.max(player.model.getHeroDescriptorByIndex(destinationItem).zoom||0,  player.zoomLevel  )
+            var x = Math.tan(THREE.Math.degToRad(player.baseFov * zoomLevel/2) ) / Math.tan(THREE.Math.degToRad(player.baseFov/2))   
+            
+            var minGap = idleGap / x * dis / spriteDisToCamera * 0.9
+            
+            result.gap = Math.min(Math.abs(item.gap), minGap) * Math.sign(item.gap);
+        }
         
+        result.y = item.y
+        //console.log('result',result)
     }
+    
+     
     return result
 }
 /* var getGap = function(pano){ 
@@ -493,8 +591,11 @@ var updateWalkAnimation = function(from, to){
     dis += player.position.distanceTo(to.position);
     var lastStart = start;
     var gap = walkGap //間隔 
-    var disToCamera = spriteDisToCamera
     
+    var disInfo = getDisToCamera()
+    var disToCamera = disInfo && disInfo.dis!=void 0 ? disInfo.dis : spriteDisToCamera 
+    var idleGap_ = disInfo && disInfo.gap!=void 0 ? disInfo.gap : idleGap
+    var shiftY = disInfo && disInfo.y || 0
     
     
     while(dis < disToCamera){ 
@@ -510,8 +611,8 @@ var updateWalkAnimation = function(from, to){
         dir = player.getDirection()//拐弯       //start.position.clone().sub(lastStart.position).normalize()
         var diff = disToCamera - dis //补全距离
         pos = to.position.clone().add(dir.clone().multiplyScalar(diff)) 
-        gap  +=   diff / disToCamera*(idleGap-walkGap) //越接近目标点,gap渐变为站着时的gap
-        
+        gap  +=   diff / disToCamera*(idleGap_-walkGap) //越接近目标点,gap渐变为站着时的gap
+        shiftY  =   diff / disToCamera*shiftY //越接近目标点,yShift渐变为站着时的yShift
     }else{
         let disBetween = start.position.distanceTo(end.position);
         var diff = dis - disToCamera//退回距离
@@ -546,33 +647,44 @@ var updateWalkAnimation = function(from, to){
         }
         //console.log(dir)
         pos = end.position.clone().sub(currentDir.clone().multiplyScalar(diff))
+         
         
     } 
      
-    updatePose(null,  null,   pos, dir  , gap  ,disToCamera)
+    updatePose(null,  null,   pos, dir  , gap  ,disToCamera, shiftY)
     
     
 } 
 
 
 
-var updatePose = function( sprite1,   sprite2,   pos, dir, gap,  disToCamera){
+var updatePose = function( sprite1,   sprite2,   pos, dir, gap,  disToCamera, shiftY=0){
     //console.log('updatePose')
     
     sprite1 = sprite1 || animations[0].mesh
     sprite2 = sprite2 || animations[1].mesh
-    var cameraPos = player.position.clone().setY(spriteY);
+    
     var lookAtCam 
-    var disToCamera = disToCamera || spriteDisToCamera
+    let disInfo = getDisToCamera()
+    if(!disToCamera){ 
+        disToCamera = disInfo && disInfo.dis!=void 0 ? disInfo.dis : spriteDisToCamera 
+    }
+    if(!gap){
+        gap  = disInfo && disInfo.gap || 0
+    }
+    if(!shiftY){
+        shiftY  = disInfo && disInfo.y || 0
+    }
+    let spriteY_ = spriteY + shiftY
+    var cameraPos = player.position.clone().setY(spriteY_);
     
-    var disInfo;
     if(pos){//walk
         dir = dir.setY(0).normalize().multiplyScalar(disToCamera);
-        pos.setY(spriteY)
+        pos.setY(spriteY_)
         //lookAtCam = true  //不然会比较斜
     }else{//idle  
-        disInfo = getDisToCamera()
-        if(disInfo && disInfo.dis!=void 0) disToCamera = disInfo.dis
+        /* disInfo = getDisToCamera()
+        if(disInfo && disInfo.dis!=void 0) disToCamera = disInfo.dis */
         
         dir =  player.getDirection().setY(0).normalize().multiplyScalar(disToCamera);
         pos = new THREE.Vector3().addVectors(cameraPos, dir)
@@ -5415,7 +5527,7 @@ window.Modernizr = function(n, e, t) {
             ,
             n.prototype.goToDestination = function(e, t, i, n) {
                 //音频 
-                
+                console.log('goToDestination:' , this.destinationItem  )
                 var musicInfo = this.model.heroLocations[this.destinationItem[0]].musicInfo
                 // zeg 手动导览不播放音频
                 if(musicInfo && musicInfo.music && !e){
@@ -5804,6 +5916,8 @@ window.Modernizr = function(n, e, t) {
             }
             ,
             n.prototype.getMomentTour = function(destinationItem) {//add
+            
+                //return 'std' 
                 var wholeMomentTour = window.DATA.momentTour || "walk"; //最外层
                  
                 if(!destinationItem) return wholeMomentTour
@@ -18265,30 +18379,51 @@ window.Modernizr = function(n, e, t) {
                     }else{  
                         g_data2 = hotMatcher(e);
                         this.hotsCount = 0; 
-                        
-                        //因为热点保存后在hots里的顺序会被修改,所以使用order来记录顺序,这里要重排序:
-                        if(e.hots){  
-                            var sids = Object.keys(e.hots).sort((a,b)=>{return e.hots[a].order - e.hots[b].order});
-                            sids.forEach((sid)=>{
-                                e.hots[sid].sid = sid
-                                new Hot(e.hots[sid], e.hots[sid].version != 'multi' && "byHot" )
-                            })
+                        let create = ()=>{
+                            
+                            //因为热点保存后在hots里的顺序会被修改,所以使用order来记录顺序,这里要重排序:
+                            if(e.hots){  
+                                var sids = Object.keys(e.hots).sort((a,b)=>{return e.hots[a].order - e.hots[b].order});
+                                sids.forEach((sid)=>{
+                                    e.hots[sid].sid = sid
+                                    
+                                    //if(e.hots[sid].texType == "shine" || e.hots[sid].texType == "photo" ){
+                                        
+                                        //e.hots[sid].styleImg = []
+                                        
+                                        
+                                        new Hot(e.hots[sid], e.hots[sid].version != 'multi' && "byHot" )
+                                    //}
+                                })
+                            } 
+                            
+                            if(e.overlays){
+                                e.overlays.forEach((info)=>{ 
+                                    //if(info.file.includes('m/data/762/edit/20210312_112357584.mp4') )return;
+                                    new Hot(info, 'byOverlay')  
+                                })
+                            } 
+                            Hot.createHotList();
+                            Hot.startLoad()  
+                            if(DATA.roomLabels){
+                                DATA.roomLabels.forEach((data)=>{
+                                    this.roomLabels.push(new RoomLabel(data))
+                                })
+                            }
+                            
+                            
                         }
-                        
-                        if(e.overlays){
-                            e.overlays.forEach((info)=>{ 
-                                //if(info.file.includes('m/data/762/edit/20210312_112357584.mp4') )return;
-                                new Hot(info, 'byOverlay')  
-                            })
-                        } 
-                        Hot.createHotList();
-                        Hot.startLoad()  
-                        if(DATA.roomLabels){
-                            DATA.roomLabels.forEach((data)=>{
-                                this.roomLabels.push(new RoomLabel(data))
-                            })
+                        if(player.currentPano){
+                            create()
+                        }else{
+                            let f = ()=>{
+                                window.bus.removeEventListener('playerAndModelReady',f) 
+                                create() 
+                            }
+                            window.bus.addEventListener('playerAndModelReady',f) 
                         }
                         
+                        
                         g_index = w.valueFromHash("m");
                          
                         
@@ -21990,7 +22125,7 @@ window.Modernizr = function(n, e, t) {
                 this.updateModel()
                 this.modeTran = ''
                 
-                window.bus.dispatchEvent({type:'playerAndModelReady'})
+                
             }
 			 
 			
@@ -22628,6 +22763,7 @@ window.Modernizr = function(n, e, t) {
             n.prototype.startInside = function(e, t, i, n, r) {
                 r = r || $.Deferred(),
                 this.currentPano = e;
+                window.bus.dispatchEvent({type:'playerAndModelReady'})
                 var o = e && !e.isAligned();
                 if (t = o ? e.position : t || e.position,
                 i = i || e.quaternion,
@@ -24060,11 +24196,11 @@ window.Modernizr = function(n, e, t) {
                 e = g.deepExtend({}, f[i], f[p + "-" + i]);
                 var I = void 0 !== o ? o : e.transitionTime;
                 this.emit(w.ModeChanging, p, i, n, I),
-                n && (this.currentPano = n),
+                n && (this.currentPano = n), 
                 this.switchCameraMode(i, c),
                 y.cancelById(V.LookTransition);
                 
-                
+                window.bus.dispatchEvent({type:'playerAndModelReady'}) 
                 
                  //before fly---------------------
                  
@@ -24392,7 +24528,7 @@ window.Modernizr = function(n, e, t) {
                 //var currentLocation = this.model.heroLocations[this.director.currentItem[0]] 
                 
                 var rotTime
-                if(currentLocation.rotTime == void 0 || currentLocation.rotTime == ''){
+                /* if(currentLocation.rotTime == void 0 || currentLocation.rotTime == ''){
                     var restChildCount = currentLocation0.heroLocations ? (currentLocation0.heroLocations.length-this.director.currentItem[1]-1) : 0
                     var hasMusic = currentLocation0 && currentLocation0.musicInfo.music
                     if(hasMusic){
@@ -24410,7 +24546,10 @@ window.Modernizr = function(n, e, t) {
                 }else{
                     rotTime = currentLocation.rotTime * 1000
                     Log("rotTime "+rotTime +" at item "+this.director.currentItem,"#E8E") 
-                }
+                } */
+                 
+                rotTime = 600 
+                 
                  
                 startIdle();  
                 this.path.waitNextStep(e, function() {

+ 1 - 1
public/static/js/manage.js

@@ -1533,7 +1533,7 @@ var SoundManager = {
       if (object.audio) {
         object.audio.pause();
         object.callback && object.callback(false);
-        Log(name + " 中断音频 " + "(" + common.getFileNameFromUrl(object.audio.src) + ")");
+        object.audio.src && Log(name + " 中断音频 " + "(" + common.getFileNameFromUrl(object.audio.src) + ")");
       }
 
       if (isInterrupt) {