今天想要做一个类似巡更的过程,就像是在学校保安巡更,小区保安巡更一样。巡更需要用到相应的场景,比如说:园区、学校、超市以及工厂等等,然后需要规划好路线也就是巡更的路线,并且视角要跟随路线来变换,从而达到拟人的效果。

第一步,用 CompusBulider 工具创建场景

工具地址:ThingJS - 物联网3D可视化PaaS平

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

第二步,将导出的场景放在ThingJS平台上加载

ThingJS平台地址:http://www.thingjs.com/guide/?m=sample

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

巡更要规划好路线,然后通过摄像机遵循路线形成第一人称的视角,达到拟人巡更的效果,路线可以通过摄像机飞行的方式实现,从一点到另一个点,然后设置摄像机的照射方向就好了。

第三步,实现巡更视角

通过上面的分析,巡更视角比较好实现了,创建摄像机飞行的方法,并设置位置和方向,大致如下:

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

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

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

然后看一下效果:

以第一人称视角的巡更效果成功了。

完整代码:

结语

通过上面的代码就可以发现,虽然很简单就能够实现巡更的效果,但是弊端太过明显而且有很大缺陷。

第一,重复的代码过多,比较浪费。一直都在使用的是摄像机飞行的方法,那到底能不能通过一种手段将方法封装起来。

第二,代码的复用性不强,也可以说是没有复用性,那么就没有办法重复利用。因为摄像机飞行的位置是需要自己手动设置的,所以,不同的场景就会有不同的位置,都是需要自己手动设置。

第三,修改很难,因为摄像机的飞行时通过上一次调用的,所以当上一次的位置发生改变时,那么紧接着每次都需要做一些变动,否则可能会发生摄像机横移的现象。

那么,该怎样实现可以避免上面的这些弊端或者有其他实现的办法呢?

首先想到的是,可以通过创建轨迹线,让摄像机沿着轨迹线移动,通过轨迹线配合摄像机,也可以达到第一人称的巡更效果,优势在于,不用反复的重复写同样的方法,封装之后,也有一定的复用性。

那么这次就先到这里了,下一次通过不同的方法来实现巡更的效果。

看完这篇文章的朋友如果对ThingJS感兴趣的话,可以点击http://www.thingjs.com/guide/?m=sample来尝试一下。

ThingJS平台制作第一人称视角下的巡更效果的更多相关文章

  1. unity中制作模拟第一人称视角下的指南针

    private int zRotation; public GameObject obj; public void Update() { //obj = GameObject.Find("C ...

  2. D3D游戏编程系列(六):自己动手编写第一人称射击游戏之第一人称视角的构建

    说起第一人称射击游戏,不得不提第一人称视角啊,没有这个,那么这个第一就无从谈起啊,我作为一个观察者究竟如何在这个地图上顺利的移动和观察呢,那么,我们一起来研究下. 我们首先来看下CDXCamera类: ...

  3. 如何使用threejs实现第一人称视角的移动

    在数据可视化领域利用webgl来创建三维场景或VR已经越来越普遍,各种开发框架也应运而生.今天我们就通过最基本的threejs来完成第一人称视角的场景巡检功能.如果你是一位threejs的初学者或正打 ...

  4. unity中自制模拟第一人称视角

    public float sensitivityX = 5f; public float sensitivityY = 5f; public float sensitivetyKeyBoard = 0 ...

  5. unity3d学习笔记(一) 第一人称视角实现和倒计时实现

    unity3d学习笔记(一) 第一人称视角实现和倒计时实现 1. 第一人称视角 (1)让mainCamera和player(视角对象)同步在一起 因为我们的player是生成的,所以不能把mainCa ...

  6. 让camera实现类似cs第一人称视角旋转和位移

    直接把这个脚本挂在摄像机上就可: using System.Collections; using System.Collections.Generic; using UnityEngine; /* * ...

  7. 微软Hyperlapse技术:让第一人称摄像稳定而流畅

    编者按:GoPro等第一人称摄像设备已经几乎成为了极限运动者的标配,但拍摄过程中的抖动常会让画面非常糟糕.微软Hyperlapse技术实现了将第一人称录像转化成稳定而流畅的视频.该成果的论文已发表在S ...

  8. Unity——第一人称控制器的实现

    Unity--第一人称控制器的实现 一.功能描述 在一个场景中实现人物的前后左右移动和跳跃功能:其中前后左右移动通过W.A.S.D方向键实现,跳跃功能通过空格键实现,并且考虑到重力作用,来调节跳跃功能 ...

  9. [UE4]第一人称与第三人称

    一.给Character添加一个SkeletalMesh,并设置为第三人称模型.并设置自己看不到该模型. 二.添加给骨骼的右手添加一个Socket插槽用来挂载武器 三.判断当前角色是否被本地Contr ...

随机推荐

  1. bsdiff差分算法

    bsdiff的基本原理 bsdiff是由Conlin Percival开源的一个优秀的差分算法,而且是跨平台的.在Android系统中所使用的imgdiff本质上就是bsdiff. bsdiff的依据 ...

  2. 2019.1.17 homework

    1.求两个整型数较大值 #include<stdio.h>int compare_big(int var1,int var2);int main(void){    int big,x,y ...

  3. go 语言之 生产者消费模型

    简易的生产者消费模型,通过管道[也可以理解为队列],管道是先进先出,主要是理解chan 生产者使用make将chan初始化,并且设置chan长度,如果不设置,生产者就写入不了通道 go 是使用线程开始 ...

  4. python3-基础6

    函数嵌套调用: 再调用一个函数的过程中,又调用了其他的函数 函数的嵌套定义:在一个函数的内部,又定义另外一个函数,函数内部定义的变量,在外部不能被调用 名称空间:一种隔离的概念,专门用来存放名字的地方 ...

  5. Web高级 网站安全

    1. SQL注入 虽然现在SQL注入发生的情况总的来说越来越少,还是提二句.关于什么是SQL注入大家都知道就不多说了. 1.1 原理 我们在做前端页面的时候,少不了会又各种输入框,然后通过GET或者P ...

  6. Cleanmymac X好不好用?

    Cleanmymac X是一款Mac清理软件,能够帮助我们快速实现快速实现磁盘清理,是mac用户的智能助手.那么为什么大家会认定它并坚定不移呢?小编带你感受感受. 1. 简洁大气的外观. 用户正版官方 ...

  7. Ubuntu 16.04 安装Go 1.9.2

    系统环境 Ubuntu: 16.04 Go: 1.9.2 安装步骤 $ curl -O https://storage.googleapis.com/golang/go1.9.linux-amd64. ...

  8. oracle修改sequence,查询sequence信息

    -- 1.查询sequence当前值. select serviceproviderid.nextval from dual; -- 2.查询sequence最大值SELECT SEQUENCE_NA ...

  9. [STM32F103]PWM输入捕获配置

    l 初始化定时器和通道对应IO的时钟. l 初始化IO口,模式为输入: GPIO_Init(); GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPD; //PA0 ...

  10. Java笔记Spring(五)

    C:\apache-tomcat-8.0.36\bin\catalina.bat run [2018-05-23 02:30:31,657] Artifact demo-springmvc:war e ...