three.js中3 d视野的缩放实现代码

  

通过Threejs基础学习,修改版知道创建一个相机的相关知识点

        var相机=new三人。PerspectiveCamera (fov,方面,近,远);      

视野角:fov这里视野角(有的地方叫拍摄距离)越大,场景中的物体越小,视野角越小,场景中的物体越大
  纵横比:aspect ,(3 d物体的宽/高比例)
  相机离视体积最近的距离:
附近   相机离视体积最远的距离:远
  其中视场视野角(拍摄距离)越大,场景中的物体越小.fov视野角(拍摄距离)越小,场景中的物体越大。

  

三。js中3 d视野的缩放实现代码  three.js中3 d视野的缩放实现代码

  

透视相机(近大远小),PerspectiveCamera 
  

     //透视照相机参数设置   var fov=45//拍摄距离视野角值越大,场景中的物体越?/=1附近相机离视体积最近的距离=1000,//相机离视体积最远的距离   方面=窗口。innerWidth/window.innerHeight;//纵横比   var相机=new三人。PerspectiveCamera (fov,方面,近,远);   之前      

改变fov的值,并更新这个照相机
  

     //改变fov值,并更新场景的渲染   相机。fov=视场;   camera.updateProjectionMatrix ();   渲染器。呈现(场景、摄像头等);//updateinfo ();   之前      

鼠标上下滑轮实现放大缩小效果,代码如下
  

     //监听鼠标滚动事件   画布。addEventListener (mousewheel, mousewheel、虚假);   之前         //鼠标滑轮——鼠标上下滑轮实现放大缩小效果   函数mousewheel (e) {   e.preventDefault ();//e.stopPropagation ();   如果(e.wheelDelta){//判断浏览器即谷歌滑轮事件   如果(e。wheelDelta祝辞0){//当滑轮向上滚动时   fov -=(附近& lt;fov & # 63;1:0);   }   如果(e。wheelDelta & lt;0){//当滑轮向下滚动时   fov +=(fov & lt;& # 63;1:0);   }   }else if (e.detail) {//Firefox滑轮事件   如果(e.detail比;0){//当滑轮向上滚动时   fov -=1;   }   如果(e.detail & lt;0){//当滑轮向下滚动时   fov +=1;   }   }//改变fov值,并更新场景的渲染   相机。fov=视场;   camera.updateProjectionMatrix ();   渲染器。呈现(场景、摄像头等);//updateinfo ();   }   之前      

实现效果完整代码,标注具体案例为个人原创

        & lt; !DOCTYPE html>   & lt; html>   & lt; head>   & lt;元charset=皍tf - 8”比;   & lt; title> threejs中3 d视野的缩放& lt;/title>   & lt; style>   # canvas-frame {   宽度:100%;   身高:600 px;   }   & lt;/style>   & lt;/head>   & lt; body>   & lt; div id=" canvas-frame "祝辞& lt;/div>   & lt;/body>   & lt;脚本type=" text/javascript " src=" https://www.yisu.com/zixun/lib/three.js "祝辞& lt;/script>   & lt;脚本type=" text/javascript祝辞   var渲染器,//渲染器   宽度=. getelementbyid (“canvas-frame”)。clientWidth,//画布宽   身高=. getelementbyid (canvas-frame) .clientHeight;//画布高//照相机配置   var fov=45//拍摄距离视野角值越大,场景中的物体越?/=1附近最小范围   远=1000;//最大范围//DOM对象   画布var=零;//初始化DOM对象   函数initDOM () {   帆布=. getelementbyid (“canvas-frame”);   }//初始化渲染器   函数initThree () {   渲染器=new THREE.WebGLRenderer ({   平滑:真//画布:. getelementbyid (“canvas-frame”)   });   渲染器。setSize(宽度、高度);   渲染器。setClearColor (0 xffffff, 1.0);   . getelementbyid (canvas-frame) .appendChild (renderer.domElement);   渲染器。setClearColor (0 xffffff, 1.0);   }//初始化场景   var场景;   函数initScene () {   现?new THREE.Scene ();   }   var相机;   函数initCamera(){//透视相机   相机=new三人。PerspectiveCamera (fov,宽/高,近、远);   camera.position。x=150;   camera.position。y=150;   camera.position。z=250;   camera.up。x=0;   camera.up。y=1;//相机朝向——相机上方为y轴   camera.up。z=0;   相机。看看人家({//相机的中心点   x: 0,   y: 0,   z: 0   });   }   函数initLight () {//光——这里使用环境光//var=new THREE.DirectionalLight光(0 xffffff);/*方向性光源*///light.position。集(600、1000、800);/*光var=new THREE.AmbientLight (0 xffffff);//模拟漫反射光源   light.position。集(600、1000、800);//使用环境光时可以忽略方向和角度,只考虑光源的位置   scene.add(光);*/}   函数initObject(){//初始化对象//初始化地板   initFloor ();   }   函数initGrid(){//辅助网格   var助手=new三人。GridHelper(1000年,50);   帮手。改变颜色(0 x0000ff, 0 x808080);   现场。添加(辅助);   }   函数initFloor () {//创建一个立方体   var几何=new三人。BoxGeometry (80, 80);   (var=0;我& lt;geometry.faces.length;我+=2){   var十六进制=math . random () * 0 xffffff;   几何学。(我).color。setHex(十六进制);   几何学。(i + 1) .color。setHex(十六进制);   }   var=new三个材料。MeshBasicMaterial ({vertexColors: 3。FaceColors});//将材料材料添加到几何体几何   var网=new三人。网格(几何、材料);   网。位置=new THREE.Vector3 (0, 0, 0);   scene.add(网);   }//初始化页面加载   函数threeStart () {//初始化DOM对象   initDOM ();//初始化渲染器   initThree ();//初始化场景   initScene ();//初始透视化相机   initCamera ();//初始化光源   initLight ();//模型对象   initObject ();//初始化网格辅助线   initGrid ();//渲染   渲染器。呈现(场景、摄像头等);//实时动画//动画();//监听鼠标滚动事件   画布。addEventListener (mousewheel, mousewheel、虚假);   }   函数动画(){//相机围绕y轴旋转,并且保持场景中的物体一直再相机的视野中//实时渲染成的像   var计时器=Date.now () * 0.0001;   camera.position。x=Math.cos(计时器)* 100;   camera.position。z=sin(计时器)* 100;   camera.lookAt (scene.position);   渲染器。呈现(场景、摄像头等);   requestAnimationFrame(动画);   }//鼠标滑轮——鼠标上下滑轮实现放大缩小效果   函数mousewheel (e) {   e.preventDefault ();//e.stopPropagation ();   如果(e.wheelDelta){//判断浏览器即谷歌滑轮事件   如果(e。wheelDelta祝辞0){//当滑轮向上滚动时   fov -=(附近& lt;fov & # 63;1:0);   }   如果(e。wheelDelta & lt;0){//当滑轮向下滚动时   fov +=(fov & lt;& # 63;1:0);   }   }else if (e.detail) {//Firefox滑轮事件   如果(e.detail比;0){//当滑轮向上滚动时   fov -=1;   }   如果(e.detail & lt;null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null   null

three.js中3 d视野的缩放实现代码