87 lines
4.3 KiB
Markdown
87 lines
4.3 KiB
Markdown
# Cesium Native
|
|
|
|
Cesium Native is a set of C++ libraries for 3D geospatial, including:
|
|
|
|
* [3D Tiles](https://github.com/CesiumGS/3d-tiles) runtime streaming
|
|
* lightweight glTF serialization and deserialization, and
|
|
* high-precision 3D geospatial math types and functions, including support for global-scale WGS84 ellipsoids.
|
|
|
|
[](https://github.com/CesiumGS/cesium-native/blob/main/LICENSE)
|
|
[](https://travis-ci.com/CesiumGS/cesium-native)
|
|
|
|
Cesium Native powers Cesium's runtime integrations for [Cesium for Unreal](https://github.com/CesiumGS/cesium-unreal), [Cesium for Unity](https://github.com/CesiumGS/cesium-unity), [Cesium for Omniverse](https://github.com/CesiumGS/cesium-omniverse), and [Cesium for O3DE](https://github.com/CesiumGS/cesium-o3de). Cesium Native is the foundational layer for any 3D geospatial software, especially those that want to stream 3D Tiles.
|
|
|
|

|
|
*<p align="center">A high-level Cesium platform architecture with the runtime integrations powered by Cesium Native and streaming content from Cesium ion.</p>*
|
|
|
|
### :card_file_box:Libraries Overview
|
|
|
|
| Library | Description |
|
|
| -- | -- |
|
|
| **Cesium3DTiles** | Lightweight 3D Tiles classes. |
|
|
| **Cesium3DTilesReader** | 3D Tiles deserialization, including 3D Tiles extension support. |
|
|
| **Cesium3DTilesWriter** | 3D Tiles serialization, including 3D Tiles extension support. |
|
|
| **Cesium3DTilesSelection** | Runtime streaming, decoding, level of detail selection, culling, cache management, and decoding of 3D Tiles. |
|
|
| **CesiumAsync** | Classes for multi-threaded asynchronous tasks. |
|
|
| **CesiumGeometry** | Common 3D geometry classes; and bounds testing, intersection testing, and spatial indexing algorithms. |
|
|
| **CesiumGeospatial** | 3D geospatial math types and functions for ellipsoids, transforms, projections. |
|
|
| **CesiumGltf** | Lightweight glTF processing and optimization functions. |
|
|
| **CesiumGltfReader** | glTF deserialization / decoding, including glTF extension support (`KHR_draco_mesh_compression` etc). |
|
|
| **CesiumGltfWriter** | glTF serialization / encoding, including glTF extension support. |
|
|
| **CesiumIonClient** | Functions to access [Cesium ion](https://cesium.com/cesium-ion/) accounts and 3D tilesets using ion's REST API. |
|
|
| **CesiumJsonReader** | Reads JSON from a buffer into statically-typed classes. |
|
|
| **CesiumJsonWriter** | Writes JSON from statically-typed classes into a buffer. |
|
|
| **CesiumUtility** | Utility functions for JSON parsing, URI processing, etc. |
|
|
|
|
|
|
### :green_book:License
|
|
|
|
[Apache 2.0](http://www.apache.org/licenses/LICENSE-2.0.html). Cesium Native is free for both commercial and non-commercial use.
|
|
|
|
## 💻Developers
|
|
|
|
### ⭐Prerequisites
|
|
|
|
* Visual Studio 2017 (or newer), GCC v7.x+, Clang 10+. Other compilers may work but haven't been tested.
|
|
* CMake
|
|
* For best JPEG-decoding performance, you must have [nasm](https://www.nasm.us/) installed so that CMake can find it. Everything will work fine without it, just slower.
|
|
|
|
### :rocket:Getting Started
|
|
|
|
#### Clone the repo
|
|
|
|
Check out the repo with:
|
|
|
|
```bash
|
|
git clone git@github.com:CesiumGS/cesium-native.git --recurse-submodules
|
|
```
|
|
|
|
If you forget the `--recurse-submodules`, nothing will work because the git submodules will be missing. You should be able to fix it with:
|
|
|
|
```bash
|
|
git submodule update --init --recursive
|
|
```
|
|
|
|
#### Compile
|
|
|
|
You can then build cesium-native on the command-line with CMake:
|
|
|
|
```bash
|
|
## Windows compilation using Visual Studio
|
|
cmake -B build -S . -G "Visual Studio 15 2017 Win64"
|
|
cmake --build build --config Debug
|
|
cmake --build build --config Release
|
|
|
|
## Linux compilation
|
|
cmake -B build -S .
|
|
cmake --build build
|
|
```
|
|
|
|
Or, you can easily build it in Visual Studio Code with the `CMake Tools` extension installed. It should prompt you to generate project files from CMake. On Windows, choose `Visual Studio 2017 Release - amd64` as the kit to build. Or choose an appropriate kit for your platform. Then press Ctrl-Shift-P and execute the `CMake: Build` task or press F7.
|
|
|
|
#### Generate Documentation
|
|
|
|
* Install [Doxygen](https://www.doxygen.nl/).
|
|
* Run: `cmake --build build --target cesium-native-docs`
|
|
* Open `build/doc/html/index.html`
|