Partial fix for textures in exports from 3D Studio Max.

This commit is contained in:
Andrzej Kapolka 2013-10-23 15:56:09 -07:00
parent 41f73b5e9d
commit a9df8a6b29

View file

@ -902,11 +902,12 @@ FBXGeometry extractFBXGeometry(const FBXNode& node, const QVariantHash& mapping)
foreach (const FBXNode& connection, child.children) { foreach (const FBXNode& connection, child.children) {
if (connection.name == "C" || connection.name == "Connect") { if (connection.name == "C" || connection.name == "Connect") {
if (connection.properties.at(0) == "OP") { if (connection.properties.at(0) == "OP") {
if (connection.properties.at(3) == "DiffuseColor") { QByteArray type = connection.properties.at(3).toByteArray().toLower();
if (type.contains("diffuse")) {
diffuseTextures.insert(connection.properties.at(2).toString(), diffuseTextures.insert(connection.properties.at(2).toString(),
connection.properties.at(1).toString()); connection.properties.at(1).toString());
} else if (connection.properties.at(3) == "Bump") { } else if (type.contains("bump")) {
bumpTextures.insert(connection.properties.at(2).toString(), bumpTextures.insert(connection.properties.at(2).toString(),
connection.properties.at(1).toString()); connection.properties.at(1).toString());
} }
@ -1035,6 +1036,13 @@ FBXGeometry extractFBXGeometry(const FBXNode& node, const QVariantHash& mapping)
QString diffuseTextureID = diffuseTextures.value(childID); QString diffuseTextureID = diffuseTextures.value(childID);
if (!diffuseTextureID.isNull()) { if (!diffuseTextureID.isNull()) {
part.diffuseFilename = textureFilenames.value(diffuseTextureID); part.diffuseFilename = textureFilenames.value(diffuseTextureID);
// FBX files generated by 3DSMax have an intermediate texture parent, apparently
foreach (const QString& childTextureID, childMap.values(diffuseTextureID)) {
if (textureFilenames.contains(childTextureID)) {
part.diffuseFilename = textureFilenames.value(childTextureID);
}
}
} }
QString bumpTextureID = bumpTextures.value(childID); QString bumpTextureID = bumpTextures.value(childID);
if (!bumpTextureID.isNull()) { if (!bumpTextureID.isNull()) {