|
@@ -410,7 +410,7 @@ var startIdle = function(){
|
|
GifTexDeal.start(a )
|
|
GifTexDeal.start(a )
|
|
e.currentIdleAnimation = 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)
|
|
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;
|
|
var walkGap = 0.4;
|
|
|
|
|
|
const spriteDisToCamera = 2.8
|
|
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]],
|
|
items: [[7,0],[7,1], [22,0],[22,1], [19,0],[19,1], [26,0], [26,1]],
|
|
dis: 1.6
|
|
dis: 1.6
|
|
@@ -455,6 +455,22 @@ const disTpCameras = [
|
|
dis: 2.1,
|
|
dis: 2.1,
|
|
gap:-0.56
|
|
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]){
|
|
/* if(disTpCameras[pano.id]){
|
|
return disTpCameras[pano.id]
|
|
return disTpCameras[pano.id]
|
|
}else return spriteDisToCamera */
|
|
}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 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
|
|
return result
|
|
}
|
|
}
|
|
/* var getGap = function(pano){
|
|
/* var getGap = function(pano){
|
|
@@ -493,8 +521,11 @@ var updateWalkAnimation = function(from, to){
|
|
dis += player.position.distanceTo(to.position);
|
|
dis += player.position.distanceTo(to.position);
|
|
var lastStart = start;
|
|
var lastStart = start;
|
|
var gap = walkGap //間隔
|
|
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){
|
|
while(dis < disToCamera){
|
|
@@ -510,8 +541,8 @@ var updateWalkAnimation = function(from, to){
|
|
dir = player.getDirection()//拐弯 //start.position.clone().sub(lastStart.position).normalize()
|
|
dir = player.getDirection()//拐弯 //start.position.clone().sub(lastStart.position).normalize()
|
|
var diff = disToCamera - dis //补全距离
|
|
var diff = disToCamera - dis //补全距离
|
|
pos = to.position.clone().add(dir.clone().multiplyScalar(diff))
|
|
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{
|
|
}else{
|
|
let disBetween = start.position.distanceTo(end.position);
|
|
let disBetween = start.position.distanceTo(end.position);
|
|
var diff = dis - disToCamera//退回距离
|
|
var diff = dis - disToCamera//退回距离
|
|
@@ -546,33 +577,44 @@ var updateWalkAnimation = function(from, to){
|
|
}
|
|
}
|
|
//console.log(dir)
|
|
//console.log(dir)
|
|
pos = end.position.clone().sub(currentDir.clone().multiplyScalar(diff))
|
|
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')
|
|
//console.log('updatePose')
|
|
|
|
|
|
sprite1 = sprite1 || animations[0].mesh
|
|
sprite1 = sprite1 || animations[0].mesh
|
|
sprite2 = sprite2 || animations[1].mesh
|
|
sprite2 = sprite2 || animations[1].mesh
|
|
- var cameraPos = player.position.clone().setY(spriteY);
|
|
|
|
|
|
+
|
|
var lookAtCam
|
|
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
|
|
if(pos){//walk
|
|
dir = dir.setY(0).normalize().multiplyScalar(disToCamera);
|
|
dir = dir.setY(0).normalize().multiplyScalar(disToCamera);
|
|
- pos.setY(spriteY)
|
|
|
|
|
|
+ pos.setY(spriteY_)
|
|
//lookAtCam = true //不然会比较斜
|
|
//lookAtCam = true //不然会比较斜
|
|
}else{//idle
|
|
}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);
|
|
dir = player.getDirection().setY(0).normalize().multiplyScalar(disToCamera);
|
|
pos = new THREE.Vector3().addVectors(cameraPos, dir)
|
|
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) {
|
|
n.prototype.goToDestination = function(e, t, i, n) {
|
|
//音频
|
|
//音频
|
|
-
|
|
|
|
|
|
+ console.log('goToDestination:' , this.destinationItem )
|
|
var musicInfo = this.model.heroLocations[this.destinationItem[0]].musicInfo
|
|
var musicInfo = this.model.heroLocations[this.destinationItem[0]].musicInfo
|
|
// zeg 手动导览不播放音频
|
|
// zeg 手动导览不播放音频
|
|
if(musicInfo && musicInfo.music && !e){
|
|
if(musicInfo && musicInfo.music && !e){
|