ThingJS平台制作第一人称视角下的巡更效果
今天想要做一个类似巡更的过程,就像是在学校保安巡更,小区保安巡更一样。巡更需要用到相应的场景,比如说:园区、学校、超市以及工厂等等,然后需要规划好路线也就是巡更的路线,并且视角要跟随路线来变换,从而达到拟人的效果。
第一步,用 CompusBulider 工具创建场景
工具地址:ThingJS - 物联网3D可视化PaaS平台

然后,将场景导出,并存为 .tjs 格式

第二步,将导出的场景放在ThingJS平台上加载
ThingJS平台地址:http://www.thingjs.com/guide/?m=sample

点击上方的加号按钮,将场景模型文件导入后,进行加载

巡更要规划好路线,然后通过摄像机遵循路线形成第一人称的视角,达到拟人巡更的效果,路线可以通过摄像机飞行的方式实现,从一点到另一个点,然后设置摄像机的照射方向就好了。
第三步,实现巡更视角
通过上面的分析,巡更视角比较好实现了,创建摄像机飞行的方法,并设置位置和方向,大致如下:

设置好位置和照射的方向,每当飞行结束,立即执行下一次飞行,大致如下:

反复的调用飞行的方法,从而达到一个完整的效果,那么具体如下:


每一次设置摄像机飞行的位置后,添加执行回调方法,执行下一步要飞行的位置,后面亦是如此,实现起来比较简单。
然后看一下效果:

以第一人称视角的巡更效果成功了。
完整代码:


结语
通过上面的代码就可以发现,虽然很简单就能够实现巡更的效果,但是弊端太过明显而且有很大缺陷。
第一,重复的代码过多,比较浪费。一直都在使用的是摄像机飞行的方法,那到底能不能通过一种手段将方法封装起来。
第二,代码的复用性不强,也可以说是没有复用性,那么就没有办法重复利用。因为摄像机飞行的位置是需要自己手动设置的,所以,不同的场景就会有不同的位置,都是需要自己手动设置。
第三,修改很难,因为摄像机的飞行时通过上一次调用的,所以当上一次的位置发生改变时,那么紧接着每次都需要做一些变动,否则可能会发生摄像机横移的现象。
那么,该怎样实现可以避免上面的这些弊端或者有其他实现的办法呢?
首先想到的是,可以通过创建轨迹线,让摄像机沿着轨迹线移动,通过轨迹线配合摄像机,也可以达到第一人称的巡更效果,优势在于,不用反复的重复写同样的方法,封装之后,也有一定的复用性。
那么这次就先到这里了,下一次通过不同的方法来实现巡更的效果。
看完这篇文章的朋友如果对ThingJS感兴趣的话,可以点击http://www.thingjs.com/guide/?m=sample来尝试一下。
ThingJS平台制作第一人称视角下的巡更效果的更多相关文章
- unity中制作模拟第一人称视角下的指南针
private int zRotation; public GameObject obj; public void Update() { //obj = GameObject.Find("C ...
- D3D游戏编程系列(六):自己动手编写第一人称射击游戏之第一人称视角的构建
说起第一人称射击游戏,不得不提第一人称视角啊,没有这个,那么这个第一就无从谈起啊,我作为一个观察者究竟如何在这个地图上顺利的移动和观察呢,那么,我们一起来研究下. 我们首先来看下CDXCamera类: ...
- 如何使用threejs实现第一人称视角的移动
在数据可视化领域利用webgl来创建三维场景或VR已经越来越普遍,各种开发框架也应运而生.今天我们就通过最基本的threejs来完成第一人称视角的场景巡检功能.如果你是一位threejs的初学者或正打 ...
- unity中自制模拟第一人称视角
public float sensitivityX = 5f; public float sensitivityY = 5f; public float sensitivetyKeyBoard = 0 ...
- unity3d学习笔记(一) 第一人称视角实现和倒计时实现
unity3d学习笔记(一) 第一人称视角实现和倒计时实现 1. 第一人称视角 (1)让mainCamera和player(视角对象)同步在一起 因为我们的player是生成的,所以不能把mainCa ...
- 让camera实现类似cs第一人称视角旋转和位移
直接把这个脚本挂在摄像机上就可: using System.Collections; using System.Collections.Generic; using UnityEngine; /* * ...
- 微软Hyperlapse技术:让第一人称摄像稳定而流畅
编者按:GoPro等第一人称摄像设备已经几乎成为了极限运动者的标配,但拍摄过程中的抖动常会让画面非常糟糕.微软Hyperlapse技术实现了将第一人称录像转化成稳定而流畅的视频.该成果的论文已发表在S ...
- Unity——第一人称控制器的实现
Unity--第一人称控制器的实现 一.功能描述 在一个场景中实现人物的前后左右移动和跳跃功能:其中前后左右移动通过W.A.S.D方向键实现,跳跃功能通过空格键实现,并且考虑到重力作用,来调节跳跃功能 ...
- [UE4]第一人称与第三人称
一.给Character添加一个SkeletalMesh,并设置为第三人称模型.并设置自己看不到该模型. 二.添加给骨骼的右手添加一个Socket插槽用来挂载武器 三.判断当前角色是否被本地Contr ...
随机推荐
- Azure CosmosDB (12) 创建Cosmos DB并执行查询语句
<Windows Azure Platform 系列文章目录> The SQL API supports the following aggregate functions. SUM an ...
- vs2017 F5不会自动编译了
其实我的错误提示是:c# 不会命中断点 源代码与原始版本不同 我在网上搜索这个,发现让另存啦.格式化代码啦.批量重生成啦. 只有批量重生成好用,断点能打上,其他方法都不行. 可是每次都批量重生成太麻烦 ...
- MySQL 数据库索引
数据库索引 在数据库中.索引使数据库程序无须对整个表进行全表扫描就可以在其中找到所需的数据: 数据库中的索引是某个表中一列或者若干列值的集合.以及物理标识这些值的数据页的逻辑指针清单: MySQL 索 ...
- 工控随笔_05_西门子_Step7软件仿真方法
现在的PLC厂商提供的开发环境都具备仿真能力.无论是西门子.三菱.罗克韦尔还是ABB 或是其他一些厂商提供的产品都具有仿真功能. 仿真就是在没有硬件的情况下来测试程序功能,同时也为初学者提供了方便,即 ...
- Charles更新至4.2.8特别版
下载地址:链接:https://pan.baidu.com/s/1c2wXdBE 提取码:g7qc 更多工具/教程可进入Q群:测试技术学习小组 478717918
- Java五种单例区别
详细请参考如下链接: http://www.voidcn.com/article/p-shzgsluz-bqa.html https://blog.csdn.net/android_freshman/ ...
- 洛谷P1039 侦探推理(模拟)
侦探推理 题目描述 明明同学最近迷上了侦探漫画<柯南>并沉醉于推理游戏之中,于是他召集了一群同学玩推理游戏.游戏的内容是这样的,明明的同学们先商量好由其中的一个人充当罪犯(在明明不知情的情 ...
- 了解原型设计工具pencil project
Pencil Pencil是一个功能强大的界面原型设计工具,可以设计网页和桌面程序界面,侧重点在于设计,支持自定义控件和导出模板,功能确实很强大. 内置形状集合 从2.0.2开始铅笔默认包含更多形状集 ...
- CSS3之3D轮播图
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- thinkphp中插入ueditor编辑器的代码
1.需要在header中加入以下js内容:<script type="text/javascript" src="{$smarty.const.__ROOT__}/ ...