Jelajahi Sumber

Merge branch 'master' into optimized_bonelimits

Kim Kulling 5 tahun lalu
induk
melakukan
c91d3764ca
3 mengubah file dengan 17 tambahan dan 0 penghapusan
  1. 1 0
      code/glTF2/glTF2Asset.h
  2. 13 0
      code/glTF2/glTF2Asset.inl
  3. 3 0
      code/glTF2/glTF2Importer.cpp

+ 1 - 0
code/glTF2/glTF2Asset.h

@@ -725,6 +725,7 @@ struct Mesh : public Object {
     std::vector<Primitive> primitives;
 
     std::vector<float> weights;
+    std::vector<std::string> targetNames;
 
     Mesh() {}
 

+ 13 - 0
code/glTF2/glTF2Asset.inl

@@ -1034,6 +1034,19 @@ inline void Mesh::Read(Value &pJSON_Object, Asset &pAsset_Root) {
             }
         }
     }
+
+    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) {
+                Value& targetNameValue = (*curTargetNames)[i];
+                if (targetNameValue.IsString()) {
+                    this->targetNames[i] = targetNameValue.GetString();
+                }
+            }
+        }
+    }
 }
 
 inline void Camera::Read(Value &obj, Asset & /*r*/) {

+ 3 - 0
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];
+					}
 				}
 			}