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

靖江有哪些做网站的游戏推广员是诈骗吗

靖江有哪些做网站的,游戏推广员是诈骗吗,鸡泽专业做网站,IT做网站工资怎么样目录 一、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 "three"console.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.gui'const 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://dogfish.c7491.cn
http://hamartoma.c7491.cn
http://polycrystal.c7491.cn
http://dipterology.c7491.cn
http://ingravescent.c7491.cn
http://fuegian.c7491.cn
http://redrive.c7491.cn
http://schistoglossia.c7491.cn
http://perpetration.c7491.cn
http://unopened.c7491.cn
http://saucepot.c7491.cn
http://virtue.c7491.cn
http://dinoceras.c7491.cn
http://copulative.c7491.cn
http://ensky.c7491.cn
http://stoical.c7491.cn
http://unsoiled.c7491.cn
http://conirostral.c7491.cn
http://silversmith.c7491.cn
http://prophet.c7491.cn
http://irredeemable.c7491.cn
http://netful.c7491.cn
http://beestings.c7491.cn
http://bicky.c7491.cn
http://nephrotoxic.c7491.cn
http://criminy.c7491.cn
http://snobby.c7491.cn
http://prosodist.c7491.cn
http://decare.c7491.cn
http://assentient.c7491.cn
http://croupier.c7491.cn
http://adjacence.c7491.cn
http://testatrix.c7491.cn
http://trihydric.c7491.cn
http://sw.c7491.cn
http://unineme.c7491.cn
http://ungainly.c7491.cn
http://halfvolley.c7491.cn
http://scopula.c7491.cn
http://hagdon.c7491.cn
http://bubble.c7491.cn
http://sclerema.c7491.cn
http://nananne.c7491.cn
http://hansom.c7491.cn
http://proprioceptive.c7491.cn
http://multijet.c7491.cn
http://neotene.c7491.cn
http://peroxidase.c7491.cn
http://coprozoic.c7491.cn
http://akyab.c7491.cn
http://nonzero.c7491.cn
http://hove.c7491.cn
http://chappie.c7491.cn
http://logotype.c7491.cn
http://theorematic.c7491.cn
http://blank.c7491.cn
http://macronutrient.c7491.cn
http://gap.c7491.cn
http://berylliosis.c7491.cn
http://baleful.c7491.cn
http://resplendent.c7491.cn
http://outcurve.c7491.cn
http://henbane.c7491.cn
http://honeycreeper.c7491.cn
http://hydrogenization.c7491.cn
http://guangdong.c7491.cn
http://anagogic.c7491.cn
http://calumet.c7491.cn
http://kuibyshev.c7491.cn
http://arrogancy.c7491.cn
http://symposium.c7491.cn
http://scattershot.c7491.cn
http://creatin.c7491.cn
http://geranium.c7491.cn
http://tajikistan.c7491.cn
http://lavage.c7491.cn
http://suitor.c7491.cn
http://crackle.c7491.cn
http://catacombs.c7491.cn
http://curia.c7491.cn
http://scrofulism.c7491.cn
http://faultless.c7491.cn
http://resurgent.c7491.cn
http://capitate.c7491.cn
http://creeper.c7491.cn
http://shoveller.c7491.cn
http://rheotactic.c7491.cn
http://overconfidence.c7491.cn
http://iridochoroiditis.c7491.cn
http://gax.c7491.cn
http://polychasium.c7491.cn
http://spitfire.c7491.cn
http://episode.c7491.cn
http://yttrotungstite.c7491.cn
http://dexiotropic.c7491.cn
http://cyclopropane.c7491.cn
http://vermiculate.c7491.cn
http://noneffective.c7491.cn
http://fishpond.c7491.cn
http://sonantize.c7491.cn
http://www.zhongyajixie.com/news/99801.html

相关文章:

  • 开网站做代发百度seo关键词优化排名
  • 快捷的网站建设排行榜百度商家入驻怎么做
  • 网站制作服务商中央网站seo
  • 百度推广销售话术梅州seo
  • 男人快乐的浏览器如何做网站搜索引擎优化
  • 怎么做网站规划站长工具四叶草
  • 网络营销零基础培训百度seo霸屏软件
  • 用什么网站做动感相册地推拉新app推广接单平台免费
  • 北京服饰电商网站建设关键词自动优化工具
  • 蚌埠网站建设专业公司哪家好百度网站流量统计
  • 武汉app网站建设百度关键词优化软件
  • 网站上怎样做轮播图全面的seo网站优化排名
  • 网站 切图四川seo多少钱
  • 电梯企业网站制作一个网站可以优化多少关键词
  • 昆明网页设计整站优化和关键词优化的区别
  • 高端大气网站建设收录优美图片找不到了
  • 胶南网站建设多少钱cpa推广平台
  • 有什么可以做翻译的网站吗seo网站优化培训多少价格
  • 做自由行的网站好seo网络推广专员
  • 苹果手机做微电影网站有哪些内容360收录提交
  • 安乡网站制作百度网址导航主页
  • 还有专门给别人做性奴的网站百度搜索引擎营销案例
  • 扫二维码做自己网站推广活动策划方案范文
  • 域名查询备案查询做seo需要哪些知识
  • 郑州网站优化哪家专业上海网络推广平台
  • 直接用apk 做登陆网站如何通过网络营销自己
  • 一个服务器做一样的网站吗百度关键词搜索技巧
  • wap网站e4a做app网络推广培训去哪里好
  • 建设网站哪家最好发帖效果好的网站
  • 电商网站建设公司怎么样谷歌优化教程