"); //-->
推荐:将NSDT场景编辑器加入你3D工具链
其他工具系列:NSDT简石数字孪生
为了使用鼠标操作三维场景,可以借助three.js众多控件之一OrbitControls.js,可以在下载的three.js-master文件中找到(three.js-master\examples\js\controls)。 然后和引入three.js文件一样在html文件中引入控件OrbitControls.js。本节课的目的不是为了深入讲解OrbitControls.js,主要目的一方面向大家展示下threejs的功能,另一方面后面课程学习过程中经常会通过鼠标旋转、缩放模型进行代码调试。
代码实现OrbitControls.js控件支持鼠标左中右键操作和键盘方向键操作,具体代码如下,使用下面的代码替换1.1节中renderer.render(scene,camera);即可。
function render() {
renderer.render(scene,camera);//执行渲染操作
}
render();
var controls = new THREE.OrbitControls(camera,renderer.domElement);//创建控件对象
controls.addEventListener('change', render);//监听鼠标、键盘事件OrbitControls.js控件提供了一个构造函数THREE.OrbitControls(),把一个相机对象作为参数的时候,执行代码new THREE.OrbitControls(camera,renderer.domElement),浏览器会自动检测鼠标键盘的变化, 并根据鼠标和键盘的变化更新相机对象的参数,比如你拖动鼠标左键,浏览器会检测到鼠标事件,把鼠标平移的距离按照一定算法转化为相机的的旋转角度,你可以联系生活中相机拍照,即使景物没有变化,你的相机拍摄角度发生了变化,自然渲染器渲染出的结果就变化了,通过定义监听事件controls.addEventListener('change', render),如果你连续操作鼠标,相机的参数不停的变化,同时会不停的调用渲染函数render()进行渲染,这样threejs就会使用相机新的位置或角度数据进行渲染。
执行构造函数THREE.OrbitControls()浏览器会同时干两件事,一是给浏览器定义了一个鼠标、键盘事件,自动检测鼠标键盘的变化,如果变化了就会自动更新相机的数据, 执行该构造函数同时会返回一个对象,可以给该对象添加一个监听事件,只要鼠标或键盘发生了变化,就会触发渲染函数。 关于监听函数addEventListener介绍可以关注文章《HTML5事件》。
场景操作缩放:滚动—鼠标中键
旋转:拖动—鼠标左键
平移:拖动—鼠标右键
如果threejs代码中通过requestAnimationFrame()实现渲染器渲染方法render()的周期性调用,当通过OrbitControls操作改变相机状态的时候,没必要在通过controls.addEventListener('change', render)监听鼠标事件调用渲染函数,因为requestAnimationFrame()就会不停的调用渲染函数。
function render() {
renderer.render(scene,camera);//执行渲染操作
// mesh.rotateY(0.01);//每次绕y轴旋转0.01弧度
requestAnimationFrame(render);//请求再次执行渲染函数render
}
render();
var controls = new THREE.OrbitControls(camera,renderer.domElement);//创建控件对象
// 已经通过requestAnimationFrame(render);周期性执行render函数,没必要再通过监听鼠标事件执行render函数
// controls.addEventListener('change', render)注意开发中不要同时使用requestAnimationFrame()或controls.addEventListener('change', render)调用同一个函数,这样会冲突。
专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们
相关推荐
这个论坛的编辑器用着怎么样?
汽车车载3D技术应用助力实现安全驾驶
英飞凌与英伟达利用数字孪生加速人形机器人
AI 全域数字孪生加速半导体与电子系统研发落地
三网融合基本型高清互动机顶盒解决方案
MPLAB IDE集成开发环境用户指南
[讨论]Amine,Tornado的编辑器真气蛋,不知你遇到过没有!
多裸片芯片设计中凸点与硅通孔的高效规划方案
SoC 集成度如何影响 SMT 贴片良率
3D,MEMS 推荐3D-MEMS高精度绝压传感器与高精度磁感传感器
3D,MEMS 3D-MEMS加速度与倾角传感器及高精度绝压传感器
3D透视校正纹理映射矩阵电路设计及实现
3D眼镜
晶圆厂与封装厂自动化迎来设备和方法论变革
如何让2声道喇叭輸出6声道音效 PDF资料
数字孪生:云的极限
大尺度抽象化竞赛启幕,数据中心迎来全新变革
三网融合增强型高清互动机顶盒解决方案
数字孪生:云阔凭鱼跃,天高任鸟飞
达索系统与英伟达围绕虚拟孪生构建工业人工智能平台
多材料3D打印机“现场”制造整台电动机
三维立体印刷光盘解决方案
高性能嵌入式工作区 (HEW) V.4.04 用户手册
液晶字模编辑器
CCS编辑器的怪问题:不能编辑源文件!