Introduction
In this article, you will learn how to write Cesium 3D Tiles from GeoJSON and JPEG. Using GeoJSON of building boundaries from the City of Surrey in British Columbia, Canada, we will create a snowy 3D city in Cesium. This simple exercise will cover working with coordinate systems and applying a texture.
With many performance improvements to 3D tiling and texture handling in the Cesium 3D Tiles writer, we recommend using FME 2022.0 and newer for the best results.
Requirements
FME 2022.0 of nieuwer
Input
Als input is een CityGML-file gebruikt welke een LoD0, LoD1 en een getextureerde LoD2-representatie bevat van gebouwen. Daarnaast zijn in de LoD2 representatie ook BuildingParts, BuildingInstallations en Roof-, Wall-, Ground-, Closure-, OuterCeiling- en OuterFloorSurfaces gedefinieerd. Het is niet noodzakelijk elk element binnen elke workspace te gebruiken. In de beschrijvingen hieronder wordt aangegeven welke wel nodig zijn.
LoD1
Voor het genereren van 3DTiles LoD1 wordt alleen gebruik gemaakt van de LoD1-geometrie in de CityGML-file. Daarvoor wordt bij de parameter “LODs to Read” alleen “LOD 1” gebruikt. De elementen Building en BuildingPart moeten uitgelezen worden. BuildingParts worden per gebouw geaggregeerd zodat ze het gehele gebouw als één geometrie weergeven. Vervolgens wordt deze geometrie samengevoegd met het geometrie-loze element Building. Deze bevat namelijk de attributen die weggeschreven gaan worden naar de 3DTiles. De parameters van de 3DTiles-writer worden niet gewijzigd en de gebouwen worden standaard als lichtgrijze objecten weggeschreven.
LoD2
Het genereren van 3DTiles LoD2 gebeurt grotendeels op dezelfde wijze als bij LoD1. Bij de parameter “LODs to Read” wordt nu “LOD 2” gebruikt. Omdat de CityGML-file ook textures bevat en deze nu niet gebruikt worden, wordt de AppearanceRemover toegepast. Verder verloopt het proces hetzelfde als bij LoD1.
LoD2 textured
Ook het genereren van 3DTiles LoD2 textured volgt nagenoeg hetzelfde proces. Ten opzichte van de normale LoD2 wordt de AppearanceRemover niet gebruikt. De parameters van de writer worden ook niet aangepast. Hierbij is het wel van nut te weten dat er een keuze is voor het aanmaken van “Atlas Textures”. De staat default aan, waardoor de doorlooptijd lang is (ca. 9 uur) maar de performance in een Cesium-viewer wel beter is. Als deze uitgezet wordt zal de doorlooptijd korter worden, maar de performance in Cesium weer minder.
LoD2 colored
Het is ook mogelijk elk type surface (dak, muur enz.) een aparte kleur te geven. Hiervoor zijn wel alle beschikbare elementen nodig die de CityGML-file bevat. Elke type surface krijgt een kleur toegewezen waarna ze allen geaggregeerd worden tot gebouw-niveau.
Mogelijke opties
Naast de hierboven redelijk voor de hand liggende beschreven opties, zijn er nog meer mogelijkheden:
- LoD1/LoD2 in zijn geheel een andere kleur, of op basis van een specifiek attribuut. Bijvoorbeeld een classificatie op basis van bouwjaar.
- Buildings/BuildingParts/BuildingInstallations als afzonderlijke geometrie met eventueel verschillende kleuren. Hierdoor kunnen attributen die aan BuildingParts of BuildingInstallations gekoppeld zijn worden weergegeven. Denk bijvoorbeeld aan WOZ-gerelateerde gegevens.
- Surfaces als afzonderlijke geometrie.