CesiumGS / CesiumGS/cesium

Vector Tiles: Consolidate .vctr and latest Vector Tiles

Open
#13,595 1 comment 0 reactions 0 assignees View on GitHub
category - vector data type - cleanup
Dominant language
JavaScript
Stars
15.8k
Forks
3.9k
Avg merge
4d 6h
Merged PRs (30d)
34

Description

Our latest support for vector tiles, based on `3DTILES_content_gltf_vector`, introduced a new performance-oriented data model for large vector datasets, based on [BufferPrimitiveCollection](https://cesium.com/learn/cesiumjs/ref-doc/BufferPrimitiveCollection.html).

An older (and still experimental) effort for vector support in 3D Tiles was the `.vctr` format. Its implementation in CesiumJS remains, and is largely separate — `.vctr` rendering used older APIs like BillboardCollection that do not scale as well but have many years of useful styling features, and some custom rendering (see Vector3DTilePolylines).

We'd prefer not maintaining two separate vector tile rendering paths in 3D Tiles (in addition to clamped vs. 3D paths...), and would rather focus on `3DTILES_content_gltf_vector` moving forward. We'll need to decide what that means for `.vctr` support in CesiumJS. I'm unsure how widely `.vctr` is used, but that will have implications for whether we can:

- (a) encourage users to migrate content to the newer `3DTILES_content_gltf_vector` extension
- (b) re-implement `.vctr` support in CesiumJS on top of the newer rendering APIs

One challenge with either is that `.vctr` exposed a wide range of CesiumJS's existing text and billboard styling features (see [Cesium3DTileStyle documentation](https://cesium.com/learn/cesiumjs/ref-doc/Cesium3DTileStyle.html)) but making every styling feature in CesiumJS scale to the performance goals of `3DTILES_content_gltf_vector` is a long road.

Related, the references "vector tiles" for features that are (mostly) related to the older `.vctr` format. The [Cesium3DTileStyle documentation](https://cesium.com/learn/cesiumjs/ref-doc/Cesium3DTileStyle.html) should be clarified to disambiguate between `.vctr` and `3DTILES_content_gltf_vector`, whatever decisions we make.

Contributor guide

Open the contributing guide

Research direction

Start by comparing the existing .vctr implementation with the newer 3DTILES_content_gltf_vector path, including BufferPrimitiveCollection and Vector3DTilePolylines. Review the Cesium3DTileStyle documentation to identify the styling differences; done means the project has a decided consolidation or migration direction and the documentation clearly distinguishes both formats.

Written by the indexing model from the issue text.

Assessment

Tech stack
javascript
Domain
computer-graphics, documentation
Issue type
Refactor
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Needs clarification
Newbie friendliness
30/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.