cesium-native icon indicating copy to clipboard operation
cesium-native copied to clipboard

Need reference implementations for cesium-native users

Open csciguy8 opened this issue 1 year ago • 2 comments

It could be useful to have a set of "how to get started examples" for anyone wanting to integrate cesium-native into their project for the first time.

This would be a little different from just referencing Cesium for Unreal or Cesium for Unity in that these examples would be as simple as possible to help guide the user through integration.

There could be multiple reference examples:

  • A C++ application integrating all of cesium-native to stream tiles
  • A C++ application integrating only parts of cesium-native (Ex. load Gltfs only)
  • A non-C++ application integrating cesium-native (C#, web assembly, etc)

Ideally, these examples would also be built by CI, to make sure any supported use cases are always working.

Feel free to chime in with other ideas as well.

csciguy8 avatar Apr 08 '24 17:04 csciguy8

This is certainly not a "reference implementation". But have created (and occasionally updated) https://github.com/javagl/cesium-cpp . This is a pure command-line application that uses cesium-native, and offers some "dummy" implementations for the TilesetExternals.

It allows things like reading all glTF sample assets with cesium-native, or loading a tileset and performing some view updates programmatically - basically "emulating" what a real runtime/renderer/application would be calling.

This is not intended to offer any form of stability. There are no maintenance guarantees. Until now, I only used it for very basic debugging and testing. But maybe someone else also finds something useful in there.

javagl avatar May 11 '24 13:05 javagl

I've pointed people to vsgCs and received some positive feedback about it. Some of the things going for it:

  • It's a complete implementation, but the target API (Vulkan Scene Graph) is much simpler than the other targets with which I'm familiar (Unreal, Omniverse);
  • Some of the parts are directly useable in other contexts. In particular, its asset accessor, based on libcurl, has made its way into Cesium Omniverse and other Cesium projects (so I'm told);
  • It has a working example of GltfReader::loadGltf,. Working with this function allows implementors to get the basics of glTF loading to work before tackling the streaming of 3D Tiles.

vsgCs is not particularly well documented, but I think the code is generally pretty clear.

timoore avatar May 13 '24 11:05 timoore