xzw 3 년 전
부모
커밋
06d5bd91b0
1개의 변경된 파일87개의 추가작업 그리고 60개의 파일을 삭제
  1. 87 60
      public/static/js/main_2020_show.js

+ 87 - 60
public/static/js/main_2020_show.js

@@ -336,46 +336,6 @@ var createGuideAni = function(){
     })
 } 
 
-var updatePose = function(sprite1, sprite2, pos, dir, gap ){
-    sprite1 = sprite1 || animations[0].mesh
-    sprite2 = sprite2 || animations[1].mesh
-    var cameraPos = player.position.clone().setY(spriteY);
-    var lookAtCam 
-    if(pos){//walk
-        dir = dir.setY(0).normalize().multiplyScalar(2.5);
-        pos.setY(spriteY)
-        lookAtCam = true  //不然会比较斜
-    }else{//idle 
-        dir =  player.getDirection().setY(0).normalize().multiplyScalar(2.5);
-        pos = new THREE.Vector3().addVectors(cameraPos, dir)
-    }
-    //间隔
-    var shift = convertTool.getNormal({points:[{x:0,y:0},{x: dir.x, y: dir.z}]}) 
-    if(gap)shift.multiplyScalar(gap)
-    shift = new THREE.Vector3(shift.x, 0, shift.y)
-    sprite1.position.copy(pos.clone().sub(shift))
-    sprite2.position.copy(pos.clone().add(shift)) 
-    
-    if(lookAtCam){
-        sprite1.lookAt(cameraPos)
-        sprite2.lookAt(cameraPos)
-    }else{
-        sprite1.lookAt(sprite1.position.clone().sub(dir))
-        sprite2.lookAt(sprite2.position.clone().sub(dir)) 
-    }
-     
-    
-   
-     
-    
-    /* var shift = new THREE.Vector3(0.4,0,0).applyQuaternion(player.quaternion)
-    sprite1.position.copy(pos.clone().sub(shift))
-    sprite2.position.copy(pos.clone().add(shift)) 
-    sprite1.lookAt(cameraPos)
-    sprite2.lookAt(cameraPos)*/
-    
-    
-}
 
 var startIdle = function(){
     animations.forEach(e=>{
@@ -437,15 +397,22 @@ var stopAnimation = function(){
     
 } 
  */ 
+ 
+var idleGap = Math.min(1.4, window.innerWidth / window.innerHeight * 0.8);//站着时的间隔
+var walkGap = 0.4;  
+const spriteDisToCamera = 2.5
+
+
+
 var updateWalkAnimation = function(from, to){
     var addProgress = 0.8;
-    const spriteDisToCamera = 2.5
+    
     var pos, dir
     var start = from, end = to;
     var dis = 0;
     dis += player.position.distanceTo(to.position);
     var lastStart = start;
-    
+    var gap = walkGap //間隔
     while(dis < spriteDisToCamera){ 
         lastStart = start
         start = end
@@ -455,45 +422,96 @@ var updateWalkAnimation = function(from, to){
         dis += start.position.distanceTo(end.position);
         
     }
-    if(!end ){ 
-        dir = start.position.clone().sub(lastStart.position).normalize()
+    if(!end ){ //离开路线,走到更前方
+        dir = player.getDirection()//拐弯       //start.position.clone().sub(lastStart.position).normalize()
         var diff = spriteDisToCamera - dis //补全距离
         pos = to.position.clone().add(dir.clone().multiplyScalar(diff)) 
+        gap  +=   diff / spriteDisToCamera*(idleGap-walkGap) //越接近目标点,gap渐变为站着时的gap
         
     }else{
         let disBetween = start.position.distanceTo(end.position);
         var diff = dis - spriteDisToCamera//退回距离
         var ratio = diff / disBetween
-        let currentIndex = player.path.nodes.indexOf(end.id);
+        
         let currentDir = end.position.clone().sub(start.position).normalize()
         dir = currentDir
-        if(ratio > 0.8){
+        if(ratio > 0.8){//上个点转弯
+            let currentIndex = player.path.nodes.indexOf(start.id);
             let last = player.model.panos.index[player.path.nodes[currentIndex-1] ]
             if(last){ 
                 var lastDir = start.position.clone().sub(last.position).normalize()
-                var middleDir = currentDir.clone().add(lastDir).multiplyScalar(0.5);
-                dir = currentDir.clone().multiplyScalar((1-ratio) / 0.2).add(lastDir.clone().multiplyScalar(1- (1- ratio)/0.2))
+                var middleDir = currentDir.clone().add(lastDir).normalize()
+                dir = currentDir.clone().multiplyScalar((1-ratio) / 0.2).add(middleDir.clone().multiplyScalar(1- (1- ratio)/0.2))
+                //console.log("上个点转弯"+dir.toArray())    
+            
             } 
            
-        }else if(ratio < 0.2){
-            
+        }else if(ratio < 0.2){//下个点转弯
+            let currentIndex = player.path.nodes.indexOf(end.id);
             let next = player.model.panos.index[player.path.nodes[currentIndex+1] ]
             if(next){ 
                 var nextDir = next.position.clone().sub(end.position).normalize()
-                var middleDir = currentDir.clone().add(nextDir).multiplyScalar(0.5);
-                dir = currentDir.clone().multiplyScalar(ratio / 0.2).add(nextDir.clone().multiplyScalar(1- ratio / 0.2))
-                 
-            } 
+            }else{
+                var nextDir = player.getDirection()//路线的末端, 渐变为相机角度
+                //console.log("延長转弯") 
+            }
+            var middleDir = currentDir.clone().add(nextDir).normalize()
+            dir = currentDir.clone().multiplyScalar(ratio / 0.2).add(middleDir.clone().multiplyScalar(1- ratio / 0.2))
+            //console.log("下个点转弯"+dir.toArray())    
+              
         }
-        
-        pos = end.position.clone().sub(dir.clone().multiplyScalar(diff))
+        //console.log(dir)
+        pos = end.position.clone().sub(currentDir.clone().multiplyScalar(diff))
         
     } 
      
-    updatePose(null,null, pos, dir , 0.4 )
+    updatePose(null,null, pos, dir , gap )
     
     
 } 
+var updatePose = function(sprite1, sprite2, pos, dir, gap ){
+    sprite1 = sprite1 || animations[0].mesh
+    sprite2 = sprite2 || animations[1].mesh
+    var cameraPos = player.position.clone().setY(spriteY);
+    var lookAtCam 
+    if(pos){//walk
+        dir = dir.setY(0).normalize().multiplyScalar(spriteDisToCamera);
+        pos.setY(spriteY)
+        //lookAtCam = true  //不然会比较斜
+    }else{//idle 
+        dir =  player.getDirection().setY(0).normalize().multiplyScalar(spriteDisToCamera);
+        pos = new THREE.Vector3().addVectors(cameraPos, dir)
+    }
+    //间隔
+    var shift = convertTool.getNormal({points:[{x:0,y:0},{x: dir.x, y: dir.z}]}) 
+    if(gap)shift.multiplyScalar(gap)
+    else{
+        shift.multiplyScalar(idleGap)
+    }    
+    shift = new THREE.Vector3(shift.x, 0, shift.y)
+    sprite1.position.copy(pos.clone().sub(shift))
+    sprite2.position.copy(pos.clone().add(shift)) 
+    
+    if(lookAtCam){
+        sprite1.lookAt(cameraPos)
+        sprite2.lookAt(cameraPos)
+    }else{
+        sprite1.lookAt(sprite1.position.clone().sub(dir))
+        sprite2.lookAt(sprite2.position.clone().sub(dir)) 
+    }
+     
+    
+   
+     
+    
+    /* var shift = new THREE.Vector3(0.4,0,0).applyQuaternion(player.quaternion)
+    sprite1.position.copy(pos.clone().sub(shift))
+    sprite2.position.copy(pos.clone().add(shift)) 
+    sprite1.lookAt(cameraPos)
+    sprite2.lookAt(cameraPos)*/
+    
+    
+}
  
 var convertTool = { 
 	getPos2d : function(point, camera, dom){//获取一个三维坐标对应屏幕中的二维坐标
@@ -9512,7 +9530,10 @@ window.Modernizr = function(n, e, t) {
             E.classList.remove("playing"))
         }
         function s() {
-            T.is(":visible") ? r() : o()
+            //T.is(":visible") ? r() : o() ///tour
+            
+            r()
+            
         }
         function l() {
             x.hasClass("playing") && (clearTimeout(I),
@@ -16299,7 +16320,7 @@ window.Modernizr = function(n, e, t) {
             }else{
                 u.texture1.value = defaultTex1;
                 u.texture2.value = defaultTex2;
-                console.log(this.sid)
+                //console.log(this.sid)
             }  
         }
         
@@ -21651,6 +21672,9 @@ window.Modernizr = function(n, e, t) {
                 void 0 !== t && null !== t || (t = c.warp.teleportTime)
                 
                 
+                stopAnimation()
+                
+                
                 if(momentTourBlackNewType){
                     player.sceneRenderer.effects.transitionMaskPass.start(player.sceneRenderer)
                    
@@ -23852,7 +23876,9 @@ window.Modernizr = function(n, e, t) {
             ,
             
             n.prototype.blackToPano = function(o={}) {//add 瞬间过渡
-                o.panoId = "8bc9156b288d48459e4e0f74d7051ef1"
+                //o.panoId = "8bc9156b288d48459e4e0f74d7051ef1"
+                
+                
                 let oldPos = this.position.clone();
                 let oldPano = this.currentPano
                 let pano = o.pano || this.model.panos.index[o.panoId] 
@@ -25768,6 +25794,7 @@ window.Modernizr = function(n, e, t) {
 				if(render){
 					this.setSize(w, h, ratio);
 					this.forceUpdateSize = !1
+                    idleGap = Math.min(1.4, window.innerWidth / window.innerHeight * 0.8);//站着时的间隔                    
 				}
 			}  
         }()