使用此javascript多维数据集函数在页面加载时放大多维数据集

使用此javascript多维数据集函数在页面加载时放大多维数据集,javascript,three.js,Javascript,Three.js,我现在有下面的代码,当页面加载时,我希望立方体缩小并停止..我怎么做..我是3js新手,所以不知道..我希望它从一个小立方体开始,然后以一个大立方体的形式出现并停止 //var resultlabel=(document.getElementById('resultvalue').innerHTML); //如果(resultlabel==0){ var容器 摄像机、控件、场景、渲染器; var对象=[]; var plane=新的三个平面(); var raycaster=new THRE

我现在有下面的代码,当页面加载时,我希望立方体缩小并停止..我怎么做..我是3js新手,所以不知道..我希望它从一个小立方体开始,然后以一个大立方体的形式出现并停止


//var resultlabel=(document.getElementById('resultvalue').innerHTML);
//如果(resultlabel==0){
var容器
摄像机、控件、场景、渲染器;
var对象=[];
var plane=新的三个平面();
var raycaster=new THREE.raycaster();
var mouse=new THREE.Vector2(),
偏移量=新的3.Vector3(),
交点=新的三个。向量3(),
交叉的,选定的;
init();
制作动画();
函数init(){
container=document.getElementById('canvas1');
摄像机=新的三个透视摄像机(70,容器。偏网线/容器。偏网线,11000);
//摄像机位置z=2000;
摄像机。位置。设置(3000,3000,3000);
//摄像机位置设置(100010001000);
控件=新的三个轨迹球控件(摄像头、容器)//**
controls.rotateSpeed=1.0;
controls.zoomSpeed=1.2;
控制点速度=0.8;
controls.noZoom=false;
controls.noPan=false;
controls.staticMoving=true;
controls.dynamicDampingFactor=0.3;
场景=新的三个。场景();
var方向灯=新的三个方向灯(0x50505);
场景。添加(方向光);
//var resultlabel=(document.getElementById('resultvalue').innerHTML);
//如果(resultlabel==0){
var geometry=新的3.BoxGeometry(500500500);
var ax=ay=az=0;
对于(变量i=0;i<1;i++){
var object=new THREE.Mesh(几何体,new THREE.MeshLambertMaterial({ambient:0xffffff,map:THREE.ImageUtils.loadTexture('/imgs/12.jpg'))});
object.position.x=ax;
object.position.y=ay;
object.position.z=az;
object.scale.x=2;
object.scale.y=2;
object.scale.z=2;
场景。添加(对象);
灯光=新的三方向灯光(0x666699);
光。位置。设置(0,1,0);
场景。添加(灯光);
灯光=新的三方向灯光(0x666699);
光。位置。设置(0,-1,0);
场景。添加(灯光);
//背
灯光=新的三方向灯光(0x666699);
光位置设置(1,0,0);
场景。添加(灯光);
//正面
灯光=新的三方向灯光(0x666699);
灯光位置设置(-1,0,0);
场景。添加(灯光);
//对
灯光=新的三方向灯光(0x666699);
光。位置。设置(0,0,1);
场景。添加(灯光);
//左
灯光=新的三方向灯光(0x666699);
光。位置。设置(0,0,-1);
场景。添加(灯光);
对象。推(对象);
}
var material=new THREE.MeshPhongMaterial({map:THREE.ImageUtils.loadTexture('/1.png')});
var mesh=新的三个网格(几何体、材质);
场景。添加(网格);
renderer=new THREE.WebGLRenderer({antialas:true});
renderer.setClearColor(0xF0);
renderer.setPixelRatio(container.devicePixelRatio);
设置大小(container.offsetWidth-4,container.offsetHeight-4);
renderer.sortObjects=false;
renderer.shadowMap.enabled=true;
renderer.shadowMap.type=THREE.PCFShadowMap;
container.appendChild(renderer.domeElement);
统计数据=新统计数据();
appendChild(stats.dom);
addEventListener('resize',onWindowResize,false);
}
函数onWindowResize(){
camera.aspect=window.innerWidth/window.innerHeight;
camera.updateProjectMatrix();
renderer.setSize(window.innerWidth、window.innerHeight);
}
函数animate(){
请求动画帧(动画);
render();
stats.update();
}
函数render(){
控件更新();
渲染器。渲染(场景、摄影机);
}

您可以使用THREE.Vector3.lerp获得平滑动画

声明一个矢量3,将您的相机放置在其中:

var destPosition = new THREE.Vector3(1000,1000,1000);
并在动画循环中写入:

camera.position = camera.position.lerp(destPosition, alpha);
其中alpha是介于0和1之间的值,并确定相机将在每个循环中移动多远


这是一个快速的技巧,有一些缺陷,比如你永远不会真正到达目标位置(只是非常接近)。阅读线性插值以获得更深入的理解。祝你好运!

你可以使用THREE.Vector3.lerp获得平滑的动画

声明一个矢量3,将您的相机放置在其中:

var destPosition = new THREE.Vector3(1000,1000,1000);
并在动画循环中写入:

camera.position = camera.position.lerp(destPosition, alpha);
其中alpha是介于0和1之间的值,并确定相机将在每个循环中移动多远

这是一个快速的技巧,可以让它运行起来,并且有一些缺陷,比如你永远不会真正到达目的地(jus)