Skip to content

Commit c618027

Browse files
committed
Fixup from merge
1 parent 4d8a2c8 commit c618027

File tree

2 files changed

+17
-34
lines changed

2 files changed

+17
-34
lines changed

Cesium3DTilesSelection/src/TilesetJsonLoader.cpp

Lines changed: 7 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -772,27 +772,11 @@ TileLoadResult parseExternalTilesetInWorkerThread(
772772
const std::shared_ptr<CesiumAsync::IAssetAccessor>& pAssetAccessor,
773773
std::shared_ptr<CesiumAsync::IAssetRequest>&& pCompletedRequest,
774774
ExternalContentInitializer&& externalContentInitializer,
775-
const CesiumGeospatial::Ellipsoid& ellipsoid) {
775+
const CesiumGeospatial::Ellipsoid& ellipsoid,
776+
rapidjson::Document& tilesetJson) {
776777
// create external tileset
777-
const CesiumAsync::IAssetResponse* pResponse = pCompletedRequest->response();
778-
const auto& responseData = pResponse->data();
779778
const auto& tileUrl = pCompletedRequest->url();
780779

781-
rapidjson::Document tilesetJson;
782-
tilesetJson.Parse(
783-
reinterpret_cast<const char*>(responseData.data()),
784-
responseData.size());
785-
if (tilesetJson.HasParseError()) {
786-
SPDLOG_LOGGER_ERROR(
787-
pLogger,
788-
"Error when parsing tileset JSON, error code {} at byte offset {}",
789-
tilesetJson.GetParseError(),
790-
tilesetJson.GetErrorOffset());
791-
return TileLoadResult::createFailedResult(
792-
pAssetAccessor,
793-
std::move(pCompletedRequest));
794-
}
795-
796780
// Save the parsed external tileset into custom data.
797781
// We will propagate it back to tile later in the main
798782
// thread
@@ -873,23 +857,11 @@ TileLoadResult parseJsonContentInWorkerThread(
873857
if (const auto typeIt = tilesetJson.FindMember("type");
874858
typeIt != tilesetJson.MemberEnd()) {
875859
auto geoJson = CesiumVectorData::GeoJsonDocument::fromGeoJson(tilesetJson);
876-
if (!geoJson.value.has_value() || geoJson.errors.hasErrors()) {
860+
if (!geoJson.value.has_value() || geoJson.errors.hasErrors() || translateToGltf) {
877861
return TileLoadResult::createFailedResult(
878862
pAssetAccessor,
879863
std::move(pCompletedRequest));
880-
} else if (!translateToGltf) {
881-
return TileLoadResult{
882-
std::move(*geoJson.value),
883-
upAxis,
884-
std::nullopt,
885-
std::nullopt,
886-
std::nullopt,
887-
pAssetAccessor,
888-
std::move(pCompletedRequest),
889-
{},
890-
TileLoadResultState::Success,
891-
ellipsoid};
892-
} else {
864+
} else {
893865
CesiumVectorData::GltfConverter geoJsonCoverter;
894866
CesiumVectorData::ConverterResult converterResult = geoJsonCoverter(*geoJson.value);
895867
return TileLoadResult{
@@ -913,8 +885,9 @@ TileLoadResult parseJsonContentInWorkerThread(
913885
pAssetAccessor,
914886
std::move(pCompletedRequest),
915887
std::move(externalContentInitializer),
916-
tilesetJson,
917-
ellipsoid);
888+
ellipsoid,
889+
tilesetJson
890+
);
918891
}
919892
}
920893
} // namespace

CesiumVectorData/src/GltfConverter.cpp

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,7 @@ void gatherLines(const GeoJsonDocument& geoJson, Model& model, const glm::dmat4&
138138
model.meshes.back().primitives.emplace_back();
139139
model.meshes.back().primitives.back().attributes["POSITION"] = accessorIndex;
140140
model.meshes.back().primitives.back().mode = MeshPrimitive::Mode::LINE_STRIP;
141+
model.meshes.back().primitives.back().material = 0;
141142
}
142143
multiLineItr = root.allOfType<GeoJsonMultiLineString>().begin();
143144
while (multiLineItr != root.allOfType<GeoJsonMultiLineString>().end()) {
@@ -153,6 +154,7 @@ void gatherLines(const GeoJsonDocument& geoJson, Model& model, const glm::dmat4&
153154
model.meshes.back().primitives.emplace_back();
154155
model.meshes.back().primitives.back().attributes["POSITION"] = accessorIndex;
155156
model.meshes.back().primitives.back().mode = MeshPrimitive::Mode::LINE_STRIP;
157+
model.meshes.back().primitives.back().material = 0;
156158
}
157159
}
158160
model.nodes.emplace_back();
@@ -285,6 +287,7 @@ void gatherPolygons(const GeoJsonDocument& geoJson, Model& model, const glm::dma
285287
model.meshes.back().primitives.back().attributes["POSITION"] = accessorIndex;
286288
model.meshes.back().primitives.back().indices = indexAccessorIndex;
287289
model.meshes.back().primitives.back().mode = MeshPrimitive::Mode::TRIANGLES;
290+
model.meshes.back().primitives.back().material = 0;
288291

289292
model.nodes.emplace_back();
290293
model.nodes.back().mesh = meshIndex;
@@ -300,6 +303,13 @@ ConverterResult GltfConverter::operator()(const GeoJsonDocument& geoJson) {
300303
glm::dmat4 enuToFixedFrame = GlobeTransforms::eastNorthUpToFixedFrame(
301304
Ellipsoid::WGS84.cartographicToCartesian(Cartographic::fromDegrees(centroid.x, centroid.y, centroid.z)));
302305
result.model.emplace();
306+
result.model->asset.version = "2.0";
307+
CesiumGltf::Material& material = result.model->materials.emplace_back();
308+
CesiumGltf::MaterialPBRMetallicRoughness& pbr =
309+
material.pbrMetallicRoughness.emplace();
310+
pbr.metallicFactor = 0.0;
311+
pbr.roughnessFactor = 1.0;
312+
303313
gatherLines(geoJson, *result.model, enuToFixedFrame);
304314
gatherPolygons(geoJson, *result.model, enuToFixedFrame);
305315
return result;

0 commit comments

Comments
 (0)