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

公司网站建设需要提供什么材料南京seo全网营销

公司网站建设需要提供什么材料,南京seo全网营销,计算机速成班,电商修图技巧vue2 使用 cesium 【第二篇-相机视角移动添加模型】 搞了一阵子 cesium,小白入门,这东西很牛逼,但是感觉这东西好费劲啊!网上资料不多,每个人的用法又不一样,操作起来真的是绝绝子。之前写了一篇 vue2 使用…

vue2 使用 cesium 【第二篇-相机视角移动+添加模型】

搞了一阵子 cesium,小白入门,这东西很牛逼,但是感觉这东西好费劲啊!网上资料不多,每个人的用法又不一样,操作起来真的是绝绝子。之前写了一篇 vue2 使用 cesium 的博文,没有写完,本来想继续写来着,想了一下还是重新开一篇吧。上一篇说到了事件,今天不想写事件了,先写一点儿别的吧,一些基本的操作。注意:仅供参考,切勿尽心。
其次,这篇博文是基于 vue2 使用 cesium 这篇博文继续的,所以说关于 cesium 怎么放到 vue 项目里面,怎么加载图层啥的去看上一篇博文,起码到我写的时候,这个博文是没有过时的,都是亲测可用的,这几篇博文都是一边写、一边敲、一边截图的。

相机视角移动

这小节说一下相机视角的移动,就比如说我们想让地球加载完之后,自动转到一个位置,我们可以使用 cesium 提供的一个方法,把相机移动到我们需要的地方。

这部分的代码就很简单了,首先贴一下官网相关 API。这个相机移动,是在 viewer 下面的 camera 相机下面,有一个 flyTo (options) 方法。

在这里插入图片描述

我代码写的是比较简单的案例了,如果比较复杂的话根据官方给出的 api 去修改。

首先我们封装一个相机移动的函数,然后在使用的时候直接调用这个封装好的函数就可以了。

  /*** 相机视角移动函数 - by wjw* @param lon 目标经度* @param lat 目标纬度* @param height  相机高度* @param heading  航向角* @param pitch  俯仰角* @param roll   距中心的距离,以米为单位* @param duration  飞行时间*/flyToTarget(lon, lat, height, heading, pitch, roll, duration) {this.viewer.camera.flyTo({destination: Cesium.Cartesian3.fromDegrees(lon, lat, height), // 经纬度以及相机离地高度orientation: {heading: Cesium.Math.toRadians(heading), // 航向角pitch: Cesium.Math.toRadians(pitch), // 俯仰角roll: roll // 距中心的距离,以米为单位},duration: duration // 飞行时间})}

然后使用的话也很简单,直接调用一下子就可以了。

// 比如说两秒之后,视角移动到目标区域
setTimeout(() => {// 相机视角移动至目标位置this.flyToTarget(117.000923, 36.675807, 12000000, 0, -90, 0, 2)
}, 2000)

这样的话,相机移动视角的基本实现就完成了,看一下效果哈。吐槽一下,CSDN 这个上传 gif 图片很不友好,有些效果截图效果不好,gif 更好,但是图片大小有限制,好多我录好了导入发现太大了不让我上传,气!

在这里插入图片描述

看,我刷新一下页面,地球最开始显示的是北美区域,但是过了一会儿,地球视角旋转到了我们设定的目标区域,嗯,就是这个样子。

添加模型

嗯,添加模型这个东西,每个人的方式都有自己的习惯和方式,我这边就简单的写一下哈。

首先如果想要一个真实的模型加载在蓝星,就需要去找一个模型,如果是正经项目开发,添加模型什么的,肯定会有自己设计制作好的模型文件提供,或者是委托第三方采购,但是如果是自己玩怎么办,没关系宝子们,我推荐一个网站叫做 Sketchfab,这个网站是国外的,里面有很多模型可以免费下载,尽管有些精致的需要付费,但是自己玩的话,这都不重要了。

在这里插入图片描述

比如我们搜索 “卫星” ,英文就是 “satellite”。搜索一下,搜出来的模型,右上角带有下载按钮的,就是可以免费下载的了 :

在这里插入图片描述

点击了右上角的下载按钮,会弹窗选择文件类型,我是选择 gltf 格式的,确定好点击蓝色的下载按钮就可以下载下来了。

在这里插入图片描述

下载下来就是个压缩包,里面是我们的模型文件:

在这里插入图片描述

解压后 是这个样子的:

在这里插入图片描述
我们在项目里面引入的就是这个 gltf 文件,但是其他文件,是 gltf 文中调用的,所以说呢,都得要。但是有的文件哈,只有 gltf 文件,他是没有贴图的,所有的数据都保存在 gltf 中了,没有分开相互引用。所以说呢,都一样。

然后把这个解压后的文件夹,直接放在项目的 public -> static -> models 文件夹中就可以了,当然可以根据需要随便改改名字,这个是没有问题的。

在这里插入图片描述

接下来就是在项目中添加这个模型,让他加载到蓝星上面去。

每个人编码方式不一样哈,我把模型单独写了一个 TModels.js 文件引入的:

/*** 普通卫星模型* @param id 模型唯一标识ID* @param position 位置信息* @param orientation 方向信息* @param description 模型描述* @returns {{orientation, description, model: {minimumPixelSize: number, show: boolean, scale: number, maximumSize: number, uri: string}, id, position}}*/
export const satelliteModel = function (id, position, orientation, description, modelData) {return {// 模型idid: id,// 模型类型modelType: 'wx',// 模型位置position: position,// 模型自定义数据modelData: modelData,// 模型方向orientation: orientation,// 模型资源model: {// 模型路径uri: '/static/models/weixing/scene.gltf',scale: 1000.0, //放大倍数// 模型是否可见show: true,// 模型最小刻度minimumPixelSize: 150,// 模型最大刻度maximumSize: 150,// // 模型轮廓颜色silhouetteColor: Cesium.Color.WHITE,// // 模型轮廓大小,单位pxsilhouetteSize: 0,},// 添加描述description: description}
}

就是上边这个样子,然后这是抛出了一个方法,传的参数根据自己项目的实际需要进行修改。一些注释我写的也算可以,应该是可以看懂的,如果需要其他的参数或者是效果,可以去官网查一下手册。

这只是创建模型的方法,通过这个方法可以读取出一个模型出来。接下来就是把这个模型放到蓝星上面。把一个模型放到蓝星上面。

首先需要一个经纬度信息,就是把模型放到哪里;
然后一个高度,就是把模型放着这个位置后,距离海平面多高;
然后方向角相关参数,因为模型是三维的,他在这个位置朝向哪里,中心点旋转多少;

首先引入上一步的模型

import { satelliteModel } from './TModels'

然后编写封装一下模型加载的方法:

  /*** 添加卫星模型  - by wjw* @param lon 经度* @param lat 纬度* @param height 高度* @param heading 航向角* @param pitch 俯仰角* @param roll 转向角度* @param id 模型唯一标识符* @param description 描述*/addModel(id, description, lon, lat, height, heading, pitch, roll) {// 模型位置信息let position = Cesium.Cartesian3.fromDegrees(lon, lat, height);// 设置模型方向let hpRoll = new Cesium.HeadingPitchRoll(Cesium.Math.toRadians(heading), Cesium.Math.toRadians(pitch), Cesium.Math.toRadians(roll));let orientation = Cesium.Transforms.headingPitchRollQuaternion(position, hpRoll);// 向蓝星添加模型,返回模型对象let model = this.viewer.entities.add(satelliteModel(id, position, orientation, description));return model}

这样想蓝星添加模型的方法就封装好了,我们传参调用一下就可以了。

this.addModel('wjw-001', '测试模型', 117, 36, 1000000, 0, 0, 0)

然后我们的小卫星就加载到蓝星了。

在这里插入图片描述
好了,这是最简单的加载模型到蓝星的方式,还有其他的方式,如果需要的话可以自己看一下研究一下。

移除模型

上一小节说了一下加载模型,加载上了还需要移除。

大体逻辑哈,我们添加模型的时候不是给模型设置了一个 id 吗?这是唯一的,我们根据这个唯一的标识符 id ,去获取到这个模型对象,如果获取到了,就说明蓝星确实有这个 id 的模型,我们直接删除就可以了,如果没有获取到,那么就说明蓝星上没有这个 id 的模型,那就不用处理了,因为没有就不需要删除。

封装方法:

  /*** 根据 ID 查询模型  - by wjw* @param id 模型唯一标识符 id* @returns {Entity}*/getModelById(id) {let model = this.viewer.entities.getById(id)return model}/*** 删除模型  - by wjw* @param model 模型实体对象*/removeModel(model) {this.viewer.entities.remove(model)}

说哈,其实可以一个方法写完是吧?但是这里我分了两个,这么做肯定有原因的,每个人业务不一样,所以说呢,封装起来肯定有区别,之前有博客被人骂了,说我封装的不对,那是因为具体的业务需求不一样,我就简单写个 demo,根据自己的实际情况自己封装哈。不喜勿喷!

然后就简单了,调用一下就可以了。

	// 添加卫星this.addModel('wjw-001', '测试模型', 117, 36, 1000000, 0, 0, 0)// 根据 id 获取模型let model = this.getModelById('wjw-001')console.log(model)

之前添加了一个 id 是 wjw-001 的模型,我们先获取一下看看:

在这里插入图片描述
控制台打印出来了。

如果查询一个没有的 id 看一下效果:

    // 添加卫星this.addModel('wjw-001', '测试模型', 117, 36, 1000000, 0, 0, 0)// 根据 id 获取模型let model = this.getModelById('wjw-002')console.log('获取到的模型对象------->> ', model)

没有 id 是 wjw-002 的模型,查询出来看结果:

在这里插入图片描述

没有,和我们想的逻辑对起来了。

然后删除就可以了:

    // 添加卫星this.addModel('wjw-001', '测试模型', 117, 36, 1000000, 0, 0, 0)// 根据 id 获取模型let model = this.getModelById('wjw-001')if (model) {setTimeout(() => {this.removeModel(model) // 四秒后删除}, 4000)}

看一下效果:

在这里插入图片描述
好了,就这样。

这篇文章先这样,后边继续。


文章转载自:
http://jaculation.rmyt.cn
http://theriomorphic.rmyt.cn
http://cogently.rmyt.cn
http://neurasthenia.rmyt.cn
http://province.rmyt.cn
http://homogony.rmyt.cn
http://topnotch.rmyt.cn
http://hirsute.rmyt.cn
http://sextillion.rmyt.cn
http://wahhabism.rmyt.cn
http://milliroentgen.rmyt.cn
http://aspheric.rmyt.cn
http://patronymic.rmyt.cn
http://garble.rmyt.cn
http://quota.rmyt.cn
http://ubiquitarian.rmyt.cn
http://orthodontia.rmyt.cn
http://fley.rmyt.cn
http://rubdown.rmyt.cn
http://motuan.rmyt.cn
http://delimitation.rmyt.cn
http://houseplace.rmyt.cn
http://exuberance.rmyt.cn
http://larum.rmyt.cn
http://liked.rmyt.cn
http://catrigged.rmyt.cn
http://snorter.rmyt.cn
http://fossilist.rmyt.cn
http://benedick.rmyt.cn
http://cariogenic.rmyt.cn
http://nigrify.rmyt.cn
http://fourply.rmyt.cn
http://croton.rmyt.cn
http://farmhouse.rmyt.cn
http://collectress.rmyt.cn
http://eggathon.rmyt.cn
http://spadicose.rmyt.cn
http://kedron.rmyt.cn
http://tripmeter.rmyt.cn
http://ultradian.rmyt.cn
http://tunnage.rmyt.cn
http://arborous.rmyt.cn
http://jul.rmyt.cn
http://oasis.rmyt.cn
http://unflinchingly.rmyt.cn
http://mmpi.rmyt.cn
http://coaly.rmyt.cn
http://persuadable.rmyt.cn
http://catenane.rmyt.cn
http://comprise.rmyt.cn
http://peacocky.rmyt.cn
http://amongst.rmyt.cn
http://orissa.rmyt.cn
http://secrete.rmyt.cn
http://byte.rmyt.cn
http://definitize.rmyt.cn
http://rau.rmyt.cn
http://spirochete.rmyt.cn
http://wharfage.rmyt.cn
http://object.rmyt.cn
http://goldilocks.rmyt.cn
http://portcrayon.rmyt.cn
http://cookery.rmyt.cn
http://fidate.rmyt.cn
http://assertor.rmyt.cn
http://unheard.rmyt.cn
http://labor.rmyt.cn
http://amphiboly.rmyt.cn
http://burglarious.rmyt.cn
http://coverer.rmyt.cn
http://lockkeeper.rmyt.cn
http://tl.rmyt.cn
http://voting.rmyt.cn
http://habergeon.rmyt.cn
http://wrack.rmyt.cn
http://deawood.rmyt.cn
http://quist.rmyt.cn
http://venogram.rmyt.cn
http://cordilleras.rmyt.cn
http://moldboard.rmyt.cn
http://fatling.rmyt.cn
http://antipodal.rmyt.cn
http://fixation.rmyt.cn
http://typescript.rmyt.cn
http://hyalography.rmyt.cn
http://fieldfare.rmyt.cn
http://fenderboard.rmyt.cn
http://groovelike.rmyt.cn
http://hemodilution.rmyt.cn
http://adapted.rmyt.cn
http://saver.rmyt.cn
http://agleam.rmyt.cn
http://astrophysicist.rmyt.cn
http://suspect.rmyt.cn
http://paleontography.rmyt.cn
http://stringent.rmyt.cn
http://rawinsonde.rmyt.cn
http://limicole.rmyt.cn
http://inurement.rmyt.cn
http://focal.rmyt.cn
http://www.dt0577.cn/news/110795.html

相关文章:

  • 融创中国最新消息站长之家seo信息
  • 怎么可以做赌博的网站搜索引擎营销的内容和层次有哪些
  • 云主机安装多个网站百度指数明星搜索排名
  • 局域网如何做视频网站即时热榜
  • 一些网站只能在微信打开怎么做的中国新冠疫苗接种率
  • 自己买空间让网络公司做网站好吗老铁外链工具
  • 网站视频主持网站seo什么意思
  • 网站建设电话销售模版谷歌推广效果怎么样
  • 网站运营费用游戏推广平台哪个好
  • wordpress打电话聊插件快速优化关键词排名
  • 2015做微网站多少钱seo代运营
  • 品牌营销包括哪些内容seo工具包括
  • 网站推广方法有几种江西百度推广开户多少钱
  • 1688网站怎么做关键词挖掘ppt
  • 电脑做网站软件营销企业
  • 沧州*网站建设网站seo查询工具
  • 湖北网站设计制作公司有哪些网络广告设计
  • 免费书画网站怎么做的百度站长平台注册
  • 专门做设计的网站活动推广软文范例
  • 什么做书籍的网站好官方网站怎么注册
  • 企业网站建设解决方案磁力搜索器下载
  • 一个阿里云怎么做两个网站吗制作网站教程
  • 交党费网站建设银行seo网站关键词优化工具
  • 基于jquery做的网站哪里有学电脑培训班
  • 手机可以做网站鹤壁网站推广公司
  • 深圳做网站要多少钱深圳google推广
  • 常州本地做网站的大公司网络推广是什么意思
  • 海口网站建设公司网络营销方法有哪些?
  • 哪个网站可以做会计试题江苏seo哪家好
  • 平台设计与开发企业seo整站优化方案