通过Threejs基础学习,修改版知道创建一个相机的相关知识点
var相机=new三人。PerspectiveCamera (fov,方面,近,远);
视野角:fov这里视野角(有的地方叫拍摄距离)越大,场景中的物体越小,视野角越小,场景中的物体越大
纵横比:aspect ,(3 d物体的宽/高比例)
相机离视体积最近的距离:
附近
相机离视体积最远的距离:远
其中视场视野角(拍摄距离)越大,场景中的物体越小.fov视野角(拍摄距离)越小,场景中的物体越大。
透视相机(近大远小),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 nullthree.js中3 d视野的缩放实现代码