From 69f8d47941b888097e4d75bc9bf42d794bf052e5 Mon Sep 17 00:00:00 2001 From: Timur Umayev Date: Wed, 15 Apr 2020 00:31:27 +0100 Subject: [PATCH 1/2] glTF2 support targetNames --- code/glTF2/glTF2Asset.h | 1 + code/glTF2/glTF2Asset.inl | 12 ++++++++++++ code/glTF2/glTF2Importer.cpp | 3 +++ 3 files changed, 16 insertions(+) diff --git a/code/glTF2/glTF2Asset.h b/code/glTF2/glTF2Asset.h index c27522df3..9002750a9 100644 --- a/code/glTF2/glTF2Asset.h +++ b/code/glTF2/glTF2Asset.h @@ -720,6 +720,7 @@ struct Mesh : public Object { std::vector primitives; std::vector weights; + std::vector targetNames; Mesh() {} diff --git a/code/glTF2/glTF2Asset.inl b/code/glTF2/glTF2Asset.inl index a41e62e5c..e73dc1e81 100644 --- a/code/glTF2/glTF2Asset.inl +++ b/code/glTF2/glTF2Asset.inl @@ -1026,6 +1026,18 @@ inline void Mesh::Read(Value &pJSON_Object, Asset &pAsset_Root) { } } } + + if (Value* extras = FindObject(pJSON_Object, "extras")) { + if (Value* curTargetNames = FindArray(*extras, "targetNames")) { + this->targetNames.resize(curTargetNames->Size()); + for (unsigned int i = 0; i < curTargetNames->Size(); ++i) { + Value& targetNameValue = (*curTargetNames)[i]; + if (targetNameValue.IsString()) { + this->targetNames[i] = targetNameValue.GetString(); + } + } + } + } } inline void Camera::Read(Value &obj, Asset & /*r*/) { diff --git a/code/glTF2/glTF2Importer.cpp b/code/glTF2/glTF2Importer.cpp index caff630dc..87f170e31 100644 --- a/code/glTF2/glTF2Importer.cpp +++ b/code/glTF2/glTF2Importer.cpp @@ -472,6 +472,9 @@ void glTF2Importer::ImportMeshes(glTF2::Asset &r) { if (mesh.weights.size() > i) { aiAnimMesh.mWeight = mesh.weights[i]; } + if (mesh.targetNames.size() > i) { + aiAnimMesh.mName = mesh.targetNames[i]; + } } } From f71b332ed142c4c009ec871df95533b36ecae6d2 Mon Sep 17 00:00:00 2001 From: Kim Kulling Date: Sun, 19 Apr 2020 21:14:47 +0200 Subject: [PATCH 2/2] Update glTF2Asset.inl fix VS-compiler warning. --- code/glTF2/glTF2Asset.inl | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/code/glTF2/glTF2Asset.inl b/code/glTF2/glTF2Asset.inl index 187ed39f4..ed23b388a 100644 --- a/code/glTF2/glTF2Asset.inl +++ b/code/glTF2/glTF2Asset.inl @@ -1035,7 +1035,8 @@ inline void Mesh::Read(Value &pJSON_Object, Asset &pAsset_Root) { } } - if (Value* extras = FindObject(pJSON_Object, "extras")) { + Value *extras = FindObject(pJSON_Object, "extras"); + if (nullptr != extras ) { if (Value* curTargetNames = FindArray(*extras, "targetNames")) { this->targetNames.resize(curTargetNames->Size()); for (unsigned int i = 0; i < curTargetNames->Size(); ++i) {