|
@@ -385,11 +385,13 @@ var createGuideAni = function(model){
|
|
|
sprite2.visible = false;
|
|
|
|
|
|
animations.push({
|
|
|
+ name:'HH',
|
|
|
idleAnimation:[animation1, animation5, animation7],
|
|
|
walkAnimation:animation3,
|
|
|
mesh:sprite1,
|
|
|
//currentIdleAnimation:
|
|
|
}, {
|
|
|
+ name:'ZZ',
|
|
|
idleAnimation:[animation2, animation6, animation8],
|
|
|
walkAnimation:animation4,
|
|
|
mesh:sprite2,
|
|
@@ -401,16 +403,63 @@ var getRandomItem = function(arr){
|
|
|
return arr[Math.round(arr.length * random) % arr.length]
|
|
|
}
|
|
|
|
|
|
+var musicGroup = {
|
|
|
+ 'ZZ':[
|
|
|
+ "https://///super.4dage.com/data/1204/edit/20220708_103655975.mp3",
|
|
|
+ "https://///super.4dage.com/data/1204/edit/20220711_092443845.mp3",
|
|
|
+ "https://///super.4dage.com/data/1204/edit/20220708_114240478.mp3",
|
|
|
+ "https://///super.4dage.com/data/1204/edit/20220708_114334743.mp3",
|
|
|
+ "https://///super.4dage.com/data/1204/edit/20220708_114347280.mp3",
|
|
|
+ "https://///super.4dage.com/data/1204/edit/20220708_114503575.mp3",
|
|
|
+ "https://///super.4dage.com/data/1204/edit/20220708_114516835.mp3",
|
|
|
+ "https://///super.4dage.com/data/1204/edit/20220708_114553878.mp3",
|
|
|
+ "https://///super.4dage.com/data/1204/edit/20220708_114604570.mp3",
|
|
|
+ "https://///super.4dage.com/data/1204/edit/20220708_114645360.mp3",
|
|
|
+ "https://///super.4dage.com/data/1204/edit/20220708_114658600.mp3",
|
|
|
+ "https://///super.4dage.com/data/1204/edit/20220708_114741742.mp3",
|
|
|
+ "https://///super.4dage.com/data/1204/edit/20220708_114753943.mp3",
|
|
|
+ "https://///super.4dage.com/data/1204/edit/20220722_111147250.mp3",
|
|
|
+ ],
|
|
|
+
|
|
|
+ 'HH':[
|
|
|
+
|
|
|
+ "https://///super.4dage.com/data/1204/edit/20220708_114250269.mp3",
|
|
|
+ "https://///super.4dage.com/data/1204/edit/20220708_114306331.mp3",
|
|
|
+ "https://///super.4dage.com/data/1204/edit/20220708_114432502.mp3",
|
|
|
+ "https://///super.4dage.com/data/1204/edit/20220708_114443468.mp3",
|
|
|
+ "https://///super.4dage.com/data/1204/edit/20220708_114453488.mp3",
|
|
|
+ "https://///super.4dage.com/data/1204/edit/20220708_114526161.mp3",
|
|
|
+ "https://///super.4dage.com/data/1204/edit/20220708_114534281.mp3",
|
|
|
+ "https://///super.4dage.com/data/1204/edit/20220708_114543407.mp3",
|
|
|
+ "https://///super.4dage.com/data/1204/edit/20220708_114615079.mp3",
|
|
|
+ "https://///super.4dage.com/data/1204/edit/20220708_114625749.mp3",
|
|
|
+ "https://///super.4dage.com/data/1204/edit/20220708_114634288.mp3",
|
|
|
+ "https://///super.4dage.com/data/1204/edit/20220708_114710872.mp3",
|
|
|
+ "https://///super.4dage.com/data/1204/edit/20220708_114720891.mp3",
|
|
|
+ "https://///super.4dage.com/data/1204/edit/20220708_114731411.mp3",
|
|
|
+ ]
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
var startIdle = function(){
|
|
|
+
|
|
|
+ var musicInfo = player.model.heroLocations[player.director.destinationItem[0]].musicInfo
|
|
|
+ console.log(musicInfo)
|
|
|
+ var musicSrc = musicInfo && musicInfo.music
|
|
|
+
|
|
|
animations.forEach((e,i)=>{
|
|
|
e.mesh.visible = true;
|
|
|
let a = getRandomItem(e.idleAnimation)
|
|
|
e.mesh.material.map = a.animation.texture
|
|
|
GifTexDeal.stop(e.walkAnimation)
|
|
|
- GifTexDeal.start(a )
|
|
|
+ musicGroup[e.name].some(e=>e.includes(musicSrc)) && 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,27 +483,64 @@ 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
|
|
|
- }
|
|
|
- ,
|
|
|
+ items: [[29,0],[30,0],[31,0],[32,0], [28,0]], //29蓝色隧道口 32隧道尾部
|
|
|
+ dis: 2.3, gap: 0.55
|
|
|
+ },
|
|
|
+
|
|
|
{
|
|
|
- items: [[15,0]], //137
|
|
|
- dis: 2.1,
|
|
|
- gap:-1
|
|
|
- }
|
|
|
- ,
|
|
|
+ items: [[16,0],[25,0]], //站到黄色展板上了
|
|
|
+ gap: 0.55, y: -0.47
|
|
|
+ },
|
|
|
+
|
|
|
{
|
|
|
- items: [[15,1]], //137
|
|
|
- dis: 2.1,
|
|
|
- gap:-0.56
|
|
|
+ items: [[21,0] ], //站到大众创业杆子后方了
|
|
|
+ dis: 2.1, gap: 0.45
|
|
|
} */
|
|
|
+
|
|
|
+ {
|
|
|
+ items: [[3,0],[6,0]],
|
|
|
+ y: 0.4
|
|
|
+ },
|
|
|
+ {
|
|
|
+ items: [ [5,0],[4,0] ],
|
|
|
+ y: 0.59
|
|
|
+ },
|
|
|
+ {
|
|
|
+ items: [ [8,0],[9,0],[10,0],[11,0] ],
|
|
|
+ y: 0.3
|
|
|
+ },
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ //站到黄色展板上了
|
|
|
+ {
|
|
|
+ items: [[13,0]],
|
|
|
+ dis:3.4, gap: 0.55, y: 0.1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ items: [[14,0],[15,0],[16,0],[18,0]],
|
|
|
+ dis:3.4, gap: 0.55, y: -0.6
|
|
|
+ },
|
|
|
+ {
|
|
|
+ items: [[19,0],[20,0],[21,0]],
|
|
|
+ dis:5, gap: 0.55 , y: -0.6
|
|
|
+ },
|
|
|
+ {
|
|
|
+ items: [[23,0],[24,0] ],
|
|
|
+ dis:2.4, gap: 0.55, y: -0.4
|
|
|
+ },
|
|
|
+
|
|
|
+ {
|
|
|
+ items: [ [25,0],[26,0]],
|
|
|
+ gap: 0.55, y: -0.45
|
|
|
+ },
|
|
|
]
|
|
|
|
|
|
|
|
@@ -462,19 +548,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 +591,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 +611,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 +647,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 +5527,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){
|
|
@@ -5804,6 +5916,8 @@ window.Modernizr = function(n, e, t) {
|
|
|
}
|
|
|
,
|
|
|
n.prototype.getMomentTour = function(destinationItem) {//add
|
|
|
+
|
|
|
+ //return 'std'
|
|
|
var wholeMomentTour = window.DATA.momentTour || "walk"; //最外层
|
|
|
|
|
|
if(!destinationItem) return wholeMomentTour
|
|
@@ -18265,30 +18379,51 @@ window.Modernizr = function(n, e, t) {
|
|
|
}else{
|
|
|
g_data2 = hotMatcher(e);
|
|
|
this.hotsCount = 0;
|
|
|
-
|
|
|
- //因为热点保存后在hots里的顺序会被修改,所以使用order来记录顺序,这里要重排序:
|
|
|
- if(e.hots){
|
|
|
- var sids = Object.keys(e.hots).sort((a,b)=>{return e.hots[a].order - e.hots[b].order});
|
|
|
- sids.forEach((sid)=>{
|
|
|
- e.hots[sid].sid = sid
|
|
|
- new Hot(e.hots[sid], e.hots[sid].version != 'multi' && "byHot" )
|
|
|
- })
|
|
|
+ let create = ()=>{
|
|
|
+
|
|
|
+ //因为热点保存后在hots里的顺序会被修改,所以使用order来记录顺序,这里要重排序:
|
|
|
+ if(e.hots){
|
|
|
+ var sids = Object.keys(e.hots).sort((a,b)=>{return e.hots[a].order - e.hots[b].order});
|
|
|
+ sids.forEach((sid)=>{
|
|
|
+ e.hots[sid].sid = sid
|
|
|
+
|
|
|
+ //if(e.hots[sid].texType == "shine" || e.hots[sid].texType == "photo" ){
|
|
|
+
|
|
|
+ //e.hots[sid].styleImg = []
|
|
|
+
|
|
|
+
|
|
|
+ new Hot(e.hots[sid], e.hots[sid].version != 'multi' && "byHot" )
|
|
|
+ //}
|
|
|
+ })
|
|
|
+ }
|
|
|
+
|
|
|
+ if(e.overlays){
|
|
|
+ e.overlays.forEach((info)=>{
|
|
|
+ //if(info.file.includes('m/data/762/edit/20210312_112357584.mp4') )return;
|
|
|
+ new Hot(info, 'byOverlay')
|
|
|
+ })
|
|
|
+ }
|
|
|
+ Hot.createHotList();
|
|
|
+ Hot.startLoad()
|
|
|
+ if(DATA.roomLabels){
|
|
|
+ DATA.roomLabels.forEach((data)=>{
|
|
|
+ this.roomLabels.push(new RoomLabel(data))
|
|
|
+ })
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
}
|
|
|
-
|
|
|
- if(e.overlays){
|
|
|
- e.overlays.forEach((info)=>{
|
|
|
- //if(info.file.includes('m/data/762/edit/20210312_112357584.mp4') )return;
|
|
|
- new Hot(info, 'byOverlay')
|
|
|
- })
|
|
|
- }
|
|
|
- Hot.createHotList();
|
|
|
- Hot.startLoad()
|
|
|
- if(DATA.roomLabels){
|
|
|
- DATA.roomLabels.forEach((data)=>{
|
|
|
- this.roomLabels.push(new RoomLabel(data))
|
|
|
- })
|
|
|
+ if(player.currentPano){
|
|
|
+ create()
|
|
|
+ }else{
|
|
|
+ let f = ()=>{
|
|
|
+ window.bus.removeEventListener('playerAndModelReady',f)
|
|
|
+ create()
|
|
|
+ }
|
|
|
+ window.bus.addEventListener('playerAndModelReady',f)
|
|
|
}
|
|
|
|
|
|
+
|
|
|
g_index = w.valueFromHash("m");
|
|
|
|
|
|
|
|
@@ -21990,7 +22125,7 @@ window.Modernizr = function(n, e, t) {
|
|
|
this.updateModel()
|
|
|
this.modeTran = ''
|
|
|
|
|
|
- window.bus.dispatchEvent({type:'playerAndModelReady'})
|
|
|
+
|
|
|
}
|
|
|
|
|
|
|
|
@@ -22628,6 +22763,7 @@ window.Modernizr = function(n, e, t) {
|
|
|
n.prototype.startInside = function(e, t, i, n, r) {
|
|
|
r = r || $.Deferred(),
|
|
|
this.currentPano = e;
|
|
|
+ window.bus.dispatchEvent({type:'playerAndModelReady'})
|
|
|
var o = e && !e.isAligned();
|
|
|
if (t = o ? e.position : t || e.position,
|
|
|
i = i || e.quaternion,
|
|
@@ -24060,11 +24196,11 @@ window.Modernizr = function(n, e, t) {
|
|
|
e = g.deepExtend({}, f[i], f[p + "-" + i]);
|
|
|
var I = void 0 !== o ? o : e.transitionTime;
|
|
|
this.emit(w.ModeChanging, p, i, n, I),
|
|
|
- n && (this.currentPano = n),
|
|
|
+ n && (this.currentPano = n),
|
|
|
this.switchCameraMode(i, c),
|
|
|
y.cancelById(V.LookTransition);
|
|
|
|
|
|
-
|
|
|
+ window.bus.dispatchEvent({type:'playerAndModelReady'})
|
|
|
|
|
|
//before fly---------------------
|
|
|
|
|
@@ -24392,7 +24528,7 @@ window.Modernizr = function(n, e, t) {
|
|
|
//var currentLocation = this.model.heroLocations[this.director.currentItem[0]]
|
|
|
|
|
|
var rotTime
|
|
|
- if(currentLocation.rotTime == void 0 || currentLocation.rotTime == ''){
|
|
|
+ /* if(currentLocation.rotTime == void 0 || currentLocation.rotTime == ''){
|
|
|
var restChildCount = currentLocation0.heroLocations ? (currentLocation0.heroLocations.length-this.director.currentItem[1]-1) : 0
|
|
|
var hasMusic = currentLocation0 && currentLocation0.musicInfo.music
|
|
|
if(hasMusic){
|
|
@@ -24410,7 +24546,10 @@ window.Modernizr = function(n, e, t) {
|
|
|
}else{
|
|
|
rotTime = currentLocation.rotTime * 1000
|
|
|
Log("rotTime "+rotTime +" at item "+this.director.currentItem,"#E8E")
|
|
|
- }
|
|
|
+ } */
|
|
|
+
|
|
|
+ rotTime = 600
|
|
|
+
|
|
|
|
|
|
startIdle();
|
|
|
this.path.waitNextStep(e, function() {
|