使用Cesium for Unreal插件构建航班轨迹

Build a Flight Tracker with Cesium for Unreal

使用航班ADS-B数据创建USplineComponent(样条曲线组件)构建航班轨迹,并通过Timeline控制动画飞行的速度。

航班ADS-B数据

导入航班Excel或者csv数据到FAircraftRawData

USTRUCT(BlueprintType)
struct FAircraftRawData : public FTableRowBase
{GENERATED_USTRUCT_BODY()public:FAircraftRawData(): Longitude(0.0), Latitude(0.0), Height(0.0){}UPROPERTY(EditAnywhere, Category = "FlightTracker")double Longitude;UPROPERTY(EditAnywhere, Category = "FlightTracker")double Latitude;UPROPERTY(EditAnywhere, Category = "FlightTracker")double Height;
};

生成曲线轨迹

  void APlaneTrack::LoadSplineTrackPoints(){if (this->AircraftsRawDataTable != nullptr && this->CesiumGeoreference != nullptr){int32 PointIndex = 0;for (auto& row : this->AircraftsRawDataTable->GetRowMap()){FAircraftRawData* Point = (FAircraftRawData*)row.Value;// Get row data point in lat/long/alt and transform it into UE4 pointsdouble PointLatitude = Point->Latitude;double PointLongitude = Point->Longitude;double PointHeight = Point->Height;// Compute the position in UE coordinatesglm::dvec3 UECoords = this->CesiumGeoreference->TransformLongitudeLatitudeHeightToUe(glm::dvec3(PointLongitude, PointLatitude, PointHeight));FVector SplinePointPosition = FVector(UECoords.x, UECoords.y, UECoords.z);this->SplineTrack->AddSplinePointAtIndex(SplinePointPosition, PointIndex, ESplineCoordinateSpace::World, false);// Get the up vector at the position to orient the aircraftconst CesiumGeospatial::Ellipsoid& Ellipsoid = CesiumGeospatial::Ellipsoid::WGS84;glm::dvec3 upVector = Ellipsoid.geodeticSurfaceNormal(CesiumGeospatial::Cartographic(FMath::DegreesToRadians(PointLongitude), FMath::DegreesToRadians(PointLatitude), FMath::DegreesToRadians(PointHeight)));// Compute the up vector at each point to correctly orient the planeglm::dvec4 ecefUp(upVector, 0.0);const glm::dmat4& ecefToUnreal = this->CesiumGeoreference->GetEllipsoidCenteredToUnrealWorldTransform();glm::dvec4 unrealUp = ecefToUnreal * ecefUp;this->SplineTrack->SetUpVectorAtSplinePoint(PointIndex, FVector(unrealUp.x, unrealUp.y, unrealUp.z), ESplineCoordinateSpace::World, false);PointIndex++;}this->SplineTrack->UpdateSpline();}}

蓝图实现控制动画

蓝图控制不同角度观察飞机姿态

参考文档

  1. Build a Flight Tracker with Cesium for Unreal
  2. Cesium for Unreal Getting Started Tutorials
  3. 使用Cesium for Unreal插件构建航班轨迹

使用Cesium for Unreal插件构建航班轨迹相关推荐

  1. 解决UE4(使用Cesium for unreal插件)拖入三维控件actor时,显示设置为场景后在界面中变为黑方块的解决办法

    点击进入"batch_point_actor" 选中"widget" 右侧细节面板分别搜索"硬件"和"双面",勾选搜索结 ...

  2. Cesium for Unreal 数据加载 场景漫游 粒子效果 视频监控 VR预览

    Cesium for Unreal: Cesium出了UE插件后一直没有时间学习体验,而且也从来没有接触过UE开发,只是在网上看过一些用UE做的数字孪生的案例,看上去确实是十分炫酷,正好最近工作不是很 ...

  3. matlab如何打开dcm_MATLAB结合Unreal Engine构建用以自动驾驶仿真测试的逼真驾驶场景...

    之前的文章<MATLAB/Simulink自动驾驶工具箱之Driving Scenario Designer>提到了MathWorks自己开发的场景构建工具Driving Scenario ...

  4. 使用Maven插件构建SpringBoot项目,生成Docker镜像push到DockerHub上

    一个用于构建和推送Docker镜像的Maven插件. 使用Maven插件构建Docker镜像,将Docker镜像push到DockerHub上,或者私有仓库,上一篇文章是手写Dockerfile,这篇 ...

  5. 地区的json数据_Python 连接开放航空交通数据,轻松构建航班跟踪应用!

    作者 | geomatics译者 | 弯月,责编 | 郑丽媛头图 | CSDN 下载自视觉中国出品 | CSDN(ID:CSDNnews) 以下为译文: 我喜欢跟踪位置这个主题,因为感觉像是我有第六感 ...

  6. Docker学习总结(31)——使用Maven插件构建docker镜像

    Maven是一个强大的项目管理与构建工具.如果可以使用Maven构建Docker镜像,以下几款Maven的Docker插件比较常用. 插件名称 官方地址 docker-maven-plugin htt ...

  7. Python 连接开放航空交通数据,轻松构建航班跟踪应用!

    作者 | geomatics 译者 | 弯月,责编 | 郑丽媛 头图 | CSDN 下载自视觉中国 出品 | CSDN(ID:CSDNnews) 以下为译文: 我喜欢跟踪位置这个主题,因为感觉像是我有 ...

  8. Cesium矢量地图插件CesiumVectorTile 发布新版本

    Cesium矢量地图插件CesiumVectorTile 发布新版本 一周前CesiumVectorTile 1.2.1版本就已经更新到npm里了,本次更新主要解决Cesium最新版本适配问题. Ce ...

  9. IDEA中使用Docker插件构建镜像并推送至私服Harbor

    IDEA中使用Docker插件构建镜像并推送至私服Harbor 一.开启Docker服务器的远程访问 1.1 开启2375远程访问 1.2 添加harbor镜像配置 1.3 重启docker服务 二. ...

最新文章

  1. 第二课_课后习题解答
  2. “金主爸爸快回来交学费吧!”疫情让中国留学生难以返校,国外高校面临资金短缺...
  3. Spring Cloud Stream消费失败后的处理策略(三):使用DLQ队列(RabbitMQ)
  4. 学python需要学数据库吗-python支持哪些数据库
  5. B1277 [HNOI2002]Tinux系统 树形dp
  6. 软考-信息系统项目管理师-信息系统项目管理基础
  7. windows10配置php7.1+apache2.4+mysql5.7
  8. 4 读写文件_和尧名大叔一起从0开始学Python编程-简单读写文件
  9. 如何解决常见的 Active Directory 复制错误
  10. python类内置装饰器(一分钟读懂)
  11. jQuery Mobile中的页面加载与跳转机制
  12. 关于如何将多个Cpp文件关联起来
  13. Spark学习内容介绍
  14. 服务器能打开其他网站打不开,为什么有的网页打不开其他能打开(浏览器网页打不开的原因有哪些)...
  15. mysql什么情况用引号_sql中什么时候需要用双引号,什么时候用单引号;
  16. arm9开发板学习笔记之程序烧录
  17. 【历史上的今天】8 月 18 日:硅谷神话的衰落;微软发布 QuickBASIC;Adobe Audition 问世
  18. 智慧消防物联网落地案例(云南、福建、陕西) java 物联网智慧消防
  19. scrapy——抓取知乎
  20. C# 实现WinForm窗口最小化到系统托盘代码

热门文章

  1. 你根本不会用搜索引擎
  2. 【Pygame实战】经典的坦克大战游戏,勾起童年无限回忆《坦克大战小霸王版》
  3. Source Code Pro字体使用
  4. python中info的功能_在python中,模块对象的info属性包含什么?
  5. [电动智能汽车-5]:原理 - 动力系统-电机控制器MCU与驱动电机(马达)
  6. 计算机网络原理 课后题2
  7. html飞机动画,html5 canvas纸飞机跟随鼠标飞行动画
  8. RedHat 6.4使用yum安装出现This system is not registered to Red Hat Sub
  9. 东南大学计算机科学与工程专业,东南大学的计算机系怎么样?
  10. 吴文俊: 中国古代数学对世界文化的伟大贡献