|
@@ -267,6 +267,7 @@ static aiMaterial *ImportMaterial(std::vector<int> &embeddedTexIdxs, Asset &r, M
|
|
|
SetMaterialColorProperty(r, mat.emissiveFactor, aimat, AI_MATKEY_COLOR_EMISSIVE);
|
|
|
|
|
|
aimat->AddProperty(&mat.doubleSided, 1, AI_MATKEY_TWOSIDED);
|
|
|
+ aimat->AddProperty(&mat.pbrMetallicRoughness.baseColorFactor[3], 1, AI_MATKEY_OPACITY);
|
|
|
|
|
|
aiString alphaMode(mat.alphaMode);
|
|
|
aimat->AddProperty(&alphaMode, AI_MATKEY_GLTF_ALPHAMODE);
|
|
@@ -998,6 +999,14 @@ void ParseExtensions(aiMetadata *metadata, const CustomExtension &extension) {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+void ParseExtras(aiMetadata *metadata, const CustomExtension &extension) {
|
|
|
+ if (extension.mValues.isPresent) {
|
|
|
+ for (size_t i = 0; i < extension.mValues.value.size(); ++i) {
|
|
|
+ ParseExtensions(metadata, extension.mValues.value[i]);
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
aiNode *ImportNode(aiScene *pScene, glTF2::Asset &r, std::vector<unsigned int> &meshOffsets, glTF2::Ref<glTF2::Node> &ptr) {
|
|
|
Node &node = *ptr;
|
|
|
|
|
@@ -1016,9 +1025,14 @@ aiNode *ImportNode(aiScene *pScene, glTF2::Asset &r, std::vector<unsigned int> &
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- if (node.customExtensions) {
|
|
|
+ if (node.customExtensions || node.extras) {
|
|
|
ainode->mMetaData = new aiMetadata;
|
|
|
- ParseExtensions(ainode->mMetaData, node.customExtensions);
|
|
|
+ if (node.customExtensions) {
|
|
|
+ ParseExtensions(ainode->mMetaData, node.customExtensions);
|
|
|
+ }
|
|
|
+ if (node.extras) {
|
|
|
+ ParseExtras(ainode->mMetaData, node.extras);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
GetNodeTransform(ainode->mTransformation, node);
|