diff --git a/src/fgt/filter_hqrender/filter_hqrender.cpp b/src/fgt/filter_hqrender/filter_hqrender.cpp index db0a8b5f8..7a4ee091f 100644 --- a/src/fgt/filter_hqrender/filter_hqrender.cpp +++ b/src/fgt/filter_hqrender/filter_hqrender.cpp @@ -1,6 +1,7 @@ #include #include #include +#include //#include #include #include @@ -208,10 +209,10 @@ bool FilterHighQualityRender::applyFilter(QAction *filter, MeshModel &m, RichPar //2. Copy all texture in outDir (magari in una cartella a parte) foreach(QString textureName, textureList) { - QString str(m.fileName.c_str()); + QString str(m.fileName.c_str()); //mesh directory str = getDirFromPath(&str); QFile srcFile(str + QDir::separator() + textureName); - + QString newTex = tmp.absolutePath() + QDir::separator() + getFileNameFromPath(&textureName,false); if(srcFile.exists()) { @@ -259,6 +260,8 @@ bool FilterHighQualityRender::applyFilter(QAction *filter, MeshModel &m, RichPar line = token[0] + " " + QString::number(par.getInt("FormatX")) + " " + QString::number(par.getInt("FormatY")) + " " + QString::number(par.getFloat("PixelAspectRatio")); } + + //looking for a dummy object... if(token[0].trimmed() == "Attribute") { if(token[1].trimmed() == "\"identifier\"") { @@ -299,8 +302,54 @@ bool FilterHighQualityRender::applyFilter(QAction *filter, MeshModel &m, RichPar } } fclose(fout); + //va copiata una quantita indefinita di file dal template e organizzata in directory ;) - //va copiata l'immagine alla fine + + //run the aqsis rendering + QStringList env = QProcess::systemEnvironment(); + QString aqsisDir; + foreach(QString envElem, env) { + if(envElem.contains("AQSISHOME")) { + aqsisDir = envElem.remove("AQSISHOME="); + break; + } + } +#if defined(Q_OS_WIN) + //if os is win and a dir contains a space, it must be wrapped in quotes (..\"Program files"\..) + QStringList dirs = aqsisDir.split(QDir::separator()); + aqsisDir.clear(); + for(int i = 0; i < dirs.size(); i++) { + if(!dirs[i].contains(" ")) + aqsisDir += dirs[i]; + else + aqsisDir = aqsisDir + "\"" + dirs[i] + "\""; + aqsisDir += QDir::separator(); + } + dirs.clear(); + dirs = dest.split(QDir::separator()); + dest.clear(); + for(int i = 0; i < dirs.size(); i++) { + if(!dirs[i].contains(" ")) + dest += dirs[i]; + else + dest = dest + "\"" + dirs[i] + "\""; + + if(!dirs[i].contains(".")) + dest += QDir::separator(); + } +#endif + QProcess renderProcess; + renderProcess.setWorkingDirectory(destDir); //for the shaders/maps reference + QString toRun = aqsisDir+"bin"+QDir::separator()+"aqsis.exe " + destFile; + renderProcess.start(toRun); + if (!renderProcess.waitForFinished(-1)) + return false; //devo? + + //the image is copied in mesh folder + QString meshDir(m.fileName.c_str()); + meshDir = getDirFromPath(&meshDir); + QFile::copy(destDir + QDir::separator() + par.getString("ImageName"), meshDir + QDir::separator() + par.getString("ImageName")); + return true; } @@ -421,7 +470,9 @@ int FilterHighQualityRender::convertGeometry(RibFileStack* files, FILE* fout /*Q if(m.cm.textures.size()>1 && m.cm.HasPerWedgeTexCoord() || m.cm.HasPerVertexTexCoord()) { foreach(QString textureName, *textureList) { //out<<"Surface \"paintedplastic\" \"texturename\" [\"" + getFileNameFromPath(&textureName,false) + ".tx\"]"<P(); p = scaleMatrix * translateMatrix * p; //out<C(); //out< tc(((*fi).V(j))->T().U(),((*fi).V(j))->T().V()); ; //out<