mirror of
https://github.com/JulianGro/overte.git
synced 2025-04-16 12:17:31 +02:00
Merge pull request #5925 from sethalves/fix-obj-materials
Fix obj materials
This commit is contained in:
commit
fafcef9a6c
2 changed files with 20 additions and 24 deletions
|
@ -144,13 +144,12 @@ void FBXReader::consolidateFBXMaterials() {
|
|||
// FIXME: Do not use the Specular Factor yet as some FBX models have it set to 0
|
||||
// metallic *= material.specularFactor;
|
||||
material._material->setMetallic(metallic);
|
||||
material._material->setGloss(material.shininess);
|
||||
material._material->setGloss(material.shininess);
|
||||
|
||||
if (material.opacity <= 0.0f) {
|
||||
material._material->setOpacity(1.0f);
|
||||
material._material->setOpacity(1.0f);
|
||||
} else {
|
||||
material._material->setOpacity(material.opacity);
|
||||
material._material->setOpacity(material.opacity);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -539,14 +539,16 @@ FBXGeometry* OBJReader::readOBJ(QByteArray& model, const QVariantHash& mapping,
|
|||
|
||||
foreach (QString materialID, materials.keys()) {
|
||||
OBJMaterial& objMaterial = materials[materialID];
|
||||
geometry.materials[materialID] = FBXMaterial(objMaterial.diffuseColor, // glm::vec3(1.0f, 1.0f, 1.0f)
|
||||
objMaterial.specularColor, // glm::vec3(1.0f)
|
||||
glm::vec3(), // glm::vec3()
|
||||
glm::vec2(0.f, 1.0f), // glm::vec2(0.f, 1.0f)
|
||||
objMaterial.shininess, // 96.0f
|
||||
objMaterial.opacity); // 1.0f
|
||||
FBXMaterial& material = geometry.materials[materialID];
|
||||
material._material = std::make_shared<model::Material>();
|
||||
geometry.materials[materialID] = FBXMaterial(objMaterial.diffuseColor,
|
||||
objMaterial.specularColor,
|
||||
glm::vec3(0.0f),
|
||||
glm::vec2(0.0f, 1.0f),
|
||||
objMaterial.shininess,
|
||||
objMaterial.opacity);
|
||||
FBXMaterial& fbxMaterial = geometry.materials[materialID];
|
||||
fbxMaterial.materialID = materialID;
|
||||
fbxMaterial._material = std::make_shared<model::Material>();
|
||||
model::MaterialPointer modelMaterial = fbxMaterial._material;
|
||||
|
||||
if (!objMaterial.diffuseTextureFilename.isEmpty()) {
|
||||
FBXTexture texture;
|
||||
|
@ -554,21 +556,16 @@ FBXGeometry* OBJReader::readOBJ(QByteArray& model, const QVariantHash& mapping,
|
|||
// TODO -- something to get textures working again
|
||||
}
|
||||
|
||||
material._material->setEmissive(material.emissiveColor);
|
||||
if (glm::all(glm::equal(material.diffuseColor, glm::vec3(0.0f)))) {
|
||||
material._material->setDiffuse(material.diffuseColor);
|
||||
} else {
|
||||
material._material->setDiffuse(material.diffuseColor);
|
||||
}
|
||||
material._material->setMetallic(glm::length(material.specularColor));
|
||||
material._material->setGloss(material.shininess);
|
||||
modelMaterial->setEmissive(fbxMaterial.emissiveColor);
|
||||
modelMaterial->setDiffuse(fbxMaterial.diffuseColor);
|
||||
modelMaterial->setMetallic(glm::length(fbxMaterial.specularColor));
|
||||
modelMaterial->setGloss(fbxMaterial.shininess);
|
||||
|
||||
if (material.opacity <= 0.0f) {
|
||||
material._material->setOpacity(1.0f);
|
||||
if (fbxMaterial.opacity <= 0.0f) {
|
||||
modelMaterial->setOpacity(1.0f);
|
||||
} else {
|
||||
material._material->setOpacity(material.opacity);
|
||||
modelMaterial->setOpacity(fbxMaterial.opacity);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return geometryPtr;
|
||||
|
|
Loading…
Reference in a new issue