|
@@ -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);//站着时的间隔
|
|
|
}
|
|
|
}
|
|
|
}()
|