cesium for unreal文档中的更新

以前调试过cesium for unreal,再调试时一惊,发现api变了。
静下心来思考流程
1,样本条要放在actor里
2,包含样本条的actor坐标放在原点
3,样本条坐标和法向量都要从经纬高到ue空间转换

变的只是api,所以深入了代码看了下,传递的经纬度从度数到了弧度。

废话不多说,上代码

//按照datatable进行获取数据
UCLASS()
class CESIUM_FLY_API APlaneTrack : public AActor
{
GENERATED_BODY()

public:
// Sets default values for this actor’s properties
APlaneTrack();

protected:
// Called when the game starts or when spawned
virtual void BeginPlay() override;

public:
// Called every frame
virtual void Tick(float DeltaTime) override;

public:
//用于保存航班数据的虚幻引擎数据表
UPROPERTY(EditAnywhere, Category = “FlightTracker”)
UDataTable* aircraftsRawDataTable;

//从两点间插值创建样条线轨迹
UFUNCTION(BlueprintCallable)
void LoadSplineTrackPoints();

UFUNCTION(BlueprintCallable)
USplineComponent* GetSplineTrack()
{
	return splineTrack;
}

//Cesium工具类,包含很多有用的坐标转换相关的函数
UPROPERTY(EditAnywhere, Category = "FlightTracker")
	ACesiumGeoreference* cesiumGeoreference;

private:
//根组件
class USceneComponent* RootScene;
//代表航班轨迹的样条线成员变量
USplineComponent* splineTrack;

};

// Called when the game starts or when spawned
void APlaneTrack::BeginPlay()
{
Super::BeginPlay();

}

// Called every frame
void APlaneTrack::Tick(float DeltaTime)
{
Super::Tick(DeltaTime);
}

void APlaneTrack::LoadSplineTrackPoints()
{
if (this->aircraftsRawDataTable == nullptr)
{
return;
}
if (nullptr == this->cesiumGeoreference)
{
return;
}

//初始化轨迹
splineTrack = NewObject<USplineComponent>(this,TEXT("SplineTrack"));
splineTrack->RegisterComponent();
//让样本线在运行模式下可见
splineTrack->SetDrawDebug(true);
//设置样本条的颜色
splineTrack->SetUnselectedSplineSegmentColor(FLinearColor(1.0f, 0.0f, 0.0f));
//设置样条线的粗细或者宽度
splineTrack->ScaleVisualizationWidth = 70.0f;
splineTrack->AttachToComponent(RootScene, FAttachmentTransformRules::KeepRelativeTransform);
int32 pointIndex = 0;
for (auto& row : this->aircraftsRawDataTable->GetRowMap())
{
	FAircraftRawData* point = (FAircraftRawData*)row.Value;
	//获取经纬高,转为Ue4坐标
	double pointLatitude = point->latitude;
	double pointLongitude = point->longitude;
	double pointHeight = point->height;

#if 1 //先统一加1000
pointHeight += 100;
#endif
//计算ue里的坐标
glm::dvec3 posXYZ = this->cesiumGeoreference->TransformLongitudeLatitudeHeightToUnreal(glm::dvec3(
FMath::DegreesToRadians(pointLongitude),
FMath::DegreesToRadians(pointLatitude),
FMath::DegreesToRadians(pointHeight)));
FVector splinePointPosition = FVector(posXYZ.x, posXYZ.y, posXYZ.z);
this->splineTrack->AddSplinePointAtIndex(splinePointPosition, pointIndex, ESplineCoordinateSpace::World, false);

	//获取飞机的向上方向
	const CesiumGeospatial::Ellipsoid& ell = CesiumGeospatial::Ellipsoid::WGS84;
	glm::dvec3 upVector = ell.geodeticSurfaceNormal(CesiumGeospatial::Cartographic(
		FMath::DegreesToRadians(pointLongitude),
		FMath::DegreesToRadians(pointLatitude),
		FMath::DegreesToRadians(pointHeight)));
	
	//计算飞机上的UE向上方向
	glm::dvec3 unrealUp = this->cesiumGeoreference->TransformLongitudeLatitudeHeightToUnreal(upVector);
	this->splineTrack->SetUpVectorAtSplinePoint(pointIndex, FVector(unrealUp.x, unrealUp.y, unrealUp.z), ESplineCoordinateSpace::World, false);
	pointIndex++;


}
this->splineTrack->UpdateSpline();
//this->AttachToComponent(this->cesiumGeoreference->GetRootComponent(), FAttachmentTransformRules::KeepRelativeTransform);

}
另外数据库里的高度都是负值,钻到地底下了。所以都加个100
在这里插入图片描述
运行Ok

Cesium for Unreal是一款用于虚幻引擎的插件,用于将Cesium地理数据和功能集成到虚幻引擎。以下是关于Cesium for Unreal教程的详细介绍。 首先,你需要下载和安装Cesium for Unreal插件。你可以在Cesium的官方网站上找到下载链接。安装完成后,你可以在虚幻引擎的插件列表找到Cesium for Unreal。 一旦安装完成,你可以开始使用Cesium for Unreal开发地理相关的应用程序。首先,你需要导入Cesium的地理数据。你可以通过Cesium ion来获取全球范围的卫星图像、高程数据、地形数据等。导入这些数据后,你可以在虚幻引擎创建一个真实的地球模型。 接下来,你可以使用Cesium for Unreal的工具和功能来操作地球模型。这些功能包括地理位置定位、相机控制、地理搜索、地理标记等。通过这些功能,你可以在虚幻引擎创建出具有真实地球数据的应用程序。 除了基本的地理功能,Cesium for Unreal还提供了一些额外的功能和效果,用于增强你的地理应用程序的视觉效果。你可以使用Cesium的渲染器和效果来创建出逼真的地球表面和大气层。你还可以使用Cesium的光照模型来呈现出日出日落、星空等效果。 最后,你可以使用Cesium for Unreal的工具和API来开发自定义的地理应用程序。你可以根据需要添加交互功能、传感器支持、物理模拟等。通过使用虚幻引擎的强大功能和Cesium的地理数据集成,你可以创建出高度逼真和具有交互性的地理应用程序。 总之,Cesium for Unreal是一个强大的插件,用于将Cesium的地理数据和功能整合到虚幻引擎。使用Cesium for Unreal,你可以创建出真实地球数据的应用程序,并添加各种地理功能和效果。无论是开发虚拟旅游应用程序还是构建地理可视化工具,Cesium for Unreal都是一个非常有用的工具。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值