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

使用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 points
        double PointLatitude = Point->Latitude;
        double PointLongitude = Point->Longitude;
        double PointHeight = Point->Height;

        // Compute the position in UE coordinates
        glm::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 aircraft
        const 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 plane
        glm::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插件构建航班轨迹
  • 4
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 5
    评论
Cesium for Unreal是一个用于在虚幻引擎中集成Cesium插件,它允许您在虚幻引擎中使用Cesium的地理可视化和地球渲染功能。要在离线环境下使用Cesium for Unreal,您可以按照以下步骤进行操作: 1. 下载和安装插件:将Cesium for Unreal插件下载到您的计算机上,并按照Cesium for Unreal官方文档中提供的说明进行安装。确保您已经安装了虚幻引擎,并且版本与插件兼容。 2. 准备离线地形数据:在离线环境中,您需要准备地形数据作为输入。这可以是地形切片、高程数据或其他格式的地形数据。 3. 导入地形数据:在虚幻引擎中,您可以使用Cesium for Unreal提供的工具来导入地形数据。具体步骤包括创建一个地形图层、指定地形数据源并进行导入。详细的导入步骤可以在Cesium for Unreal官方文档中找到。 4. 配置和使用插件功能:一旦地形数据导入成功,您可以使用Cesium for Unreal插件提供的功能来创建地球场景、添加3D模型、渲染卫星图像等。通过在虚幻引擎中使用Cesium for Unreal的蓝图和工具,您可以实现地理可视化和地球渲染效果。 请注意,Cesium for Unreal是一个商业插件,您可能需要购买许可证才能在离线环境中使用完整的功能。此外,确保遵守相关的许可和使用条款。 以上是使用Cesium for Unreal在离线环境中进行地理可视化和地球渲染的基本步骤。建议您参考Cesium for Unreal官方文档以获取更详细和具体的指导。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值