Hello @zoodinger, welcome to the forum. The two options for this are:
- CityGML
- KML/COLLADA
Typically, software like CityEngine, Rhino, 3DCityDB, SketchUp, and others will allow you to export your city data in one of these formats. How is the data being generated?
Here is some information about KML/COLLADA: Create 3D Tiles from KML/COLLADA with Per-Building Data – Cesium
Here is a sample KML file (with just one building):
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
<Document>
<Placemark>
<name>Name of Feature</name>
<Model>
<Link>
<href>filename.dae</href>
</Link>
<Location>
<longitude>xxx.xxx</longitude>
<latitude>xxx.xxx</latitude>
<altitude>xxx</altitude>
</Location>
<Orientation>
<heading>xxx</heading>
<tilt>xxx</tilt>
<roll>xxx</roll>
</Orientation>
<Scale>
<x>1</x>
<y>1</y>
<z>1</z>
</Scale>
</Model>
</Placemark>
Using CityGML or KML/COLLADA will allow you to upload multiple buildings without combining them into a single 3D object, and it will also allow each building to have its own metadata. You can test the metadata by clicking on a building in Sandcastle.
As for adjusting the positions of the buildings, could you tell me more about the workflow you’re looking for there? If the source data is already georeferenced via CityGML or KML/COLLADA, you wouldn’t be able to use the Adjust Tileset Location GUI option in ion, but you could reposition the buildings in the source data itself. You may also be able to move them client-side using CesiumJS, if that’s what you’re looking for.
Here is some general information on file formats accepted by the tilers: Tiler Data Types and Formats – Cesium
Matt