Browse Source

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

tremble 3 years ago
parent
commit
968a8df1f1
1 changed files with 62 additions and 12 deletions
  1. 62 12
      public/static/js/main_2020_show.js

+ 62 - 12
public/static/js/main_2020_show.js

@@ -400,16 +400,52 @@ var stopAnimation = function(){
  
 var idleGap = Math.min(1.4, window.innerWidth / window.innerHeight * 0.8);//站着时的间隔
 var walkGap = 0.4;  
-var disTpCameras = {
-  /*   5: 1, 6:1 */
-}
+
 const spriteDisToCamera = 2
-var getDisToCamera = function(pano){
-    if(disTpCameras[pano.id]){
+const disTpCameras = [
+    {
+        items: [[7,0],[7,1],/* 73 */ [22,0],[22,1], /* 170  */ [19,0],[19,1],/* 171 */    [26,0], [26,1] /* 53 */],   
+        dis: 1.6
+    }
+    ,
+    {
+        items: [[15,0]],  //137
+        dis: 2.1,
+        gap:-1
+    }
+    ,
+    {
+        items: [[15,1]],  //137
+        dis: 2.1,
+        gap:-0.56
+    }
+]
+
+
+var getDisToCamera = function(){
+    /* if(disTpCameras[pano.id]){
         return disTpCameras[pano.id]
-    }else return spriteDisToCamera
+    }else return spriteDisToCamera */
+    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);
+        
+    }
+    return result
 }
-
+/* var getGap = function(pano){ 
+    if(gaps[pano.id]){
+        return Math.min(Math.abs(gaps[pano.id]), idleGap) * Math.sign(gaps[pano.id]);
+    }else return 0
+} */
 
 var updateWalkAnimation = function(from, to){
     var addProgress = 0.8;
@@ -420,7 +456,7 @@ var updateWalkAnimation = function(from, to){
     dis += player.position.distanceTo(to.position);
     var lastStart = start;
     var gap = walkGap //間隔 
-    var disToCamera = getDisToCamera(to) 
+    var disToCamera = spriteDisToCamera
     
     
     
@@ -488,17 +524,30 @@ var updatePose = function( sprite1,  /*  sprite2, */  pos, dir,/* , gap  */disTo
     //sprite2 = sprite2 || animations[1].mesh
     var cameraPos = player.position.clone().setY(spriteY);
     var lookAtCam 
-    var disToCamera = disToCamera || getDisToCamera(player.currentPano) 
+    var disToCamera = disToCamera || spriteDisToCamera
+    
+    var disInfo;
     if(pos){//walk
         dir = dir.setY(0).normalize().multiplyScalar(disToCamera);
         pos.setY(spriteY)
         //lookAtCam = true  //不然会比较斜
-    }else{//idle 
+    }else{//idle  
+        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)
     }
     //间隔
+    if(disInfo && disInfo.gap!=void 0) { 
+        var shift = convertTool.getNormal({points:[{x:0,y:0},{x: dir.x, y: dir.z}]}) 
+        shift.multiplyScalar(disInfo.gap)
+        shift = new THREE.Vector3(shift.x, 0, shift.y)
+        sprite1.position.copy(pos.clone().sub(shift))
+    }else{
+        sprite1.position.copy(pos)
+    }
+    
     /* var shift = convertTool.getNormal({points:[{x:0,y:0},{x: dir.x, y: dir.z}]}) 
     if(gap)shift.multiplyScalar(gap)
     else{
@@ -509,7 +558,7 @@ var updatePose = function( sprite1,  /*  sprite2, */  pos, dir,/* , gap  */disTo
     sprite2.position.copy(pos.clone().add(shift)) 
      */
      
-    sprite1.position.copy(pos)
+    
      
      
     if(lookAtCam){
@@ -21321,7 +21370,8 @@ window.Modernizr = function(n, e, t) {
                             var l = this.playerControls.cameras[a.PANORAMA];
                             n.setFromQuaternion(l.quaternion, c.warp.eOrder);
                             var u = r * s / i;
-                            u = Math.sign(u) * Math.max(u, 0.0001) //add  如果音频长的话,使旋转可见,否则以为停住了
+                            //全部从左向右:
+                            u = /* Math.sign(u) * */-1 * Math.max(u, 0.0001) //add  如果音频长的话,使旋转可见,否则以为停住了
                             n.y += u,
                             o.set(0, 0, -1),
                             o.applyEuler(n),