Browse Source

fix: 调整视频热点 和 导览精灵位置

xzw 3 years ago
parent
commit
d1122f9eac
3 changed files with 69 additions and 27 deletions
  1. 1 1
      public/static/js/Hot.js
  2. 67 25
      public/static/js/main_2020_show.js
  3. 1 1
      public/static/js/manage.js

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

@@ -788,7 +788,7 @@ window.initHot = function(model) {
         var cornerPoint;
         
         if(cornerPointInfo.diffLon < 3  || cornerPointInfo.diffLat < 3 ){
-            console.log('two far and small')
+            //console.log('two far and small')
             return false
         }
 

+ 67 - 25
public/static/js/main_2020_show.js

@@ -410,7 +410,7 @@ var startIdle = function(){
         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,11 +434,11 @@ 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
@@ -455,6 +455,22 @@ const disTpCameras = [
         dis: 2.1,
         gap:-0.56
     } */
+    
+    {
+        items: [[29,0],[30,0],[31,0],[32,0],    [28,0]],   //29蓝色隧道口 32隧道尾部
+        dis: 2.3, gap: 0.55
+    },
+    
+    {
+        items: [[16,0],[25,0]],   //站到黄色展板上了
+          gap: 0.55, y: -0.47
+    },
+     
+    {
+        items: [[21,0] ],   //站到大众创业杆子后方了
+         dis: 2.1,  gap: 0.45 
+    }
+    
 ]
 
 
@@ -462,19 +478,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 +521,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 +541,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 +577,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 +5457,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){

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

@@ -1531,7 +1531,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) {