Cpp Project - jgoffeney/Cesium4Unreal GitHub Wiki

Back

Accessing Cesium in Visual Studio

  • Within the Source/ProjectName/*.Build.cs file add the CesiumRuntime to the PublicDependencyModuleNames.
  • Note the inclusion of C++17 support below it. Required for things like use of std::optional within the Cesium library.
// Copyright Epic Games, Inc. All Rights Reserved.

using UnrealBuildTool;

public class CesiumTest : ModuleRules
{
	public CesiumTest(ReadOnlyTargetRules Target) : base(Target)
	{
		PCHUsage = PCHUsageMode.UseExplicitOrSharedPCHs;
	
		PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore", "CesiumRuntime" });

		PrivateDependencyModuleNames.AddRange(new string[] {  });

		CppStandard = CppStandardVersion.Cpp17;

		// Uncomment if you are using Slate UI
		// PrivateDependencyModuleNames.AddRange(new string[] { "Slate", "SlateCore" });

		// Uncomment if you are using online features
		// PrivateDependencyModuleNames.Add("OnlineSubsystem");

		// To include OnlineSubsystemSteam, add it to the plugins section in your uproject file with the Enabled attribute set to true
	}
}

Loading Tileset

To load the tileset at runtime create an Actor subclass and then add the loading code to the BeginPlay() function.

// Called when the game starts or when spawned
void ATileLoader::BeginPlay()
{
	ACesium3DTileset* tileSet =
		Cast<ACesium3DTileset>(UGameplayStatics::BeginDeferredActorSpawnFromClass(
			GetWorld(),
			ACesium3DTileset::StaticClass(),
			FTransform()));

	if (tileSet) {
		tileSet->SetTilesetSource(ETilesetSource::FromUrl);
		tileSet->SetUrl("file:///K:/Data/3dTiles/3dtiles/tileset.json");
	}
	
	Super::BeginPlay();
	
}

Getting a Georeference and Converting a Point to Unreal Coords

// Cesium Includes
#include "CesiumGeoreference.h"

ACesiumGeoreference * geoReference = ACesiumGeoreference::GetDefaultGeoreference(this);

glm::dvec3 UECoords = geoReference->TransformLongitudeLatitudeHeightToUnreal(glm::dvec3(latCoord, longCoord, elevation));

Updating Time Zone