Преглед на файлове

glTF: Read and write transparency values

John Senneker преди 9 години
родител
ревизия
83c0163ec6
променени са 3 файла, в които са добавени 6 реда и са изтрити 0 реда
  1. 1 0
      code/glTFAsset.inl
  2. 3 0
      code/glTFAssetWriter.inl
  3. 2 0
      code/glTFExporter.cpp

+ 1 - 0
code/glTFAsset.inl

@@ -696,6 +696,7 @@ inline void Material::Read(Value& material, Asset& r)
         ReadMaterialProperty(r, *values, "diffuse", this->diffuse);
         ReadMaterialProperty(r, *values, "specular", this->specular);
 
+        ReadMember(*values, "transparency", transparency);
         ReadMember(*values, "shininess", shininess);
     }
 

+ 3 - 0
code/glTFAssetWriter.inl

@@ -171,6 +171,9 @@ namespace glTF {
             WriteColorOrTex(v, m.specular, "specular", w.mAl);
             WriteColorOrTex(v, m.emission, "emission", w.mAl);
 
+            if (m.transparent)
+                v.AddMember("transparency", m.transparency, w.mAl);
+
             v.AddMember("shininess", m.shininess, w.mAl);
         }
         obj.AddMember("values", v, w.mAl);

+ 2 - 0
code/glTFExporter.cpp

@@ -274,6 +274,8 @@ void glTFExporter::ExportMaterials()
         GetMatColorOrTex(mat, m->specular, AI_MATKEY_COLOR_SPECULAR, aiTextureType_SPECULAR);
         GetMatColorOrTex(mat, m->emission, AI_MATKEY_COLOR_EMISSIVE, aiTextureType_EMISSIVE);
 
+        m->transparent = mat->Get(AI_MATKEY_OPACITY, m->transparency) == aiReturn_SUCCESS && m->transparency != 1.0;
+
         GetMatScalar(mat, m->shininess, AI_MATKEY_SHININESS);
     }
 }