From b011420f28b67764908d965c25f033fcef77a952 Mon Sep 17 00:00:00 2001 From: mkrylova Date: Tue, 14 Jul 2020 16:49:41 +0300 Subject: [PATCH] 0031618: Data Exchange, RWGltf_CafWriter - exporting some models produces glTF files not passing validation Added a check for non-empty mesh and new warning that notifies about skipping an empty node --- src/RWGltf/RWGltf_CafWriter.cxx | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/src/RWGltf/RWGltf_CafWriter.cxx b/src/RWGltf/RWGltf_CafWriter.cxx index aad1acd9cc..4ec09b4daf 100644 --- a/src/RWGltf/RWGltf_CafWriter.cxx +++ b/src/RWGltf/RWGltf_CafWriter.cxx @@ -1226,7 +1226,14 @@ void RWGltf_CafWriter::writeMeshes (const RWGltf_GltfSceneNodeMap& theSceneNodeM { const XCAFPrs_DocumentNode& aDocNode = aSceneNodeIter.Value(); const TCollection_AsciiString aNodeName = readNameAttribute (aDocNode.RefLabel); - + { + RWMesh_FaceIterator aFaceIter(aDocNode.RefLabel, TopLoc_Location(), false); + if (!aFaceIter.More()) + { + Message::SendWarning (TCollection_AsciiString("RWGltf_CafWriter skipped node '") + aNodeName + "' without triangulation data"); + continue; + } + } myWriter->StartObject(); myWriter->Key ("name"); myWriter->String (aNodeName.ToCString()); @@ -1304,6 +1311,13 @@ void RWGltf_CafWriter::writeNodes (const Handle(TDocStd_Document)& theDocument, aDocExplorer.More(); aDocExplorer.Next()) { const XCAFPrs_DocumentNode& aDocNode = aDocExplorer.Current(); + { + RWMesh_FaceIterator aFaceIter(aDocNode.RefLabel, TopLoc_Location(), false); + if (!aFaceIter.More()) + { + continue; + } + } if (theLabelFilter != NULL && !theLabelFilter->Contains (aDocNode.Id)) {