|
@@ -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),
|