当前位置: 首页 > news >正文

做网站站长先把作息和身体搞好深圳电器公司简介

做网站站长先把作息和身体搞好,深圳电器公司简介,南宁cms建站系统,如何为网站做推广目录 一、three.js开发环境搭建 1.1、使用parcel搭建开发环境 1.2、使用three.js渲染第一个场景和物体 1.3、轨道控制器查看物体 二、three.js辅助设置 2.1、添加坐标轴辅助器 2.2、设置物体移动 2.3、物体的缩放与旋转 缩放 旋转 2.4、应用requestAnimationFrame …目录 一、three.js开发环境搭建 1.1、使用parcel搭建开发环境 1.2、使用three.js渲染第一个场景和物体 1.3、轨道控制器查看物体 二、three.js辅助设置 2.1、添加坐标轴辅助器 2.2、设置物体移动 2.3、物体的缩放与旋转 缩放 旋转 2.4、应用requestAnimationFrame 2.5、通过Clock跟踪时间处理动画 2.6、Gsap动画库基本使用与原理 2.7、Gsap控制动画属性与方法 2.8、根据尺寸变化实现自适应画面 阻尼效果 自适应画面 2.9、调用js接口控制画布全屏和退出全屏 2.10、应用图形用户界面更改变量 一、three.js开发环境搭建 1.1、使用parcel搭建开发环境 第一步创建空项目 第二步终端输入 npm init 直接一路回车。 第三步安装parcel npm install parcel-bundler 接着通过修改你的package.json来添加这些任务脚本 scripts: {dev: parcel src/index.html,build: parcel build src/index.html }, 第四步创建src/index.html 第五步终端输入命令 npm install parcel-bundler -dev 第六步创建静态文件引入静态文件 第七步编写style.css代码 * {margin: 0;padding: 0; }body {background-color: skyblue; }第八步安装threejs依赖 npm install three --save 第九步编写main.js代码看threejs是否安装成功 import * as THREE from threeconsole.log(THREE);第十步启动项目 1.2、使用three.js渲染第一个场景和物体 import * as THREE from three// 1、创建场景 const scene new THREE.Scene()// 2、创建相机 const camera new THREE.PerspectiveCamera(75, window.innerWidth/window.innerHeight, 0.1, 1000);// 3、设置相机位置 camera.position.set(0, 0, 10); scene.add(camera)// 添加物体 // 创建几何体 const cubeGeometry new THREE.BoxGeometry(1, 1, 1); // 材质 const cubeMaterial new THREE.MeshBasicMaterial({color: 0xffff00}); // 根据几何体和材质创建物体 const cube new THREE.Mesh(cubeGeometry, cubeMaterial); // 将物体添加到场景中 scene.add(cube)// 初始化渲染器 const renderer new THREE.WebGLRenderer(); // 设置渲染的尺寸大小 renderer.setSize(window.innerWidth, window.innerHeight); // 将webgl渲染的canvas内容添加到body document.body.appendChild(renderer.domElement);// 使用渲染器通过相机将场景渲染进来 renderer.render(scene, camera);1.3、轨道控制器查看物体 import * as THREE from three // 导入轨道控制器 import {OrbitControls} from three/examples/jsm/controls/OrbitControls// 1、创建场景 const scene new THREE.Scene()// 2、创建相机 const camera new THREE.PerspectiveCamera(75, window.innerWidth/window.innerHeight, 0.1, 1000);// 3、设置相机位置 camera.position.set(0, 0, 10); scene.add(camera)// 添加物体 // 创建几何体 const cubeGeometry new THREE.BoxGeometry(1, 1, 1); // 材质 const cubeMaterial new THREE.MeshBasicMaterial({color: 0xffff00}); // 根据几何体和材质创建物体 const cube new THREE.Mesh(cubeGeometry, cubeMaterial); // 将物体添加到场景中 scene.add(cube)// 初始化渲染器 const renderer new THREE.WebGLRenderer(); // 设置渲染的尺寸大小 renderer.setSize(window.innerWidth, window.innerHeight); // 将webgl渲染的canvas内容添加到body document.body.appendChild(renderer.domElement);// 使用渲染器通过相机将场景渲染进来 // renderer.render(scene, camera);// 创建轨道控制器 const controls new OrbitControls(camera, renderer.domElement);function render() {renderer.render(scene, camera);// 渲染下一帧的时候就会调用render函数requestAnimationFrame(render) }render();可以拖动了。 二、three.js辅助设置 2.1、添加坐标轴辅助器 // 添加坐标轴辅助器 5代表轴的线段长度 const axesHelper new THREE.AxesHelper(5) scene.add(axesHelper) 红色代表X轴绿色代表Y轴蓝色代表Z轴。 2.2、设置物体移动 // 修改物体的位置 // 参数分别为 x,y,z cube.position.set(5, 2, 0) 当然你也可以使用直接点的形式 cube.position.x 5 cube.position.y 2 小案例模拟物体从左到右循环运动 function render() {cube.position.x 0.01if (cube.position.x 5) {cube.position.x 0}renderer.render(scene, camera);// 渲染下一帧的时候就会调用render函数requestAnimationFrame(render) } 2.3、物体的缩放与旋转 缩放 // 缩放 // 参数 x轴是3倍y轴是两倍 cube.scale.set(3, 2, 1) 旋转 //旋转 // 参数都为弧度Math.PI / 4代表绕X轴旋转45度 cube.rotation.set(Math.PI / 4, 0, 0) 小案例模拟物体从左到右循环运动并按X轴旋转 function render() {cube.position.x 0.01cube.rotation.x 0.01if (cube.position.x 5) {cube.position.x 0}renderer.render(scene, camera);// 渲染下一帧的时候就会调用render函数requestAnimationFrame(render) } 2.4、应用requestAnimationFrame 首先我们的render函数有个默认的参数time代表每一帧的时间如果你打印会发现每一帧的时间都不太匀速比如我们上面这个案例x轴长度为5假如我打算1秒运动长度1匀速就是5秒完成但打印结果并不是匀速的。 // 匀速 function render(time) {let t time / 1000 % 5;cube.position.x t * 1if (cube.position.x 5) {cube.position.x 0}renderer.render(scene, camera);// 渲染下一帧的时候就会调用render函数requestAnimationFrame(render) } 2.5、通过Clock跟踪时间处理动画 // 设置时钟 const clock new THREE.Clock();function render() {// 获取时钟运行的总时长let time clock.getElapsedTime();console.log(时钟运行总时长, time);let deltaTime clock.getDelta();console.log(两次获取时间的间隔时间, deltaTime)let t time % 5;cube.position.x t * 1if (cube.position.x 5) {cube.position.x 0}renderer.render(scene, camera);// 渲染下一帧的时候就会调用render函数requestAnimationFrame(render) } 2.6、Gsap动画库基本使用与原理 npm install gsap 动画库的作用就解决了我们上面手动计算处理动画的问题。 // 设置动画 // x轴上移动到5的位置所花费时间5秒 gsap.to(cube.position, {x: 5, duration: 5, ease: power1.out}) // 绕x轴上旋转到360度所花费时间5秒 gsap.to(cube.rotation, {x: 2 * Math.PI, duration: 5})function render() {renderer.render(scene, camera);// 渲染下一帧的时候就会调用render函数requestAnimationFrame(render) } ease属性速率 power1.out起始阶段平滑地加速然后以逐渐减速的方式结束。 power1.in起始阶段缓慢加速然后以较快的速度向目标值靠近。 power1.inOut在动画开始和结束时属性的变化速度较慢然后在动画的中间阶段达到最快的变化速度。 2.7、Gsap控制动画属性与方法 // 设置动画 // x轴上移动到5的位置所花费时间5秒 let animate1 gsap.to(cube.position, {x: 5,duration: 5,ease: power1.inOut,repeat: -1, // 设置重复的次数无限次循环-1yoyo: true, // 往返运动delay: 2, // 延迟2秒运动onStart: () {console.log(动画开始)},onComplete: () {console.log(动画完成)} }) // 绕x轴上旋转到360度所花费时间5秒 gsap.to(cube.rotation, {x: 2 * Math.PI, duration: 5})// 点击动画暂停或恢复 window.addEventListener(click, () {if(animate1.isActive()) {animate1.pause(); // 暂停} else {animate1.resume(); // 恢复运动} }) 2.8、根据尺寸变化实现自适应画面 阻尼效果 // 设置控制器阻尼让控制器更有真实效果必须在动画循环里调用update() controls.enableDamping true;function render() {controls.update();renderer.render(scene, camera);// 渲染下一帧的时候就会调用render函数requestAnimationFrame(render) } 自适应画面 // 监听画面变化更新渲染画面 window.addEventListener(resize, () {// 更新摄像头camera.aspect window.innerWidth / window.innerHeight;// 更新摄像机的投影矩阵camera.updateProjectMatrix();// 在更新渲染器renderer.setSize(window.innerWidth, window.innerHeight)// 设置渲染器的像素比renderer.setPixelRatio(window.devicePixelRatio); }) 尽管你更改分辨率这段代码都会保持画面原样。 2.9、调用js接口控制画布全屏和退出全屏 // 双击控制屏幕进入全屏退出全屏 window.addEventListener(dblclick, () {const fullScreenElement document.fullscreenElement; // 页面是否处于全屏if (!fullScreenElement){renderer.domElement.requestFullscreen(); // 全屏} else {document.exitFullscreen(); // 退出全屏} }) 2.10、应用图形用户界面更改变量 很多时候我们调试3D图像很麻烦普遍都是改完代码然后看页面效果而dat.gui就大大简化了我们的操作问题。 npm install -save dat.gui // 导入dat.gui import * as dat from dat.guiconst gui new dat.GUI(); gui.add(cube.position, x).min(0).max(5).name(移动X轴坐标).onChange((value) {console.log(值被修改, value) }).onFinishChange((value) {console.log(完全停下来触发, value) })
http://www.w-s-a.com/news/516252/

相关文章:

  • 城阳网站建设培训网站后台怎么上传文件
  • 重庆茂尔建设集团有限公司网站网页制作教程软件
  • 金湖建设工程质量监督网站高端网站建设公司哪里济南兴田德润实惠吗
  • 站酷设计网站官网入口文字设计seo网站推广工具
  • 专业移动网站建设网站建设软件dw
  • 摄影网站设计思想视觉传达毕业设计作品网站
  • 需要优化的网站有哪些设计装修app
  • 数据型网站建设东莞好的网站国外站建设价格
  • 网络营销方法有哪些举例seo应用领域有哪些
  • 建设银行官方网站官网做网站的专业叫什么
  • 矿区网站建设濮阳做网站的公司有哪些
  • 有什么网站可以自己做书甘肃建设厅网站首页
  • 门户网站建设哪专业怎么把自己做的网站登录到网上
  • 如何做网站小编餐饮业手机php网站
  • 备案 网站商城网站设计公司排名
  • 汕头做网站优化公司seo软件简单易排名稳定
  • 如何做众筹网站微网站设计平台
  • 富平做网站十堰优化seo
  • 免费网站空间可访问wordpress弹窗注册代码
  • 东莞网站建设教程南京做代账会计在哪个网站上找
  • 网站开发好了 怎么发布wordpress数据库缓存插件
  • 工业电商网站怎么配色社交网站建设平台
  • 使用pycharm网站开发建一个网站需要什么条件
  • 网站建设哪些是需要外援的问题wordpress商品展示主题
  • 定制网站开发的目的是什么wordpress 增加按钮
  • 建设单位网站经费请示wordpress模板添加授权
  • 国外的电商网站有哪些为进一步加强校园网站建设
  • 专业集团门户网站建设企业微信商城和网站建设
  • 多少钱可以做网站找网络公司做推广费用
  • python php 网站开发网络营销师是干什么的