环境:

  • threejs:129 (在浏览器的控制台下输入: window.__THREE__即可查看版本)
  • vscode
  • window
  • edge

透视相机或正交相机都有一个zoom参数,它可以用来将相机排到的内容在canvas上缩放显示。

要点:

  • 设置zoom后要调用 camera.updateProjectionMatrix();
  • zoom默认是1,它的取值就像是手机拍照一样。值变大,画面放大,看到的变少;值变小,画面缩小,看到的变多;
  • 调整zoom对正交相机来说就像是临时调整了它所拍到的边界,即:left/right/top/bottom,但实际上又没有改;

一、示例:正交相机

先定义个canvas(500*500大小):

<canvas ref="canvas" width="500" height="500" style="margin:50px"></canvas>

创建场景和相机:

let scene = new Three.Scene();
let renderer = new Three.WebGLRenderer({ canvas: canvasDom });
let camera = new Three.OrthographicCamera(-250, 250, 250, -250, 1, 1000);
camera.zoom = 1;//改为2,将看到原画面的一半
camera.updateProjectionMatrix();
camera.position.set(0, 100, 0);
camera.lookAt(0, 0, 0);

添加网格线:

const size = 500;
const divisions = 10;
const gridHelper = new Three.GridHelper(size, divisions);
scene.add(gridHelper);

开始渲染:

(function animate() {requestAnimationFrame(animate);renderer.render(scene, camera);
})()

现在观察:




二、验证:zoom 对正交相机来说,等同于是临时修改相机的 left/right/top/bottom

在场景中加入半径为500的球体:

let mesh = new Three.Mesh(new Three.SphereGeometry(500, 16, 8), new Three.MeshBasicMaterial({ color: 0xff0000, wireframe: true }))
scene.add(mesh)

调整zoom=0.5,观察效果:

三、正交相机结合 OrbitControls

3.1 OrbitControls 默认改变的是相机的zoom

除了上面我们可以自己调节zoom取值外,OrbitControls 也是通过更改zoom实现视图的缩放的,如下:

//创建控制器
new OrbitControls(camera, renderer.domElement);//渲染的时候打印相机参数
(function animate() {requestAnimationFrame(animate);renderer.render(scene, camera);console.log(`camera2.left=${camera.left},camera2.right=${camera.right} zoom=${camera.zoom}`)
})()

观察效果:

3.2 OrbitControls 的移动是改动的相机的位置

three.js入门二:相机的zoom参数相关推荐

  1. js实现二维码携带参数

    <!-- 显示二维码 --><div ref="qrcodeDom" class="qrClass"></div>impor ...

  2. android 原生开发 3d地图 下载_arcgis api 3.x for js 入门开发系列二不同地图服务展示(附源码下载)...

    前言 关于本篇功能实现用到的 api 涉及类看不懂的,请参照 esri 官网的 arcgis api 3.x for js:esri 官网 api,里面详细的介绍 arcgis api 3.x 各个类 ...

  3. js入门笔记整理(二)——操作符

    上一篇:js入门笔记整理 一元操作符 递增 递增分为前置递增和后置递增 前置型--两个加号(++)放在前面 var num = 1;++num; 这个操作其实就是给num加1,上面的列子等效于: va ...

  4. 【带着canvas去流浪(11)】Three.js入门学习笔记

    [摘要] three.js 入门学习笔记 示例代码托管在:http://www.github.com/dashnowords/blogs 一. 资料推荐及建议 1.官方文档 很详细,但是API部分单独 ...

  5. React.js入门笔记

    # React.js入门笔记 核心提示 这是本人学习react.js的第一篇入门笔记,估计也会是该系列涵盖内容最多的笔记,主要内容来自英文官方文档的快速上手部分和阮一峰博客教程.当然,还有我自己尝试的 ...

  6. Ember.js入门教程、博文汇总

    第一章 对象模型 Ember.js 入门指南--类的定义.初始化.继承 Ember.js 入门指南--类的扩展(reopen) Ember.js 入门指南--计算属性(compute properti ...

  7. Vue.js入门教程-组件注册

    一.组件创建 1.1 创建步骤 创建Vue的组件都有三个基本步骤是 [①创建组件构造器.②注册组件和③使用组件]. 1.2 基本示例 比如,我们创建一个Button组件. // 1. 创建一个组件构造 ...

  8. 数据可视化js框架 d3.js入门

    数据可视化js框架 d3.js入门 [一] 选择元素绑定数据 1.下载.引入d3.js 2.d3.select():选择所有指定元素的第一个 3.d3.selectAll() :选择指定元素的全部 e ...

  9. Three.js入门——画星空(star field)

    Three.js是一个很流行的3D JavaScript库.这里有一个three.js的入门教程,在浏览器窗口中画出星空.我按照教程重新实现了一遍,这里的这篇博客把教程大致翻译了一遍.我的demo.T ...

  10. Three.js入门指南

    1.threejs导入3d模型到web端,3d模型的文件格式可以找个建模软件转化为threejs所支持的格式,如.dae .obj .mtl stl gld等 harp.gl 3D地图渲染引擎 key ...

最新文章

  1. javascript高级程序设计之BOM
  2. python脚本在命令行中传递参数(附字符查找小案例)
  3. 计算机类农学类牧医类,考生注意!2017年高考报考类别确定
  4. .NET CORE(C#) WPF亚克力窗体
  5. 有哪些英文论文查重软件值得推荐?
  6. 生物化学,材料化学必备!元素周期表
  7. 直接学python3_初学者可以直接学Python3吗?
  8. 第08篇:Mybatis事务处理
  9. dell笔记本安装win7.ios
  10. 如何修改Recovery的字符串资源
  11. 163vip邮箱登录,163邮箱怎么登陆?如何登录163vip邮箱?
  12. python中text格式_python读取各种格式的文本
  13. 智慧工地无线覆盖重点产品人员定位和移动考勤
  14. 蓝桥杯2017年第八届真题-对局匹配
  15. 火车头采集器文章组合聚合
  16. 作为程序员,我想养成的几个爱好
  17. R语言初级教程(04): 算术运算
  18. 12月最新仿知音漫画网站源码+手机端,小说漫画生成静态文件,超强负载量安全可靠
  19. Springboot整合WebSocket实现网页版聊天,快来围观!
  20. JQuery EasyUI后台UI框架使用连载

热门文章

  1. win10+QT5.15+cryptopp562 完整配置开发
  2. 建皓设计院综合信息管理系统v3.2
  3. (Python sklearn+LogisticRegression)实现乳腺癌预测
  4. Twitter正在中国着
  5. box-orient css,box-orient
  6. 手把手教用matlab做无人驾驶(十六)--Reeds-Shepp 曲线
  7. 基于Linux的SPI驱动框架源码分析(全文3万字)
  8. gre可以用计算机,GRE考试 | 数学部分你需要注意的这几项!
  9. CSS 多行文本最后省略号“...” 多行文本最后一行超出的部分隐藏并显示省略号的方法
  10. C语言——自定义类型(结构体、枚举、联合)