Cesium 3D Tiles Writer
This writer allows FME to write large 3D datasets for use in the Cesium virtual globe environment.
For more information on Cesium, see https://cesium.com/.
Cesium 3D Tiles Product and System Requirements
Format |
FME Platform |
Operating System |
||||
---|---|---|---|---|---|---|
Reader/Writer |
FME Form |
FME Flow |
FME Flow Hosted |
Windows 64-bit |
Linux |
Mac |
Writer |
Yes |
Yes |
Yes |
Yes |
Yes |
Yes |
The 3D Tiles format allows Cesium to efficiently display very large datasets of 3D objects, such as an entire city. The dataset is divided into a hierarchy of tiles, and Cesium will only render tiles that are visible from the current viewpoint.
A 3D Tiles dataset consists of a single JSON file, tileset.json, which outlines the tile structure of the 3D dataset. Each tile will refer to additional files that contain features, attributes and geometries and textures.
Writer Overview
The Cesium 3D Tiles writer produces a separate tileset for each FME feature type. All features with a single feature type will be part of the same 3D scene.
The writer will distribute features among a hierarchy of tiles using a quad-tree structure. When rendering the dataset, Cesium will use a selection algorithm to determine which tiles should be displayed, based on the position and zoom level of the current view:
- When the view is zoomed in, the leaf nodes of the tree will be displayed, showing fully detailed features.
- When the view is zoomed out, a higher-level tile is displayed instead of the lower-level tiles, showing a representative subset of the features which would be displayed at a closer zoom. This allows Cesium to manage the amount of geometry and texture information that must be rendered at any time.
The distribution of features among the tiles is handled automatically by the 3D Tiles Writer.
Writing Large Mesh or Point Cloud Features
The writer does not split up features. For example, if a feature written is one large mesh, there will only be a few tiles written. The result will be tiles with too many faces, and this will likely make rendering slow on the client side.
In this case, you can divide the mesh into more features. One way to do this is by inserting a Tiler transformer, and setting Define Tiles By to Number of Tiles.
- Columns – Specify the number of tiles desired along the x axis.
- Rows – Specify the number of tiles desired along the y axis.
For example, if you set both Columns and Rows to 7, this will yield 47 tiles.
Note that this solution can also be used to break up other single-feature datasets such as point clouds when writing them to 3D Tiles.