three.js从入门到精通系列教程016 - three.js通过OrbitControls对立方体实现旋转和缩放

<!DOCTYPE html>
<html><head><meta charset="UTF-8"><title>three.js从入门到精通系列教程016 - three.js通过OrbitControls对立方体实现旋转和缩放</title><script src="ThreeJS/three.js"></script><script src="ThreeJS/jquery.js"></script><script src="ThreeJS/OrbitControls.js"></script>
</head><body><center id="myContainer"></center><script>/*通过OrbitControls.js可以对Threejs 的三维场景进行缩放,平移,旋转操作,其本质上改变的幷不是场景,而是相机的参数。OrbitControls.js使用鼠标操作:通过拖动鼠标左键可以720旋转展示三维场景,通过拖动鼠标右键可以平移三维场景,通过上下滚动鼠标中键可以缩放三维场景。1.创建控件对象var control = new THREE.OrbitControls(camera);2.禁止使用旋转,缩放,平移control.enableRotate = false; //禁止旋转control.enablePan = false; //禁止平移control.enableZoom = false;//禁止缩放3.启用旋转,缩放,平移control.enableRotate =true; //启用旋转control.enablePan = true; //启用平移control.enableZoom =true;//启用缩放4.设置缩放范围使用 正投用相机对象  OrthographicCamera control.minZoom = 0.5;control.maxZoom = 2;使用 相机空间对象 OrbitControls//透视投影相机:相机距离目标观察点距离越远显示越小,距离越近显示越大//相机距离观察目标点极小距离——模型最大状态control.minDistance = 200;//相机距离观察目标点极大距离——模型最小状态control.maxDistance = 500;5.设置旋转范围// 上下旋转范围control.minPolarAngle = 0;control.maxPolarAngle = Math.PI;// 左右旋转范围control.minAzimuthAngle = -Math.PI * (100 / 180);control.maxAzimuthAngle = Math.PI * (100 / 180);6.变化事件change有些静态场景不需要一直周期性调用渲染函数渲染场景,而且鼠标旋转缩放场景的时候才重新渲染,此时可以使用相机空间OrbitControls的变化时间change监听出发函数调用渲染函数rendercontrol.addEventListener('change', render);7.相机空间的作用窗口范围使用相机空间OrbitControls创建一个相机空间对象的时候,默认情况下,在浏览器的窗口整个内容区域body发生鼠标事件都会旋转、平移或缩放三维场景。但是在实际应用中如果需要控制OrbitControls的作用范围,你需要通过OrbitControls构造函数的第二个参数设置。var control = new THREE.OrbitControls(camera, renderer.domElement);8.相机查看目标执行THREE.OrbitControls构造函数时候,默认设置.target属性的值是Vector3(0,0,0),如果在执行new THREE.OrbitControls之前设置了camera.lookAt(特定位置);相当于再次设置camera.lookAt(new THREE.Vector3(0,0,0));*///创建渲染器var myRenderer = new THREE.WebGLRenderer({ antialias: true });myRenderer.setSize(window.innerWidth, window.innerHeight);myRenderer.setClearColor('white', 1.0);$("#myContainer").append(myRenderer.domElement);var myScene = new THREE.Scene();var myCamera = new THREE.PerspectiveCamera(45,window.innerWidth / window.innerHeight, 0.1, 1000);myCamera.position.set(40.06, 20.92, 42.68);myCamera.lookAt(new THREE.Vector3(0, 0, 0));var myOrbitControls = new THREE.OrbitControls(myCamera,myRenderer.domElement);				 	         //创建轨道控制器myOrbitControls.addEventListener('change', animate); //监听鼠标、键盘事件//创建立方体var myGeometry = new THREE.BoxGeometry(16, 16, 16);var myMaterial = new THREE.MeshNormalMaterial();var myMesh = new THREE.Mesh(myGeometry, myMaterial);myScene.add(myMesh);//渲染立方体animate();function animate() {myRenderer.render(myScene, myCamera);}</script>
</body></html>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/417109.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JRT打印报告示例

借助JRT实现的打印客户端和打印元素绘制协议及表格元素&#xff0c;设计器基本成型&#xff0c;这次可以试着写一个用模板控制布局的打印报告示例了&#xff0c;测试点报告表格维护、打印标签、打印数据、打印条码、打印图片、打印表格。基于新架构的代码比M写打印简单多了&…

时间序列预测模型实战案例(三)(LSTM)(Python)(深度学习)时间序列预测(包括运行代码以及代码讲解)

目录 引言 LSTM的预测效果图 LSTM机制 了解LSTM的结构 忘记门 输入门 输出门 LSTM的变体 只有忘记门的LSTM单元 独立循环(IndRNN)单元 双向RNN结构(LSTM) 运行代码 代码讲解 引言 LSTM&#xff08;Long Short-Term Memory&#xff09;是一种常用的循环神经网络&a…

二叉树的基础概念及遍历

二叉树(Binary Tree)的基础 1、树的概念 1、树的概念 树是一种非线性的数据结构&#xff0c;是由n&#xff08;n>0&#xff09;个有限结点组成一个具有层次关系的集合&#xff0c;将它称为树&#xff0c;是因为在形状上像一颗倒着的树&#xff0c;如下图所示就是一颗二叉…

有同事线上环境修改表字段长度,导致mysql死锁

虽然是小表&#xff0c;数据量只有几十。但是有接口的访问量大&#xff0c;其中会使用到这张表。 线上更改的varchar的长度&#xff0c;导致锁表。结果直接导致接口服务挂了。 navicat有工具可以直接看进程 命令方式 定位 show OPEN TABLES where In_use > 0; show pro…

day02:列表、表格、表单

01-列表 作用&#xff1a;布局内容排列整齐的区域。 列表分类&#xff1a;无序列表、有序列表、定义列表。 无序列表 作用&#xff1a;布局排列整齐的不需要规定顺序的区域。 标签&#xff1a;ul 嵌套 li&#xff0c;ul 是无序列表&#xff0c;li 是列表条目。 <ul>…

怎么做表单链接_从表单链接到营销策略

从表单链接到营销策略&#xff1a;一场无与伦比的转化之旅 在数字营销的世界里&#xff0c;表单链接是一种至关重要的元素。它不仅是一个简单的链接&#xff0c;更是企业与潜在客户之间建立联系的桥梁。如何将表单链接巧妙地融入营销策略&#xff0c;让潜在客户转化为真正的客…

【C语言】- 设置控制台标题、编码、文字颜色、大小和字体

【C语言】- 设置控制台标题、编码、文字颜色、大小和字体 文章目录 【C语言】- 设置控制台标题、编码、文字颜色、大小和字体1 - 设置控制台标题2 - 设置控制台编码3 - 设置控制台字体和大小参考链接 1 - 设置控制台标题 因为要用到 Windows API&#xff0c;所以需要包含头文件…

移动端 h5-table react版本支持虚拟列表

介绍 适用于 react ts 的 h5 移动端项目 table 组件 github 链接 &#xff1a;https://github.com/duKD/react-h5-table 有帮助的话 给个小星星 有两种表格组件 常规的&#xff1a; 支持 左侧固定 滑动 每行点击回调 支持 指定列排序 支持滚动加载更多 效果和之前写的vue…

C++(13)——string

上篇文章中介绍了中部分函数的用法&#xff0c;本篇文章将继续对其他的函数进行介绍&#xff1a; 1. substr: string substr (size_t pos 0, size_t len npos) const; 函数的两个参数如上述代码所示&#xff0c;此函数的主要作用是根据一个已有的的对象的起始坐标开始&a…

linux磁盘,分区,挂载等等

1. 修改磁盘分区的标签 例如&#xff1a;733be18b-7baf-d84c-879d-ca3db465f179太长了&#xff0c;修改一下。 linuxchenxiao:/media/linux/733be18b-7baf-d84c-879d-ca3db465f179$ 先 sudo blkid sudo blkid 找到你想修改的UUID(唯一标识符) /dev/sda1: UUID"733be…

RK3566 linux加入uvc app

SDK中external/uvc_app/目录提供了将板卡模拟成uvc camera的功能。 一、buildroot使能uvc_app 1、进入到buildroot目录 在sdk目录下执行以下命令&#xff1a; cd buildroot 2、选择defconfig 执行命令&#xff1a; source build/envsetup.sh 输入数字然后回车选择板卡&…

(C++) list底层模拟实现

个人主页&#xff1a;Lei宝啊 愿所有美好如期而遇 首先&#xff0c;list底层是一个带头双向循环链表&#xff0c;再一个&#xff0c;我们还要解决一个问题&#xff0c;list的迭代器&#xff0c;vector和string的迭代器可以直接&#xff0c;是因为他们的地址空间是连续的&…