|
|
@@ -73,6 +73,7 @@ OpenAssetImporter::OpenAssetImporter(Context* context) : Object(context) ,
|
|
|
noOverwriteTexture_(true),
|
|
|
noOverwriteNewerTexture_(true),
|
|
|
checkUniqueModel_(true),
|
|
|
+ useVertexColors_(false),
|
|
|
scale_(1.0f),
|
|
|
maxBones_(64),
|
|
|
defaultTicksPerSecond_(4800.0f),
|
|
|
@@ -572,6 +573,7 @@ String OpenAssetImporter::GetMeshMaterialName(aiMesh* mesh)
|
|
|
aiMaterial* material = scene_->mMaterials[mesh->mMaterialIndex];
|
|
|
aiString matNameStr;
|
|
|
material->Get(AI_MATKEY_NAME, matNameStr);
|
|
|
+
|
|
|
String matName = SanitateAssetName(FromAIString(matNameStr));
|
|
|
if (matName.Trimmed().Empty())
|
|
|
matName = GenerateMaterialName(material);
|
|
|
@@ -909,6 +911,15 @@ void OpenAssetImporter::SetOveriddenFlags(VariantMap& aiFlagParameters)
|
|
|
importMaterialsDefault_ = itr->second_.GetBool();
|
|
|
else if (itr->first_ == "IncludeNonSkinningBones")
|
|
|
includeNonSkinningBonesDefault_ = itr->second_.GetBool();
|
|
|
+ else if (itr->first_ == "useVertexColors")
|
|
|
+ {
|
|
|
+ PrintLine("*** GOT VERTEX SETTING ***");
|
|
|
+
|
|
|
+ useVertexColors_ = itr->second_.GetBool();
|
|
|
+
|
|
|
+ if(useVertexColors_) PrintLine("**** VERTEX TRUE ****");
|
|
|
+ else PrintLine("**** VERTEX FALSE ****");
|
|
|
+ }
|
|
|
|
|
|
itr++;
|
|
|
}
|
|
|
@@ -1235,12 +1246,16 @@ bool OpenAssetImporter::BuildAndSaveMaterial(aiMaterial* material, HashSet<Strin
|
|
|
|
|
|
if (material->Get(AI_MATKEY_TEXTURE(aiTextureType_DIFFUSE, 0), stringVal) == AI_SUCCESS)
|
|
|
diffuseTexName = GetFileNameAndExtension(FromAIString(stringVal));
|
|
|
+
|
|
|
if (material->Get(AI_MATKEY_TEXTURE(aiTextureType_NORMALS, 0), stringVal) == AI_SUCCESS)
|
|
|
normalTexName = GetFileNameAndExtension(FromAIString(stringVal));
|
|
|
+
|
|
|
if (material->Get(AI_MATKEY_TEXTURE(aiTextureType_SPECULAR, 0), stringVal) == AI_SUCCESS)
|
|
|
specularTexName = GetFileNameAndExtension(FromAIString(stringVal));
|
|
|
+
|
|
|
if (material->Get(AI_MATKEY_TEXTURE(aiTextureType_LIGHTMAP, 0), stringVal) == AI_SUCCESS)
|
|
|
specularTexName = GetFileNameAndExtension(FromAIString(stringVal));
|
|
|
+
|
|
|
if (material->Get(AI_MATKEY_TEXTURE(aiTextureType_EMISSIVE, 0), stringVal) == AI_SUCCESS)
|
|
|
emissiveTexName = GetFileNameAndExtension(FromAIString(stringVal));
|
|
|
|
|
|
@@ -1286,6 +1301,25 @@ bool OpenAssetImporter::BuildAndSaveMaterial(aiMaterial* material, HashSet<Strin
|
|
|
if (hasAlpha)
|
|
|
techniqueName += "Alpha";
|
|
|
|
|
|
+ // See if any mesh that uses this material has vertex colors
|
|
|
+ // and set the technique accordingly, if enabled
|
|
|
+ for (unsigned i = 0; i < scene_->mNumMeshes && useVertexColors_; i++)
|
|
|
+ {
|
|
|
+ aiMesh* mesh = scene_->mMeshes[i];
|
|
|
+ aiMaterial* mesh_material = scene_->mMaterials[mesh->mMaterialIndex];
|
|
|
+ aiString meshMatNameStr;
|
|
|
+ mesh_material->Get(AI_MATKEY_NAME, meshMatNameStr);
|
|
|
+
|
|
|
+ if(mesh->GetNumColorChannels() > 0)
|
|
|
+ {
|
|
|
+ if(matNameStr == meshMatNameStr)
|
|
|
+ {
|
|
|
+ techniqueName += "VCol";
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
XMLElement techniqueElem = materialElem.CreateChild("technique");
|
|
|
techniqueElem.SetString("name", techniqueName + ".xml");
|
|
|
|