mat->Get(AI_MATKEY_TWOSIDED, m->doubleSided);
mat->Get(AI_MATKEY_GLTF_ALPHACUTOFF, m->alphaCutoff);
- bool foundAlphaMode = false;
- for (size_t i = 0; i < mat->mNumProperties; ++i) {
- aiMaterialProperty *prop = mat->mProperties[i];
- if (prop->mKey != aiString("$mat.gltf.alphaMode"))
- continue;
-
- std::string alphaMode;
- for (size_t c = 0; c < prop->mDataLength; ++c)
- alphaMode += prop->mData[c];
- m->alphaMode = alphaMode;
- foundAlphaMode = true;
- }
+ aiString alphaMode;
- if (!foundAlphaMode) {
+ if (mat->Get(AI_MATKEY_GLTF_ALPHAMODE, alphaMode) == AI_SUCCESS) {
+ m->alphaMode = alphaMode.C_Str();
+ } else {
float opacity;
if (mat->Get(AI_MATKEY_OPACITY, opacity) == AI_SUCCESS) {
SetMaterialColorProperty(r, mat.emissiveFactor, aimat, AI_MATKEY_COLOR_EMISSIVE);
aimat->AddProperty(&mat.doubleSided, 1, AI_MATKEY_TWOSIDED);
- aimat->AddProperty(&mat.alphaMode, 1, AI_MATKEY_GLTF_ALPHAMODE);
+
+ aiString alphaMode(mat.alphaMode);
+ aimat->AddProperty(&alphaMode, AI_MATKEY_GLTF_ALPHAMODE);
aimat->AddProperty(&mat.alphaCutoff, 1, AI_MATKEY_GLTF_ALPHACUTOFF);
//pbrSpecularGlossiness