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

教育培训网站设计加盟培训机构

教育培训网站设计,加盟培训机构,研发流程,自豪的采用wordpress#x1f468;‍⚕️ 主页#xff1a; gis分享者 #x1f468;‍⚕️ 感谢各位大佬 点赞#x1f44d; 收藏⭐ 留言#x1f4dd; 加关注✅! #x1f468;‍⚕️ 收录于专栏#xff1a;threejs gis工程师 文章目录 一、#x1f340;前言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 langen headmeta charsetUTF-8titlelearn44(使用第一视角控制器FIRSTPERSONCONTROLS控制相机)/titlescript srclib/threejs/127/three.js-master/build/three.js/scriptscript srclib/js/Detector.js/scriptscript srclib/js/chroma.js/scriptscript srclib/threejs/127/three.js-master/examples/js/loaders/OBJLoader.js/scriptscript srclib/threejs/127/three.js-master/examples/js/loaders/MTLLoader.js/scriptscript srclib/threejs/127/three.js-master/examples/js/controls/FirstPersonControls.js/scriptscript srclib/threejs/127/three.js-master/examples/js/libs/stats.min.js/scriptscript srclib/threejs/127/three.js-master/examples/js/libs/dat.gui.min.js/script /head stylehtml, body {margin: 0;height: 100%;}canvas {display: block;} /style body onloaddraw() /body scriptvar 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://www.hkea.cn/news/14309198/

相关文章:

  • 登陆网站空间的后台附近旧模板出售市场
  • 济南网站建设app一键开启网站
  • 织梦网站源码转换成wordpress郑州市网络设计
  • 中国保密在线网站培训阿里巴巴做外贸流程
  • 深圳住建设局官方网站电商营销策划方案
  • 商城网站怎么建设哈尔滨房地产型网站建设
  • 奇信建设集团官方网站做平面设计兼职的网站
  • 网站评估内容 优帮云wordpress 修改
  • 自助建站系统模板大连装修网站推广
  • thinkphp做企业网站seo是免费推广吗?
  • 网站智能云wordpress更换网站域名
  • 网站开发合同注意事件有哪些北京小程序开发多少钱
  • 青岛建网站的公司东莞市疾控中心官网
  • 网站开发报价方案电子商务的网站案例
  • 河南建筑业城乡建设网站查询免费微信微网站模板下载
  • 工商核名在哪个网站长沙网站seo技术厂家
  • 网页制作网站首页龙华建网站多少钱
  • 必应搜索网站代码运行框wordpress
  • 网站负责人 备案网站开发 后端服务
  • wordpress开启子域名多站点模式微网站 小程序 区别
  • 百度站长验证网站失败重庆的网站建设公司
  • 用树莓派做网站服务器网站备案为什么要闭站
  • 北京网站建设公司 北京网站设计 网页设计制作 高端网站建设 分形科技菏泽建设企业网站
  • 网站怎么做图片动态图片不显示不出来的专做负面的网站
  • 协会网站制作好用的ppt模板网站
  • 网站开发技术选型网站策划建设方案书
  • 注册了域名 网站怎么做万网域名注册信息查询
  • 网站如何搭建开发一个电商app软件多少钱
  • 山东省建设厅网站查网站建设规划模板
  • 范县网站建设电话全椒县城乡规划建设局网站