|
@@ -48,90 +48,6 @@ var getTransformSid = function(){
|
|
|
|
|
|
|
|
|
|
|
|
-/*
|
|
|
-var addMagnifier = function(){
|
|
|
-
|
|
|
- class Magnifier extends THREE.Object3D {
|
|
|
- constructor () {
|
|
|
- super()
|
|
|
-
|
|
|
- let circleGeo = new THREE.CircleGeometry(0.1, 100);
|
|
|
-
|
|
|
-
|
|
|
- this.camera = new THREE.PerspectiveCamera(50, 1, 0.1, 1); //fov aspect near far
|
|
|
-
|
|
|
- this.renderTarget = new THREE.WebGLRenderTarget(256,256, {
|
|
|
- minFilter: THREE.LinearFilter, magFilter: THREE.LinearFilter,
|
|
|
- format: THREE.RGBAFormat ,
|
|
|
- //type: THREE.FloatType,
|
|
|
- //minFilter: THREE.NearestFilter,
|
|
|
- //magFilter: THREE.NearestFilter,
|
|
|
-
|
|
|
- } )
|
|
|
-
|
|
|
-
|
|
|
- this.mesh = new THREE.Mesh(circleGeo, new THREE.MeshBasicMaterial({
|
|
|
- side: THREE.DoubleSide ,
|
|
|
- map: this.renderTarget.texture ,
|
|
|
- transparent:true,
|
|
|
- depthTest: !1,
|
|
|
- depthWrite: !1,
|
|
|
- }))
|
|
|
- this.overlayMesh = new THREE.Mesh(circleGeo, new THREE.MeshBasicMaterial({
|
|
|
- side: THREE.DoubleSide ,
|
|
|
- map: Texture.load('images/crosshair.png') ,
|
|
|
- transparent:true,
|
|
|
- depthTest: !1,
|
|
|
- depthWrite: !1,
|
|
|
- }))
|
|
|
- this.add(this.mesh)
|
|
|
- this.add(this.overlayMesh)
|
|
|
-
|
|
|
- player.model.add(this);
|
|
|
- player.magnifier = this;
|
|
|
-
|
|
|
- }
|
|
|
-
|
|
|
- update(aimPos){
|
|
|
-
|
|
|
- const magDistance_ = 0.3;
|
|
|
-
|
|
|
- var playerPos = player.position
|
|
|
- var vec = playerPos.clone().sub(aimPos).normalize().multiplyScalar(magDistance_)
|
|
|
- this.camera.position.copy(aimPos.clone().add(vec))
|
|
|
- this.camera.lookAt(aimPos)
|
|
|
-
|
|
|
-
|
|
|
- var playerCamera = player.camera
|
|
|
- this.quaternion.copy(playerCamera.quaternion);
|
|
|
-
|
|
|
- var pos2d = player.mouse.clone();
|
|
|
- var shift = 400;
|
|
|
- var clientHeight = player.domElement.clientHeight
|
|
|
- var clientY = - (pos2d.y - 1) * clientHeight / 2;
|
|
|
- pos2d.y = clientY < 300 ? pos2d.y - shift/clientHeight : pos2d.y + shift/clientHeight
|
|
|
- let newPos = new THREE.Vector3(pos2d.x,pos2d.y,0.7).unproject(playerCamera);
|
|
|
- this.position.copy(newPos)
|
|
|
-
|
|
|
-
|
|
|
- var renderer = player.sceneRenderer.renderer
|
|
|
- var oldAutoClear = renderer.autoClear
|
|
|
- renderer.autoClear = false
|
|
|
- //renderer.clear( true, true, true );
|
|
|
- renderer.render(player.sceneRenderer.scene, this.camera, this.renderTarget, true)
|
|
|
-
|
|
|
- renderer.autoClear = oldAutoClear
|
|
|
-
|
|
|
-
|
|
|
- }
|
|
|
- }
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
- new Magnifier()
|
|
|
-}
|
|
|
- */
|
|
|
|
|
|
var convertTool = {
|
|
|
getPos2d : function(point, camera, dom){//获取一个三维坐标对应屏幕中的二维坐标
|
|
@@ -14685,6 +14601,9 @@ window.Modernizr = function(n, e, t) {
|
|
|
data[i] == "false" && (data[i] = false)
|
|
|
}
|
|
|
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
progressUpdate(0.7);
|
|
|
StartLoad(); //xzw someData.js是我整合的 原本在html里 但这样每个场景的html都不一样了
|
|
|
if(data.weixinDesc){
|
|
@@ -14712,6 +14631,15 @@ window.Modernizr = function(n, e, t) {
|
|
|
})
|
|
|
|
|
|
}
|
|
|
+
|
|
|
+ {//初始化导览时间
|
|
|
+ if(DATA.tourBlackSpeed == void 0)DATA.tourBlackSpeed = 100
|
|
|
+ window._settings.warp.teleportTime = settings.teleportTime / DATA.tourBlackSpeed * 100;
|
|
|
+
|
|
|
+
|
|
|
+ if(DATA.tourWalkSpeed == void 0)DATA.tourWalkSpeed = 100
|
|
|
+ }
|
|
|
+
|
|
|
}).fail(e=>{
|
|
|
alert("缺少someData文件,请检查场景码是否正确。")
|
|
|
})
|
|
@@ -20949,17 +20877,21 @@ window.Modernizr = function(n, e, t) {
|
|
|
, s = new r.Vector3
|
|
|
, h = new r.Vector3
|
|
|
, u = function(e, t) {
|
|
|
+ //导览速度
|
|
|
var i = Math.min(this.player.position.distanceTo(e.position), c.transition.flytimeMaxDistanceThreshold)
|
|
|
- , r = i * c.transition.flytimeDistanceMultiplier + c.transition.flyTime;
|
|
|
+ // , r = i * c.transition.flytimeDistanceMultiplier + c.transition.flyTime;
|
|
|
+ , r = i * c.warp.flytimeDistanceMultiplier + c.warp.flyTime;
|
|
|
+
|
|
|
+
|
|
|
h.copy(A.FORWARD),
|
|
|
this.player.getDirection(h),
|
|
|
s.copy(t).sub(e.position).normalize();
|
|
|
var l = s.dot(h)
|
|
|
, u = Math.acos(l)
|
|
|
, d = u / r;
|
|
|
- return d > n && (r *= d / n,
|
|
|
- u < o && (r *= a)),
|
|
|
- r
|
|
|
+ d > n && (r *= d / n,
|
|
|
+ u < o && (r *= a))
|
|
|
+ return r / DATA.tourWalkSpeed * 100 // 改
|
|
|
};
|
|
|
return function(e, t, i) {
|
|
|
if (this.warpInterrupted)
|
|
@@ -23814,18 +23746,18 @@ window.Modernizr = function(n, e, t) {
|
|
|
this.history.invalidate();
|
|
|
this.path.discardSlow();
|
|
|
//xzw:
|
|
|
+
|
|
|
+ var timeEachItem = 2e3 / (DATA.tourWalkSpeed + DATA.tourBlackSpeed) * 200 //预估时间假设每个item飞的时间
|
|
|
var currentLocation = this.model.heroLocations[this.director.currentItem[0]]
|
|
|
var rotTime
|
|
|
if(currentLocation.rotTime == void 0 || currentLocation.rotTime == ''){
|
|
|
var restChildCount = currentLocation.heroLocations ? (currentLocation.heroLocations.length-this.director.currentItem[1]-1) : 0
|
|
|
var audioObj = SoundManager.list.find(e=>e.name == 'tour')
|
|
|
var current = audioObj.audio.currentTime * 1e3 // || 0 //g_tourAudio ? 1e3 * g_tourAudio.currentTime : 0
|
|
|
- rotTime = currentLocation && currentLocation.musicInfo.music ? currentLocation.musicInfo.time - current : 2e3;
|
|
|
+ rotTime = currentLocation && currentLocation.musicInfo.music ? currentLocation.musicInfo.time - current : timeEachItem;
|
|
|
|
|
|
if(restChildCount){//如果当前folder中还有剩下的item,平分一下时间
|
|
|
- var timeEachItem = 2000;//假设每个item飞的时间
|
|
|
var rotTime = (rotTime-timeEachItem*restChildCount) / (restChildCount+1);
|
|
|
-
|
|
|
}
|
|
|
rotTime = Math.max(0, rotTime)
|
|
|
console.log("rotTime "+rotTime +" at item "+this.director.currentItem + ",musicCurrentTime:"+current)
|
|
@@ -26497,6 +26429,11 @@ window.Modernizr = function(n, e, t) {
|
|
|
blur: .33,
|
|
|
fastTime: 1500,
|
|
|
teleportTime: 1500,//瞬间过渡的时间
|
|
|
+
|
|
|
+ flytimeDistanceMultiplier:150,//add
|
|
|
+ flyTime:750,//add
|
|
|
+
|
|
|
+
|
|
|
outsideTime: 2e3,
|
|
|
lookAheadMax: .3,
|
|
|
lookAheadDist: 2.5,
|
|
@@ -58430,7 +58367,90 @@ function initTransitionPass(THREE){
|
|
|
|
|
|
}
|
|
|
}
|
|
|
+/*
|
|
|
+var addMagnifier = function(){
|
|
|
|
|
|
+ class Magnifier extends THREE.Object3D {
|
|
|
+ constructor () {
|
|
|
+ super()
|
|
|
+
|
|
|
+ let circleGeo = new THREE.CircleGeometry(0.1, 100);
|
|
|
+
|
|
|
+
|
|
|
+ this.camera = new THREE.PerspectiveCamera(50, 1, 0.1, 1); //fov aspect near far
|
|
|
+
|
|
|
+ this.renderTarget = new THREE.WebGLRenderTarget(256,256, {
|
|
|
+ minFilter: THREE.LinearFilter, magFilter: THREE.LinearFilter,
|
|
|
+ format: THREE.RGBAFormat ,
|
|
|
+ //type: THREE.FloatType,
|
|
|
+ //minFilter: THREE.NearestFilter,
|
|
|
+ //magFilter: THREE.NearestFilter,
|
|
|
+
|
|
|
+ } )
|
|
|
+
|
|
|
+
|
|
|
+ this.mesh = new THREE.Mesh(circleGeo, new THREE.MeshBasicMaterial({
|
|
|
+ side: THREE.DoubleSide ,
|
|
|
+ map: this.renderTarget.texture ,
|
|
|
+ transparent:true,
|
|
|
+ depthTest: !1,
|
|
|
+ depthWrite: !1,
|
|
|
+ }))
|
|
|
+ this.overlayMesh = new THREE.Mesh(circleGeo, new THREE.MeshBasicMaterial({
|
|
|
+ side: THREE.DoubleSide ,
|
|
|
+ map: Texture.load('images/crosshair.png') ,
|
|
|
+ transparent:true,
|
|
|
+ depthTest: !1,
|
|
|
+ depthWrite: !1,
|
|
|
+ }))
|
|
|
+ this.add(this.mesh)
|
|
|
+ this.add(this.overlayMesh)
|
|
|
+
|
|
|
+ player.model.add(this);
|
|
|
+ player.magnifier = this;
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ update(aimPos){
|
|
|
+
|
|
|
+ const magDistance_ = 0.3;
|
|
|
+
|
|
|
+ var playerPos = player.position
|
|
|
+ var vec = playerPos.clone().sub(aimPos).normalize().multiplyScalar(magDistance_)
|
|
|
+ this.camera.position.copy(aimPos.clone().add(vec))
|
|
|
+ this.camera.lookAt(aimPos)
|
|
|
+
|
|
|
+
|
|
|
+ var playerCamera = player.camera
|
|
|
+ this.quaternion.copy(playerCamera.quaternion);
|
|
|
+
|
|
|
+ var pos2d = player.mouse.clone();
|
|
|
+ var shift = 400;
|
|
|
+ var clientHeight = player.domElement.clientHeight
|
|
|
+ var clientY = - (pos2d.y - 1) * clientHeight / 2;
|
|
|
+ pos2d.y = clientY < 300 ? pos2d.y - shift/clientHeight : pos2d.y + shift/clientHeight
|
|
|
+ let newPos = new THREE.Vector3(pos2d.x,pos2d.y,0.7).unproject(playerCamera);
|
|
|
+ this.position.copy(newPos)
|
|
|
+
|
|
|
+
|
|
|
+ var renderer = player.sceneRenderer.renderer
|
|
|
+ var oldAutoClear = renderer.autoClear
|
|
|
+ renderer.autoClear = false
|
|
|
+ //renderer.clear( true, true, true );
|
|
|
+ renderer.render(player.sceneRenderer.scene, this.camera, this.renderTarget, true)
|
|
|
+
|
|
|
+ renderer.autoClear = oldAutoClear
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ new Magnifier()
|
|
|
+}
|
|
|
+ */
|
|
|
|
|
|
/*
|
|
|
笔记:
|