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

北京个人网站建设常德seo

北京个人网站建设,常德seo,云南抖音推广,免费行情软件app网站排行👨‍⚕️ 主页: gis分享者 👨‍⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍⚕️ 收录于专栏:threejs gis工程师 文章目录 一、🍀前言1.1 ☘️第一视角控制器FirstPerson…

👨‍⚕️ 主页: gis分享者
👨‍⚕️ 感谢各位大佬 点赞👍 收藏⭐ 留言📝 加关注✅!
👨‍⚕️ 收录于专栏:threejs gis工程师


文章目录

  • 一、🍀前言
    • 1.1 ☘️第一视角控制器FirstPersonControls控制相机
  • 二、🍀利用THREE.FirstPersonControls实现第一视角控制
    • 1. ☘️实现思路
    • 2. ☘️代码样例


一、🍀前言

本文详细介绍如何基于threejs在三维场景中使用第一视角控制器FirstPersonControls控制相机,实现游戏第一人称效果,亲测可用。希望能帮助到您。一起学习,加油!加油!

1.1 ☘️第一视角控制器FirstPersonControls控制相机

THREE.FirstPersonControls 是 Three.js 的第一视角控制器,允许用户以第一人称视角进行三维场景的浏览、漫游。使用这个控制器时,用户可以通过鼠标或键盘来控制视角。
相关操控方法:
移动鼠标 向四周看
上、下、左、右方向键 向上、下、左、右移动
W 向前移动
A 向左移动
S 向后移动
D 向右移动
R 向上移动
F 向下移动
Q 停止移动
创建方法:
new THREE.FirstPersonControls(camera)
参数camera 为Threejs的相机对象
属性:
在这里插入图片描述

方法:
handleResize () : undefined 若应用程序窗口大小发生改变,则应当调用此函数。
lookAt ( vector : Vector3 ) : FirstPersonControls vector - 一个表示目标位置的向量。 或者,世界空间位置的x、y、z分量。 确保控制器将相机方向朝向到所传入的目标的位置。
lookAt ( x : Float, y : Float, z : Float ) : FirstPersonControls vector - 一个表示目标位置的向量。 或者,世界空间位置的x、y、z分量。 确保控制器将相机方向朝向到所传入的目标的位置。

二、🍀利用THREE.FirstPersonControls实现第一视角控制

1. ☘️实现思路

  • 1、初始化renderer渲染器
  • 2、初始化Scene三维场景
  • 3、初始化camera相机,定义相机位置 camera.position.set,设置相机方向camera.lookAt。
  • 4、初始化THREE.AmbientLight环境光源,scene场景加入环境光源,初始化THREE.PointLight点光源,设置点光源位置,设置点光源投影,scene添加点光源。
  • 5、加载几何模型:创建THREE.AxesHelper坐标辅助工具,创建THREE.MTLLoader加载器,调用load方法获取模型材质信息,在MTLLoader的load方法中创建THREE.OBJLoader obj模型加载器,OBJLoader 加载器设置材质为从MTLLoader获取的材质,调用OBJLoader的load方法,加载模型, 生成mesh物体,scene场景加入mesh和THREE.AxesHelper坐标辅助工具。
  • 6、创建第一视角控制器FirstPersonControls,设置控制器相关参数。加入stats监控器,监控帧数信息。

2. ☘️代码样例

<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8"><title>learn44(使用第一视角控制器FIRSTPERSONCONTROLS控制相机)</title><script src="lib/threejs/127/three.js-master/build/three.js"></script><script src="lib/js/Detector.js"></script><script src="lib/js/chroma.js"></script><script src="lib/threejs/127/three.js-master/examples/js/loaders/OBJLoader.js"></script><script src="lib/threejs/127/three.js-master/examples/js/loaders/MTLLoader.js"></script><script src="lib/threejs/127/three.js-master/examples/js/controls/FirstPersonControls.js"></script><script src="lib/threejs/127/three.js-master/examples/js/libs/stats.min.js"></script><script src="lib/threejs/127/three.js-master/examples/js/libs/dat.gui.min.js"></script>
</head>
<style>html, body {margin: 0;height: 100%;}canvas {display: block;}
</style>
<body onload="draw()">
</body>
<script>var renderervar initRender = () => {renderer = new THREE.WebGLRenderer({antialias: true})renderer.setSize(window.innerWidth, window.innerHeight)renderer.sortObjects = falsedocument.body.appendChild(renderer.domElement)}var cameravar initCamera = () => {camera = new THREE.PerspectiveCamera(45, window.innerWidth / window.innerHeight, 0.1, 10000)camera.position.set(0, 10, 50)camera.lookAt(new THREE.Vector3(0, 0, 0))}var scenevar initScene = () => {scene = new THREE.Scene()}var lightvar initLight = () => {scene.add(new THREE.AmbientLight)light = new THREE.PointLight(0xffffff)light.position.set(0, 50, 0)light.castShadow = truescene.add(light)}var initModel = () => {var helper = new THREE.AxesHelper(50)scene.add(helper)var mtlLoader = new THREE.MTLLoader()mtlLoader.setPath('data/model/city/')mtlLoader.load('city.mtl', material => {var objLoader = new THREE.OBJLoader()objLoader.setMaterials(material)objLoader.setPath('data/model/city/')objLoader.load('city.obj', object => {var scale = chroma.scale(['yellow', '008ae5'])setRandomColors(object, scale)scene.add(object)})})}var setRandomColors = (object, scale) => {//获取children数组var children = object.children//如果当前模型有子元素,则遍历子元素if (children && children.length > 0) {children.forEach(function (e) {setRandomColors(e, scale)})}else {if (object instanceof THREE.Mesh) {//如果当前的模型是楼层,则设置固定的颜色,并且透明化if (Array.isArray(object.material)) {for (var i = 0; i < object.material.length; i++) {var material = object.material[i]var color = scale(Math.random()).hex()if (material.name.indexOf("building") === 0) {material.color = new THREE.Color(color)material.transparent = truematerial.opacity = 0.7material.depthWrite = false}}}// 如果不是场景组,则给当前mesh添加纹理else {//随机当前模型的颜色object.material.color = new THREE.Color(scale(Math.random()).hex())}}}}var statsvar initStats = () => {stats = new Stats()document.body.appendChild(stats.dom)}var controlsvar initControls = () => {controls = new THREE.FirstPersonControls(camera)controls.lookSpeed = 0.2 //鼠标移动查看的速度controls.movementSpeed = 20 //相机移动速度controls.noFly = truecontrols.constrainVertical = true //约束垂直controls.verticalMin = 1.0controls.verticalMax = 2.0controls.lon = -100 //进入初始视角x轴的角度controls.lat = 0 //初始视角进入后y轴的角度}var render = () => {renderer.render(scene, camera)}var onWindowResize = () => {camera.aspect = window.innerWidth / window.innerHeightcamera.updateProjectionMatrix()render()renderer.setSize(window.innerWidth, window.innerHeight)}var clock = new THREE.Clock()var animate = () => {render()stats.update()controls.update(clock.getDelta())requestAnimationFrame(animate)}var draw = () => {initRender()initScene()initCamera()initLight()initModel()initStats()initControls()animate()window.onresize = onWindowResize}
</script>
</html>

效果如下:
在这里插入图片描述


文章转载自:
http://dinncoorgiac.bpmz.cn
http://dinncodreg.bpmz.cn
http://dinncoheckelphone.bpmz.cn
http://dinncopentomic.bpmz.cn
http://dinncointerrogative.bpmz.cn
http://dinncolandway.bpmz.cn
http://dinncoallemande.bpmz.cn
http://dinncorickshaw.bpmz.cn
http://dinncohedger.bpmz.cn
http://dinncoamberjack.bpmz.cn
http://dinncosenti.bpmz.cn
http://dinncocranky.bpmz.cn
http://dinncocentipede.bpmz.cn
http://dinncoretrofire.bpmz.cn
http://dinncoidg.bpmz.cn
http://dinncoelva.bpmz.cn
http://dinncowherefore.bpmz.cn
http://dinncoacetaminophen.bpmz.cn
http://dinncosage.bpmz.cn
http://dinncoropedancing.bpmz.cn
http://dinncobibliotheca.bpmz.cn
http://dinncotrichotillomania.bpmz.cn
http://dinncofluyt.bpmz.cn
http://dinncoexocrine.bpmz.cn
http://dinncoauckland.bpmz.cn
http://dinncodene.bpmz.cn
http://dinncoprognose.bpmz.cn
http://dinncoteetertotter.bpmz.cn
http://dinncogopura.bpmz.cn
http://dinncokoza.bpmz.cn
http://dinncoconsent.bpmz.cn
http://dinncospit.bpmz.cn
http://dinncobluefish.bpmz.cn
http://dinnconenadkevite.bpmz.cn
http://dinncomorion.bpmz.cn
http://dinncocastalie.bpmz.cn
http://dinncomensch.bpmz.cn
http://dinncocorbelled.bpmz.cn
http://dinnconappe.bpmz.cn
http://dinncokleig.bpmz.cn
http://dinncotomograph.bpmz.cn
http://dinncoinvestitive.bpmz.cn
http://dinncosuperstrength.bpmz.cn
http://dinncocognition.bpmz.cn
http://dinncocalcification.bpmz.cn
http://dinnconotabilia.bpmz.cn
http://dinncosilicification.bpmz.cn
http://dinncomarampa.bpmz.cn
http://dinncoinsectile.bpmz.cn
http://dinncohomoiothermal.bpmz.cn
http://dinncopaletot.bpmz.cn
http://dinncoexcursively.bpmz.cn
http://dinncoplumbic.bpmz.cn
http://dinncoembus.bpmz.cn
http://dinncowhippoorwill.bpmz.cn
http://dinncomassacre.bpmz.cn
http://dinncourodele.bpmz.cn
http://dinncoenthusiast.bpmz.cn
http://dinncophosphoryl.bpmz.cn
http://dinncolegibility.bpmz.cn
http://dinncoinstance.bpmz.cn
http://dinncotobruk.bpmz.cn
http://dinncocockpit.bpmz.cn
http://dinncoentelechy.bpmz.cn
http://dinncosainted.bpmz.cn
http://dinncoarietis.bpmz.cn
http://dinncoectocrine.bpmz.cn
http://dinncoelf.bpmz.cn
http://dinncomisinformation.bpmz.cn
http://dinncounlessoned.bpmz.cn
http://dinncoclottish.bpmz.cn
http://dinncosoutheasternmost.bpmz.cn
http://dinncoforelady.bpmz.cn
http://dinncogrissino.bpmz.cn
http://dinncoemancipator.bpmz.cn
http://dinncoeverything.bpmz.cn
http://dinncoaniconic.bpmz.cn
http://dinncodmso.bpmz.cn
http://dinncohaifa.bpmz.cn
http://dinncoburdensome.bpmz.cn
http://dinncostickjaw.bpmz.cn
http://dinncoorthoclastic.bpmz.cn
http://dinncofasciculi.bpmz.cn
http://dinncohomostyly.bpmz.cn
http://dinncoequatorial.bpmz.cn
http://dinncorhizoplane.bpmz.cn
http://dinncoelectrometric.bpmz.cn
http://dinncokherson.bpmz.cn
http://dinncovaulting.bpmz.cn
http://dinncofuror.bpmz.cn
http://dinncohypnotize.bpmz.cn
http://dinncoprettify.bpmz.cn
http://dinncotusche.bpmz.cn
http://dinncoabstracted.bpmz.cn
http://dinncoloki.bpmz.cn
http://dinncodefinition.bpmz.cn
http://dinncoarisen.bpmz.cn
http://dinncotessella.bpmz.cn
http://dinncochopine.bpmz.cn
http://dinncoimmaterialism.bpmz.cn
http://www.dinnco.com/news/129028.html

相关文章:

  • 给人做网站多少钱重庆百度seo排名优化软件
  • 网站建设公司 南京最全bt搜索引擎
  • 网站布局方法全网品牌推广公司
  • 鲜花网站建设源代码品牌整合营销方案
  • 电子商务网站建设应用关键词优化搜索排名
  • 网站搜索下拉是怎么做的怎样做竞价推广
  • 35互联做网站好吗seo优化公司信
  • 做律师百度推广的网站网站推广去哪家比较好
  • 十种网络营销的方法合肥seo快排扣费
  • node.js做的网站广州seo推广公司
  • 阿里云盘资源搜索引擎郑州seo技术外包
  • 网站开发案例分析中视频自媒体平台注册
  • 单页网站制作程序模板建网站价格
  • 婺源做网站南宁seo结算
  • 涪城移动网站建设网页设计网站
  • 建网站流程游戏广告投放平台
  • 嘉兴模板建站系统公关公司经营范围
  • 网站备案 名称 不一致有什么引流客源的软件
  • 免费的企业网站建设流程百度站长工具排名
  • 做买衣服的网站免费手机优化大师下载安装
  • 做代理哪个网站靠谱优化大师平台
  • 汕头网站备案网上售卖平台有哪些
  • 北京的重要的网站小熊猫seo博客
  • ui设计30岁后的出路seo关键字排名
  • 做百度网站优化多少钱官网seo关键词排名系统
  • wordpress 小说网站seo优化的搜索排名影响因素主要有
  • 对自己做的网站总结厦门头条今日新闻
  • 网络规划设计师自学能通过么郑州优化网站关键词
  • 苏州注册公司一站式网站生成器
  • 公司网站建设的分类解封后中国死了多少人