AddRefsVector(obj, "children", n.children, w.mAl);
- AddRefsVector(obj, "meshes", n.meshes, w.mAl);
+ if (!n.meshes.empty()) {
+ obj.AddMember("mesh", n.meshes[0]->index, w.mAl);
+ }
AddRefsVector(obj, "skeletons", n.skeletons, w.mAl);
}
ExportMeshes();
+ MergeMeshes();
ExportScene();
}
}
+void glTF2Exporter::MergeMeshes()
+{
+ for (unsigned int n = 0; n < mAsset->nodes.Size(); ++n) {
+ Ref<Node> node = mAsset->nodes.Get(n);
+
+ unsigned int nMeshes = node->meshes.size();
+
+ if (nMeshes) {
+ Ref<Mesh> firstMesh = node->meshes.at(0);
+
+ for (unsigned int m = 1; m < nMeshes; ++m) {
+ Ref<Mesh> mesh = node->meshes.at(m);
+ Mesh::Primitive primitive = mesh->primitives.at(0);
+ firstMesh->primitives.push_back(primitive);
+ }
+
+ node->meshes.erase(node->meshes.begin() + 1, node->meshes.end());
+ }
+ }
+}
+
/*
* Export the root node of the node hierarchy.
* Calls ExportNode for all children.