Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Allow access to Tileset-level metadata (schema, schemaUri, groups, metadata) #709

Merged
merged 33 commits into from
Aug 31, 2023
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
33 commits
Select commit Hold shift + click to select a range
31f0ed5
Expose Schema on Tileset.
kring Aug 18, 2023
0dbf930
Start reading metadata and groups properties.
kring Aug 18, 2023
056eecc
Give tileset a root "external" tile.
kring Aug 21, 2023
44ad786
Expose metadata on root tile and external tilesets.
kring Aug 21, 2023
789fed8
Support metadata on external tilesets.
kring Aug 21, 2023
e99b00d
Formatting.
kring Aug 21, 2023
79d33e2
Fix Clang/GCC compiler error.
kring Aug 21, 2023
8f8cb9b
Generate Reader classes, remove hand-written versions.
kring Aug 22, 2023
cfaaf4d
Add doc for readers.
kring Aug 22, 2023
c0fc8b6
More tileset metadata to a separate struct.
kring Aug 22, 2023
ef2ac5d
Add missing file.
kring Aug 22, 2023
c68207a
Add MetadataQuery class.
kring Aug 23, 2023
056edba
Add a test based on material variants.
kring Aug 23, 2023
20cbc17
Formatting.
kring Aug 23, 2023
d0a3091
Fix dodgy destructor declaration.
kring Aug 23, 2023
ea6a74e
Fix another clang warning.
kring Aug 23, 2023
3585ba3
Merge remote-tracking branch 'origin/json-read-tweaks' into tileset-m…
kring Aug 23, 2023
532d4e7
Merge remote-tracking branch 'origin/generated-readers' into tileset-…
kring Aug 23, 2023
d24e5f9
Update CHANGES.md, remove unnecessary change.
kring Aug 23, 2023
fe26c94
Remove unnecessary forward declaration.
kring Aug 23, 2023
9f73df1
Merge remote-tracking branch 'origin/generated-readers' into tileset-…
kring Aug 24, 2023
9a1abb2
Add missing dll export of FoundMetadataProperty.
kring Aug 24, 2023
153890d
Add `Tileset::loadMetadata`.
kring Aug 28, 2023
6145b54
Update CHANGES.md.
kring Aug 28, 2023
51e798e
Add test for async schema loading.
kring Aug 28, 2023
946887a
Add getArrayOfStrings helper to JsonValue.
kring Aug 28, 2023
5bf8a7b
struct -> class
kring Aug 28, 2023
31fc053
Fix clang warning.
kring Aug 28, 2023
3f40341
Fix VS2017/2019 warning.
kring Aug 28, 2023
5637a68
Merge remote-tracking branch 'origin/generated-readers' into tileset-…
kring Aug 30, 2023
7c8f4b1
Fix test failures, change some CHECK to REQUIRE.
kring Aug 30, 2023
57476c3
Changes from review.
kring Aug 30, 2023
a2d5b92
Fix misnaming.
kring Aug 30, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
Start reading metadata and groups properties.
  • Loading branch information
kring committed Aug 18, 2023
commit 0dbf93091c8bb9361a925c3e02f1389bd94478fb
30 changes: 30 additions & 0 deletions Cesium3DTilesReader/include/Cesium3DTilesReader/Readers.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
#pragma once

#include <Cesium3DTiles/GroupMetadata.h>
#include <Cesium3DTiles/MetadataEntity.h>
#include <Cesium3DTiles/Schema.h>
#include <CesiumJsonReader/JsonReader.h>
#include <CesiumJsonReader/JsonReaderOptions.h>

namespace Cesium3DTilesReader {

CesiumJsonReader::ReadJsonResult<Cesium3DTiles::Schema> readSchema(
const rapidjson::Value& value,
const CesiumJsonReader::JsonReaderOptions& options = {});

CesiumJsonReader::ReadJsonResult<Cesium3DTiles::MetadataEntity>
readMetadataEntity(
const rapidjson::Value& value,
const CesiumJsonReader::JsonReaderOptions& options = {});

CesiumJsonReader::ReadJsonResult<Cesium3DTiles::GroupMetadata>
readGroupMetadata(
const rapidjson::Value& value,
const CesiumJsonReader::JsonReaderOptions& options = {});

CesiumJsonReader::ReadJsonResult<std::vector<Cesium3DTiles::GroupMetadata>>
readGroupMetadataArray(
const rapidjson::Value& value,
const CesiumJsonReader::JsonReaderOptions& options = {});

} // namespace Cesium3DTilesReader
43 changes: 43 additions & 0 deletions Cesium3DTilesReader/src/Readers.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
#include "GroupMetadataJsonHandler.h"
#include "MetadataEntityJsonHandler.h"
#include "SchemaJsonHandler.h"

#include <Cesium3DTilesReader/Readers.h>
#include <CesiumJsonReader/ArrayJsonHandler.h>

namespace Cesium3DTilesReader {

CesiumJsonReader::ReadJsonResult<Cesium3DTiles::Schema> readSchema(
const rapidjson::Value& value,
const CesiumJsonReader::JsonReaderOptions& options) {
SchemaJsonHandler handler(options);
return CesiumJsonReader::JsonReader::readJson(value, handler);
}

CesiumJsonReader::ReadJsonResult<Cesium3DTiles::MetadataEntity>
readMetadataEntity(
const rapidjson::Value& value,
const CesiumJsonReader::JsonReaderOptions& options) {
MetadataEntityJsonHandler handler(options);
return CesiumJsonReader::JsonReader::readJson(value, handler);
}

CesiumJsonReader::ReadJsonResult<Cesium3DTiles::GroupMetadata>
readGroupMetadata(
const rapidjson::Value& value,
const CesiumJsonReader::JsonReaderOptions& options) {
GroupMetadataJsonHandler handler(options);
return CesiumJsonReader::JsonReader::readJson(value, handler);
}

CesiumJsonReader::ReadJsonResult<std::vector<Cesium3DTiles::GroupMetadata>>
readGroupMetadataArray(
const rapidjson::Value& value,
const CesiumJsonReader::JsonReaderOptions& options) {
CesiumJsonReader::
ArrayJsonHandler<Cesium3DTiles::GroupMetadata, GroupMetadataJsonHandler>
handler(options);
return CesiumJsonReader::JsonReader::readJson(value, handler);
}

} // namespace Cesium3DTilesReader
28 changes: 22 additions & 6 deletions Cesium3DTilesSelection/src/TilesetJsonLoader.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
#include "ImplicitQuadtreeLoader.h"
#include "logTileLoadResult.h"

#include <Cesium3DTilesReader/SchemaReader.h>
#include <Cesium3DTilesReader/Readers.h>
#include <Cesium3DTilesSelection/GltfConverters.h>
#include <Cesium3DTilesSelection/TileID.h>
#include <CesiumAsync/AsyncSystem.h>
Expand Down Expand Up @@ -598,11 +598,27 @@ TilesetContentLoaderResult<TilesetJsonLoader> parseTilesetJson(

const auto schemaIt = tilesetJson.FindMember("schema");
if (schemaIt != tilesetJson.MemberEnd()) {
Cesium3DTilesReader::SchemaReader reader{};
Cesium3DTilesReader::SchemaReaderResult schemaResult =
reader.readSchema(schemaIt->value);
if (schemaResult.schema) {
pLoader->getSchema() = std::move(*schemaResult.schema);
auto schemaResult = Cesium3DTilesReader::readSchema(schemaIt->value);
if (schemaResult.value) {
pLoader->getSchema() = std::move(*schemaResult.value);
}
}

const auto metadataIt = tilesetJson.FindMember("metadata");
if (metadataIt != tilesetJson.MemberEnd()) {
auto metadataResult =
Cesium3DTilesReader::readMetadataEntity(metadataIt->value);
if (metadataResult.value) {
// pLoader->getSchema() = std::move(*schemaResult.value);
}
}

const auto groupsIt = tilesetJson.FindMember("groups");
if (groupsIt != tilesetJson.MemberEnd()) {
auto groupsResult =
Cesium3DTilesReader::readGroupMetadataArray(groupsIt->value);
if (groupsResult.value) {
// pLoader->getSchema() = std::move(*schemaResult.value);
}
}

Expand Down
2 changes: 2 additions & 0 deletions CesiumJsonReader/include/CesiumJsonReader/ArrayJsonHandler.h
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,8 @@ namespace CesiumJsonReader {
template <typename T, typename THandler>
class CESIUMJSONREADER_API ArrayJsonHandler : public JsonHandler {
public:
using ValueType = std::vector<T>;

template <typename... Ts>
ArrayJsonHandler(Ts&&... args) noexcept
: JsonHandler(),
Expand Down