代码拉取完成,页面将自动刷新
同步操作将从 JL/what-is-the-mercator-projection 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
import {
Math as _Math,
Vector3
} from 'three'
const origin = new Vector3();
function Transition( geometry, from, to, duration, camera, cameraFrom, cameraTo ) {
this.to = to;
this.from = from;
this.duration = duration;
this.progress = 0;
this.startAt = 0;
this.playing = false;
this.resetCamera = cameraFrom && cameraTo;
this.cameraFrom = cameraFrom;
this.cameraTo = cameraTo;
this.geometry = geometry;
this.start = () => {
this.playing = true;
this.startAt = Date.now();
}
this.stop = () => {
this.playing = false;
}
this.update = () => {
if ( !this.playing ) return;
this.progress = _Math.clamp( ( Date.now() - this.startAt ) / this.duration, 0, 1 );
this.geometry.vertices.map( ( v, i ) => {
const v1 = this.from[ i ];
const v2 = this.to[ i ];
v.lerpVectors( v1, v2, this.progress );
} )
this.geometry.verticesNeedUpdate = true;
if ( this.resetCamera ) {
camera.position.lerpVectors( this.cameraFrom, this.cameraTo, this.progress );
camera.lookAt( origin );
}
if ( this.progress === 1 ) {
this.playing = false;
}
}
}
export { Transition }
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。