Lately I worked on converting some data to GLTF and then to 3D tiles for visualization in Cesium.
It works quite fine already, however I can’t access metadata that is stored in a “property table” via the “EXT_structural_metadata” extension in the GLTF.
What I want to achieve is to use the value of a specific property (let’s call it prop
) that is stored in a propertyTable
for every geometry in the GLTF. I want to access it in the fragment shader (e.g. to color every geometry based on prop
).
I can already access the corresponding featureId_0
for every geometry (fsInput.featureIds.featureId_0
in the shader), but the “metadata” struct (fsInput.metadata
) is always empty.
At the same time, I can get all of the properties via the loaded 3D Tiles in the viewer when picking the tileset.
E.g. calling pickedTileset.content.batchTable.getProperty(25, 'prop')
will return the correct value of 'prop'
for the feature with id 25
.
Are properties from a property table just not supported yet in the custom shaders or am I doing something wrong?
I’d have to zoom into some details here, but from a quick look at 3D Tiles Next Metadata Compatibility Matrix · Issue #10480 · CesiumGS/cesium · GitHub it seems like property tables support for custom shaders is currently not implemented.
Oh that’s true. Regarding to the matrix it is not supported!
I completely forgot about that table! I guess it might be worth adding this info or a link to the matrix to the custom shader guide.
So I guess my question then is:
Is it planned to make all the red dots in that matrix green at some point or is this the state that we can expect to be final for now?
I think currently the documentation on this is a bit confusing, especially because the shader guide uses examples for “EXT_mesh_features” that use the “propertyTable” attribute and then never mentions, that these examples won’t work if you also want to access the properties and not just the feature ids.
No hard feelings here, I know the custom shader and 3D Tiles 1.1 stuff is all pretty new still!
I often stumbled over different issues for planning of 3DTiles 1.1 and custom shader features and I never know if they are still valid or not and how they are all conencted.
That matrix for example was last updated 1.5 years ago. It’s always hard to tell if someone just forgot to update it or if nothing changed.
Edit:
I just saw the custom shader guide mentions
The following types of metadata are currently supported:
property attributes from the EXT_structural_metadata glTF extension.
property textures from the EXT_structural_metadata glTF extension.
I just misread that and thought property attributes
also includes the attributes from “property tables”. I guess the naming in the GLTF extension standard itself just confused me a bit!
So, if someone can tell me where I can find an active roadmap for this stuff, I’d be more than happy. Otherwise my question is answerred.