Merge branch 'master' into updatedJson
commit
10e2f482ae
|
@ -76,6 +76,53 @@ using namespace Util;
|
|||
|
||||
#define CONVERT_FBX_TIME(time) static_cast<double>(time) / 46186158000LL
|
||||
|
||||
static void correctRootTransform(const aiScene *scene) {
|
||||
if (scene == nullptr) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (scene->mMetaData == nullptr) {
|
||||
return;
|
||||
}
|
||||
|
||||
int32_t UpAxis = 1, UpAxisSign = 1, FrontAxis = 2, FrontAxisSign = 1, CoordAxis = 0, CoordAxisSign = 1;
|
||||
double UnitScaleFactor = 1.0;
|
||||
for (unsigned MetadataIndex = 0; MetadataIndex < scene->mMetaData->mNumProperties; ++MetadataIndex) {
|
||||
if (strcmp(scene->mMetaData->mKeys[MetadataIndex].C_Str(), "UpAxis") == 0) {
|
||||
scene->mMetaData->Get<int32_t>(MetadataIndex, UpAxis);
|
||||
}
|
||||
if (strcmp(scene->mMetaData->mKeys[MetadataIndex].C_Str(), "UpAxisSign") == 0) {
|
||||
scene->mMetaData->Get<int32_t>(MetadataIndex, UpAxisSign);
|
||||
}
|
||||
if (strcmp(scene->mMetaData->mKeys[MetadataIndex].C_Str(), "FrontAxis") == 0) {
|
||||
scene->mMetaData->Get<int32_t>(MetadataIndex, FrontAxis);
|
||||
}
|
||||
if (strcmp(scene->mMetaData->mKeys[MetadataIndex].C_Str(), "FrontAxisSign") == 0) {
|
||||
scene->mMetaData->Get<int32_t>(MetadataIndex, FrontAxisSign);
|
||||
}
|
||||
if (strcmp(scene->mMetaData->mKeys[MetadataIndex].C_Str(), "CoordAxis") == 0) {
|
||||
scene->mMetaData->Get<int32_t>(MetadataIndex, CoordAxis);
|
||||
}
|
||||
if (strcmp(scene->mMetaData->mKeys[MetadataIndex].C_Str(), "CoordAxisSign") == 0) {
|
||||
scene->mMetaData->Get<int32_t>(MetadataIndex, CoordAxisSign);
|
||||
}
|
||||
if (strcmp(scene->mMetaData->mKeys[MetadataIndex].C_Str(), "UnitScaleFactor") == 0) {
|
||||
scene->mMetaData->Get<double>(MetadataIndex, UnitScaleFactor);
|
||||
}
|
||||
}
|
||||
|
||||
aiVector3D upVec, forwardVec, rightVec;
|
||||
upVec[UpAxis] = UpAxisSign * static_cast<float>(UnitScaleFactor);
|
||||
forwardVec[FrontAxis] = FrontAxisSign * static_cast<float>(UnitScaleFactor);
|
||||
rightVec[CoordAxis] = CoordAxisSign * (float)UnitScaleFactor;
|
||||
|
||||
aiMatrix4x4 mat(rightVec.x, rightVec.y, rightVec.z, 0.0f,
|
||||
upVec.x, upVec.y, upVec.z, 0.0f,
|
||||
forwardVec.x, forwardVec.y, forwardVec.z, 0.0f,
|
||||
0.0f, 0.0f, 0.0f, 1.0f);
|
||||
scene->mRootNode->mTransformation *= mat;
|
||||
}
|
||||
|
||||
FBXConverter::FBXConverter(aiScene *out, const Document &doc, bool removeEmptyBones) :
|
||||
defaultMaterialIndex(),
|
||||
mMeshes(),
|
||||
|
@ -133,6 +180,8 @@ FBXConverter::FBXConverter(aiScene *out, const Document &doc, bool removeEmptyBo
|
|||
// need not contain geometry (i.e. camera animations, raw armatures).
|
||||
if (out->mNumMeshes == 0) {
|
||||
out->mFlags |= AI_SCENE_FLAGS_INCOMPLETE;
|
||||
} else {
|
||||
correctRootTransform(mSceneOut);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -3239,9 +3288,9 @@ aiNodeAnim* FBXConverter::GenerateSimpleNodeAnim(const std::string& name,
|
|||
}
|
||||
|
||||
if (keyframeLists[TransformationComp_Rotation].size() > 0) {
|
||||
InterpolateKeys(outRotations, keytimes, keyframeLists[TransformationComp_Rotation], AI_DEG_TO_RAD(defRotation), maxTime, minTime, rotOrder);
|
||||
InterpolateKeys(outRotations, keytimes, keyframeLists[TransformationComp_Rotation], defRotation, maxTime, minTime, rotOrder);
|
||||
} else {
|
||||
aiQuaternion defQuat = EulerToQuaternion(AI_DEG_TO_RAD(defRotation), rotOrder);
|
||||
aiQuaternion defQuat = EulerToQuaternion(defRotation, rotOrder);
|
||||
for (size_t i = 0; i < keyCount; ++i) {
|
||||
outRotations[i].mTime = CONVERT_FBX_TIME(keytimes[i]) * anim_fps;
|
||||
outRotations[i].mValue = defQuat;
|
||||
|
@ -3263,7 +3312,7 @@ aiNodeAnim* FBXConverter::GenerateSimpleNodeAnim(const std::string& name,
|
|||
|
||||
const aiVector3D& preRotation = PropertyGet<aiVector3D>(props, "PreRotation", ok);
|
||||
if (ok && preRotation.SquareLength() > zero_epsilon) {
|
||||
const aiQuaternion preQuat = EulerToQuaternion(AI_DEG_TO_RAD(preRotation), Model::RotOrder_EulerXYZ);
|
||||
const aiQuaternion preQuat = EulerToQuaternion(preRotation, Model::RotOrder_EulerXYZ);
|
||||
for (size_t i = 0; i < keyCount; ++i) {
|
||||
outRotations[i].mValue = preQuat * outRotations[i].mValue;
|
||||
}
|
||||
|
@ -3271,7 +3320,7 @@ aiNodeAnim* FBXConverter::GenerateSimpleNodeAnim(const std::string& name,
|
|||
|
||||
const aiVector3D& postRotation = PropertyGet<aiVector3D>(props, "PostRotation", ok);
|
||||
if (ok && postRotation.SquareLength() > zero_epsilon) {
|
||||
const aiQuaternion postQuat = EulerToQuaternion(AI_DEG_TO_RAD(postRotation), Model::RotOrder_EulerXYZ);
|
||||
const aiQuaternion postQuat = EulerToQuaternion(postRotation, Model::RotOrder_EulerXYZ);
|
||||
for (size_t i = 0; i < keyCount; ++i) {
|
||||
outRotations[i].mValue = outRotations[i].mValue * postQuat;
|
||||
}
|
||||
|
|
|
@ -59,9 +59,9 @@ namespace Assimp {
|
|||
|
||||
// ------------------------------------------------------------------------------------------------
|
||||
// Worker function for exporting a scene to Wavefront OBJ. Prototyped and registered in Exporter.cpp
|
||||
void ExportSceneObj(const char* pFile,IOSystem* pIOSystem, const aiScene* pScene, const ExportProperties* /*pProperties*/) {
|
||||
void ExportSceneObj(const char* pFile,IOSystem* pIOSystem, const aiScene* pScene, const ExportProperties* props) {
|
||||
// invoke the exporter
|
||||
ObjExporter exporter(pFile, pScene);
|
||||
ObjExporter exporter(pFile, pScene, false, props);
|
||||
|
||||
if (exporter.mOutput.fail() || exporter.mOutputMat.fail()) {
|
||||
throw DeadlyExportError("output data creation failed. Most likely the file became too large: " + std::string(pFile));
|
||||
|
@ -86,9 +86,9 @@ void ExportSceneObj(const char* pFile,IOSystem* pIOSystem, const aiScene* pScene
|
|||
|
||||
// ------------------------------------------------------------------------------------------------
|
||||
// Worker function for exporting a scene to Wavefront OBJ without the material file. Prototyped and registered in Exporter.cpp
|
||||
void ExportSceneObjNoMtl(const char* pFile,IOSystem* pIOSystem, const aiScene* pScene, const ExportProperties* ) {
|
||||
void ExportSceneObjNoMtl(const char* pFile,IOSystem* pIOSystem, const aiScene* pScene, const ExportProperties* props) {
|
||||
// invoke the exporter
|
||||
ObjExporter exporter(pFile, pScene, true);
|
||||
ObjExporter exporter(pFile, pScene, true, props);
|
||||
|
||||
if (exporter.mOutput.fail() || exporter.mOutputMat.fail()) {
|
||||
throw DeadlyExportError("output data creation failed. Most likely the file became too large: " + std::string(pFile));
|
||||
|
@ -111,7 +111,7 @@ void ExportSceneObjNoMtl(const char* pFile,IOSystem* pIOSystem, const aiScene* p
|
|||
static const std::string MaterialExt = ".mtl";
|
||||
|
||||
// ------------------------------------------------------------------------------------------------
|
||||
ObjExporter::ObjExporter(const char* _filename, const aiScene* pScene, bool noMtl)
|
||||
ObjExporter::ObjExporter(const char* _filename, const aiScene* pScene, bool noMtl, const ExportProperties* props)
|
||||
: filename(_filename)
|
||||
, pScene(pScene)
|
||||
, vn()
|
||||
|
@ -130,7 +130,10 @@ ObjExporter::ObjExporter(const char* _filename, const aiScene* pScene, bool noMt
|
|||
mOutputMat.imbue(l);
|
||||
mOutputMat.precision(ASSIMP_AI_REAL_TEXT_PRECISION);
|
||||
|
||||
WriteGeometryFile(noMtl);
|
||||
WriteGeometryFile(
|
||||
noMtl,
|
||||
props == nullptr ? true : props->GetPropertyBool("bJoinIdenticalVertices", true)
|
||||
);
|
||||
if ( !noMtl ) {
|
||||
WriteMaterialFile();
|
||||
}
|
||||
|
@ -255,14 +258,14 @@ void ObjExporter::WriteMaterialFile() {
|
|||
}
|
||||
}
|
||||
|
||||
void ObjExporter::WriteGeometryFile(bool noMtl) {
|
||||
void ObjExporter::WriteGeometryFile(bool noMtl, bool merge_identical_vertices) {
|
||||
WriteHeader(mOutput);
|
||||
if (!noMtl)
|
||||
mOutput << "mtllib " << GetMaterialLibName() << endl << endl;
|
||||
|
||||
// collect mesh geometry
|
||||
aiMatrix4x4 mBase;
|
||||
AddNode(pScene->mRootNode, mBase);
|
||||
AddNode(pScene->mRootNode, mBase, merge_identical_vertices);
|
||||
|
||||
// write vertex positions with colors, if any
|
||||
mVpMap.getKeys( vp );
|
||||
|
@ -330,7 +333,7 @@ void ObjExporter::WriteGeometryFile(bool noMtl) {
|
|||
}
|
||||
|
||||
// ------------------------------------------------------------------------------------------------
|
||||
void ObjExporter::AddMesh(const aiString& name, const aiMesh* m, const aiMatrix4x4& mat) {
|
||||
void ObjExporter::AddMesh(const aiString& name, const aiMesh* m, const aiMatrix4x4& mat, bool merge_identical_vertices) {
|
||||
mMeshes.emplace_back();
|
||||
MeshInstance& mesh = mMeshes.back();
|
||||
|
||||
|
@ -362,13 +365,14 @@ void ObjExporter::AddMesh(const aiString& name, const aiMesh* m, const aiMatrix4
|
|||
for(unsigned int a = 0; a < f.mNumIndices; ++a) {
|
||||
const unsigned int idx = f.mIndices[a];
|
||||
|
||||
const unsigned int fi = merge_identical_vertices ? 0 : idx;
|
||||
aiVector3D vert = mat * m->mVertices[idx];
|
||||
|
||||
if ( nullptr != m->mColors[ 0 ] ) {
|
||||
aiColor4D col4 = m->mColors[ 0 ][ idx ];
|
||||
face.indices[a].vp = mVpMap.getIndex({vert, aiColor3D(col4.r, col4.g, col4.b)});
|
||||
face.indices[a].vp = mVpMap.getIndex({vert, aiColor3D(col4.r, col4.g, col4.b), fi});
|
||||
} else {
|
||||
face.indices[a].vp = mVpMap.getIndex({vert, aiColor3D(0,0,0)});
|
||||
face.indices[a].vp = mVpMap.getIndex({vert, aiColor3D(0,0,0), fi});
|
||||
}
|
||||
|
||||
if (m->mNormals) {
|
||||
|
@ -388,21 +392,21 @@ void ObjExporter::AddMesh(const aiString& name, const aiMesh* m, const aiMatrix4
|
|||
}
|
||||
|
||||
// ------------------------------------------------------------------------------------------------
|
||||
void ObjExporter::AddNode(const aiNode* nd, const aiMatrix4x4& mParent) {
|
||||
void ObjExporter::AddNode(const aiNode* nd, const aiMatrix4x4& mParent, bool merge_identical_vertices) {
|
||||
const aiMatrix4x4& mAbs = mParent * nd->mTransformation;
|
||||
|
||||
aiMesh *cm( nullptr );
|
||||
for(unsigned int i = 0; i < nd->mNumMeshes; ++i) {
|
||||
cm = pScene->mMeshes[nd->mMeshes[i]];
|
||||
if (nullptr != cm) {
|
||||
AddMesh(cm->mName, pScene->mMeshes[nd->mMeshes[i]], mAbs);
|
||||
AddMesh(cm->mName, pScene->mMeshes[nd->mMeshes[i]], mAbs, merge_identical_vertices);
|
||||
} else {
|
||||
AddMesh(nd->mName, pScene->mMeshes[nd->mMeshes[i]], mAbs);
|
||||
AddMesh(nd->mName, pScene->mMeshes[nd->mMeshes[i]], mAbs, merge_identical_vertices);
|
||||
}
|
||||
}
|
||||
|
||||
for(unsigned int i = 0; i < nd->mNumChildren; ++i) {
|
||||
AddNode(nd->mChildren[i], mAbs);
|
||||
AddNode(nd->mChildren[i], mAbs, merge_identical_vertices);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -51,6 +51,8 @@ OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|||
#include <vector>
|
||||
#include <map>
|
||||
|
||||
#include <assimp/Exporter.hpp>
|
||||
|
||||
struct aiScene;
|
||||
struct aiNode;
|
||||
struct aiMesh;
|
||||
|
@ -63,7 +65,7 @@ namespace Assimp {
|
|||
class ObjExporter {
|
||||
public:
|
||||
/// Constructor for a specific scene to export
|
||||
ObjExporter(const char* filename, const aiScene* pScene, bool noMtl=false);
|
||||
ObjExporter(const char* filename, const aiScene* pScene, bool noMtl=false, const ExportProperties* props = nullptr);
|
||||
~ObjExporter();
|
||||
std::string GetMaterialLibName();
|
||||
std::string GetMaterialLibFileName();
|
||||
|
@ -97,10 +99,10 @@ private:
|
|||
|
||||
void WriteHeader(std::ostringstream& out);
|
||||
void WriteMaterialFile();
|
||||
void WriteGeometryFile(bool noMtl=false);
|
||||
void WriteGeometryFile(bool noMtl=false, bool merge_identical_vertices = false);
|
||||
std::string GetMaterialName(unsigned int index);
|
||||
void AddMesh(const aiString& name, const aiMesh* m, const aiMatrix4x4& mat);
|
||||
void AddNode(const aiNode* nd, const aiMatrix4x4& mParent);
|
||||
void AddMesh(const aiString& name, const aiMesh* m, const aiMatrix4x4& mat, bool merge_identical_vertices);
|
||||
void AddNode(const aiNode* nd, const aiMatrix4x4& mParent, bool merge_identical_vertices);
|
||||
|
||||
private:
|
||||
std::string filename;
|
||||
|
@ -109,6 +111,7 @@ private:
|
|||
struct vertexData {
|
||||
aiVector3D vp;
|
||||
aiColor3D vc; // OBJ does not support 4D color
|
||||
uint32_t index = 0;
|
||||
};
|
||||
|
||||
std::vector<aiVector3D> vn, vt;
|
||||
|
@ -133,7 +136,7 @@ private:
|
|||
if (a.vc.g > b.vc.g) return false;
|
||||
if (a.vc.b < b.vc.b) return true;
|
||||
if (a.vc.b > b.vc.b) return false;
|
||||
return false;
|
||||
return a.index < b.index;
|
||||
}
|
||||
};
|
||||
|
||||
|
|
|
@ -1,29 +0,0 @@
|
|||
|
||||
------------------------------------------------------------------------------------
|
||||
Open Asset Import Library (Assimp) Tools/Binaries for Windows
|
||||
Release Notes
|
||||
------------------------------------------------------------------------------------
|
||||
|
||||
|
||||
Known Bugs & Limitations
|
||||
========================
|
||||
|
||||
Viewer
|
||||
|
||||
- For files more than one embedded texture, only the first is loaded.
|
||||
- Normals appear flipped from time to time when either of the normals-related menu items was hit.
|
||||
- Alpha-sorting is implemented, but still causes artifacts when models are moved quickly.
|
||||
- Several important texture file formats (such as GIF) are not supported.
|
||||
- HUD is blurred on the right side. ATI/AMD hardware only.
|
||||
|
||||
Troubleshooting
|
||||
===============
|
||||
|
||||
1. Missing d3dx9_42.dll?
|
||||
Install the latest DirectX runtime or grab the file from somewhere (that's evil but mostly fine).
|
||||
|
||||
2. Application configuration not correct / missing msv*** DLLs?
|
||||
(Re)install Microsoft Visual C++ 2005 SP1 Redistributable (x86 or x64, depending on your system)
|
||||
|
||||
3. Crashes immediately
|
||||
You CPU lacks SSE2 support. Build Assimp from scratch to suit your CPU, sorry.
|
|
@ -1,169 +0,0 @@
|
|||
|
||||
rem -----------------------------------------------------
|
||||
rem Batch file to build zipped redist packages
|
||||
rem Two different packages are built:
|
||||
rem
|
||||
rem assimp--<revision>-bin.zip
|
||||
rem Binaries for x86 and x64
|
||||
rem Command line reference
|
||||
rem
|
||||
rem assimp--<revision>-sdk.zip
|
||||
rem Binaries for x86 and x64, Debug & Release
|
||||
rem Libs for DLL build, x86 & 64, Debug & Release
|
||||
rem Full SVN checkout exluding mkutil & port
|
||||
rem
|
||||
rem
|
||||
rem PREREQUISITES:
|
||||
rem -7za.exe (7zip standalone)
|
||||
rem Download from http://www.7-zip.org/download.html
|
||||
rem
|
||||
rem -svnversion.exe (Subversion revision getter)
|
||||
rem Download any command line SVN package
|
||||
rem
|
||||
rem -doxygen.exe (Doxygen client)
|
||||
rem Download from www.doxygen.com
|
||||
rem
|
||||
rem -svn client
|
||||
rem
|
||||
rem NOTES:
|
||||
rem ./bin must not have any local modifications
|
||||
rem
|
||||
rem -----------------------------------------------------
|
||||
|
||||
@echo off
|
||||
color 4e
|
||||
cls
|
||||
|
||||
rem -----------------------------------------------------
|
||||
rem Setup file revision for build
|
||||
rem -----------------------------------------------------
|
||||
call mkrev.bat
|
||||
|
||||
rem -----------------------------------------------------
|
||||
rem Build output file names
|
||||
rem -----------------------------------------------------
|
||||
|
||||
cd ..\..\bin
|
||||
svnversion > tmpfile.txt
|
||||
SET /p REVISIONBASE= < tmpfile.txt
|
||||
DEL /q tmpfile.txt
|
||||
cd ..\packaging\windows-mkzip
|
||||
|
||||
SET VERSIONBASE=2.0.%REVISIONBASE%
|
||||
|
||||
SET OUT_SDK=assimp--%VERSIONBASE%-sdk
|
||||
SET OUT_BIN=assimp--%VERSIONBASE%-bin
|
||||
|
||||
SET BINCFG_x86=release-dll_win32
|
||||
SET BINCFG_x64=release-dll_x64
|
||||
|
||||
SET BINCFG_x86_DEBUG=debug-dll_win32
|
||||
SET BINCFG_x64_DEBUG=debug-dll_x64
|
||||
|
||||
rem -----------------------------------------------------
|
||||
rem Delete previous output directories
|
||||
rem -----------------------------------------------------
|
||||
RD /S /q final\
|
||||
|
||||
rem -----------------------------------------------------
|
||||
rem Create output directories
|
||||
rem -----------------------------------------------------
|
||||
|
||||
mkdir final\%OUT_BIN%\x86
|
||||
mkdir final\%OUT_BIN%\x64
|
||||
|
||||
rem -----------------------------------------------------
|
||||
rem Copy all executables to 'final-bin'
|
||||
rem -----------------------------------------------------
|
||||
|
||||
copy /Y ..\..\bin\assimpview_%BINCFG_x86%\assimp_view.exe "final\%OUT_BIN%\x86\assimp_view.exe"
|
||||
copy /Y ..\..\bin\assimpview_%BINCFG_x64%\assimp_view.exe "final\%OUT_BIN%\x64\assimp_view.exe"
|
||||
|
||||
copy /Y ..\..\bin\assimpcmd_%BINCFG_x86%\assimp.exe "final\%OUT_BIN%\x86\assimp.exe"
|
||||
copy /Y ..\..\bin\assimpcmd_%BINCFG_x64%\assimp.exe "final\%OUT_BIN%\x64\assimp.exe"
|
||||
|
||||
copy /Y ..\..\bin\assimp_%BINCFG_x86%\Assimp32.dll "final\%OUT_BIN%\x86\Assimp32.dll"
|
||||
copy /Y ..\..\bin\assimp_%BINCFG_x64%\Assimp64.dll "final\%OUT_BIN%\x64\Assimp64.dll"
|
||||
|
||||
copy ..\..\LICENSE final\%OUT_BIN%\LICENSE
|
||||
copy ..\..\CREDITS final\%OUT_BIN%\CREDITS
|
||||
copy bin_readme.txt final\%OUT_BIN%\README
|
||||
copy bin_readme.txt final\%OUT_BIN%\README
|
||||
|
||||
copy ..\..\doc\AssimpCmdDoc_Html\AssimpCmdDoc.chm final\%OUT_BIN%\CommandLine.chm
|
||||
|
||||
rem -----------------------------------------------------
|
||||
rem Do a clean export of the repository and build SDK
|
||||
rem
|
||||
rem We take the current revision and remove some stuff
|
||||
rem that is nto yet ready to be published.
|
||||
rem -----------------------------------------------------
|
||||
|
||||
svn export .\..\..\ .\final\%OUT_SDK%
|
||||
|
||||
mkdir final\%OUT_SDK%\doc\assimp_html
|
||||
mkdir final\%OUT_SDK%\doc\assimpcmd_html
|
||||
copy .\..\..\doc\AssimpDoc_Html\* final\%OUT_SDK%\doc\assimp_html
|
||||
copy .\..\..\doc\AssimpCmdDoc_Html\* final\%OUT_SDK%\doc\assimpcmd_html
|
||||
del final\%OUT_SDK%\doc\assimpcmd_html\AssimpCmdDoc.chm
|
||||
del final\%OUT_SDK%\doc\assimp_html\AssimpDoc.chm
|
||||
|
||||
rem Copy doc to a suitable place
|
||||
move final\%OUT_SDK%\doc\AssimpDoc_Html\AssimpDoc.chm final\%OUT_SDK%\Documentation.chm
|
||||
move final\%OUT_SDK%\doc\AssimpCmdDoc_Html\AssimpCmdDoc.chm final\%OUT_SDK%\CommandLine.chm
|
||||
|
||||
rem Cleanup ./doc folder
|
||||
del /q final\%OUT_SDK%\doc\Preamble.txt
|
||||
RD /s /q final\%OUT_SDK%\doc\AssimpDoc_Html
|
||||
RD /s /q final\%OUT_SDK%\doc\AssimpCmdDoc_Html
|
||||
|
||||
rem Insert 'dummy' files into empty folders
|
||||
echo. > final\%OUT_SDK%\lib\dummy
|
||||
echo. > final\%OUT_SDK%\obj\dummy
|
||||
|
||||
|
||||
RD /s /q final\%OUT_SDK%\port\swig
|
||||
|
||||
rem Also, repackaging is not a must-have feature
|
||||
RD /s /q final\%OUT_SDK%\packaging
|
||||
|
||||
rem Copy prebuilt libs
|
||||
mkdir "final\%OUT_SDK%\lib\assimp_%BINCFG_x86%"
|
||||
mkdir "final\%OUT_SDK%\lib\assimp_%BINCFG_x64%"
|
||||
mkdir "final\%OUT_SDK%\lib\assimp_%BINCFG_x86_DEBUG%"
|
||||
mkdir "final\%OUT_SDK%\lib\assimp_%BINCFG_x64_DEBUG%"
|
||||
|
||||
copy /Y ..\..\lib\assimp_%BINCFG_x86%\assimp.lib "final\%OUT_SDK%\lib\assimp_%BINCFG_x86%"
|
||||
copy /Y ..\..\lib\assimp_%BINCFG_x64%\assimp.lib "final\%OUT_SDK%\lib\assimp_%BINCFG_x64%\"
|
||||
copy /Y ..\..\lib\assimp_%BINCFG_x86_DEBUG%\assimp.lib "final\%OUT_SDK%\lib\assimp_%BINCFG_x86_DEBUG%\"
|
||||
copy /Y ..\..\lib\assimp_%BINCFG_x64_DEBUG%\assimp.lib "final\%OUT_SDK%\lib\assimp_%BINCFG_x64_DEBUG%\"
|
||||
|
||||
rem Copy prebuilt DLLs
|
||||
mkdir "final\%OUT_SDK%\bin\assimp_%BINCFG_x86%"
|
||||
mkdir "final\%OUT_SDK%\bin\assimp_%BINCFG_x64%"
|
||||
mkdir "final\%OUT_SDK%\bin\assimp_%BINCFG_x86_DEBUG%"
|
||||
mkdir "final\%OUT_SDK%\bin\assimp_%BINCFG_x64_DEBUG%"
|
||||
|
||||
|
||||
copy /Y ..\..\bin\assimp_%BINCFG_x86%\Assimp32.dll "final\%OUT_SDK%\bin\assimp_%BINCFG_x86%\"
|
||||
copy /Y ..\..\bin\assimp_%BINCFG_x64%\Assimp64.dll "final\%OUT_SDK%\bin\assimp_%BINCFG_x64%\"
|
||||
copy /Y ..\..\bin\assimp_%BINCFG_x86_DEBUG%\Assimp32d.dll "final\%OUT_SDK%\bin\assimp_%BINCFG_x86_DEBUG%\"
|
||||
copy /Y ..\..\bin\assimp_%BINCFG_x64_DEBUG%\Assimp64d.dll "final\%OUT_SDK%\bin\assimp_%BINCFG_x64_DEBUG%\"
|
||||
|
||||
|
||||
rem -----------------------------------------------------
|
||||
rem Make final-bin.zip and final-sdk.zip
|
||||
rem -----------------------------------------------------
|
||||
|
||||
IF NOT EXIST 7za.exe (
|
||||
cls
|
||||
echo You need to have 7zip standalone installed to
|
||||
echo build ZIP archives. Download: http://www.7-zip.org/download.html
|
||||
pause
|
||||
) else (
|
||||
7za.exe a -tzip "final\%OUT_BIN%.zip" ".\final\%OUT_BIN%"
|
||||
7za.exe a -tzip "final\%OUT_SDK%.zip" ".\final\%OUT_SDK%"
|
||||
)
|
||||
|
||||
rem OK. We should have the release packages now.
|
||||
|
|
@ -1,27 +0,0 @@
|
|||
@echo off
|
||||
|
||||
rem -----------------------------------------------------
|
||||
rem Tiny batch script to build the input file revision.h
|
||||
rem revision.h contains the revision number of the wc.
|
||||
rem It is included by assimp.rc.
|
||||
rem -----------------------------------------------------
|
||||
|
||||
rem This is not very elegant, but it works.
|
||||
rem ./bin shouldn't have any local modifications
|
||||
|
||||
svnversion > tmpfile.txt
|
||||
set /p addtext= < tmpfile.txt
|
||||
del /q tmpfile.txt
|
||||
|
||||
echo #define SVNRevision > tmpfile.txt
|
||||
|
||||
if exist ..\..\revision.h del /q ..\..\revision.h
|
||||
for /f "delims=" %%l in (tmpfile.txt) Do (
|
||||
for /f "delims=M:" %%r in ("%addtext%") Do (
|
||||
echo %%l %%r >> ..\..\revision.h
|
||||
)
|
||||
)
|
||||
del /q tmpfile.txt
|
||||
|
||||
|
||||
|
|
@ -1,57 +0,0 @@
|
|||
@echo off
|
||||
set "initialdir=%cd%"
|
||||
goto:main
|
||||
|
||||
:exitsucc
|
||||
cd /d "%initialdir%"
|
||||
set initialdir=
|
||||
|
||||
set MSBUILD_15="C:\Program Files (x86)\Microsoft Visual Studio\2018\Professional\MSBuild\15.0\Bin\msbuild.exe"
|
||||
set MSBUILD_14="C:\Program Files (x86)\MSBuild\14.0\Bin\msbuild.exe"
|
||||
|
||||
if not "%VS150%"=="" set MSBUILD_15="%VS150%\MSBuild\15.0\Bin\msbuild.exe"
|
||||
|
||||
if /i %VS_VERSION%==2017 (
|
||||
set MS_BUILD_EXE=%MSBUILD_15%
|
||||
set PLATFORM_VER=v141
|
||||
) else (
|
||||
set MS_BUILD_EXE=%MSBUILD_14%
|
||||
set PLATFORM_VER=v140
|
||||
)
|
||||
|
||||
set MSBUILD=%MS_BUILD_EXE%
|
||||
|
||||
exit /b 0
|
||||
|
||||
:main
|
||||
if not defined PLATFORM set "PLATFORM=x64"
|
||||
|
||||
::my work here is done?
|
||||
|
||||
set PATH_VSWHERE=C:\Program Files (x86)\Microsoft Visual Studio\Installer\
|
||||
REM set PATH_STUDIO="C:\Program Files (x86)\Microsoft Visual Studio\2017\Professional\"
|
||||
|
||||
for /f "usebackq tokens=*" %%i in (`"%PATH_VSWHERE%vswhere" -latest -products * -requires Microsoft.Component.MSBuild -property installationPath`) do (
|
||||
set InstallDir=%%i
|
||||
)
|
||||
|
||||
IF EXIST "%InstallDir%\VC\Auxiliary\Build\vcvarsall.bat" set VS150=%InstallDir%\
|
||||
|
||||
set "CMAKE_GENERATOR=Visual Studio 15 2017 Win64"
|
||||
if not "%VS150%"=="" call "%VS150%\VC\Auxiliary\Build\vcvarsall.bat" %PLATFORM% && echo found VS 2o17 && set PLATFORM_VER=v141 && set VS_VERSION=2017 && goto:exitsucc
|
||||
|
||||
set "CMAKE_GENERATOR=Visual Studio 14 2015 Win64"
|
||||
if defined VS140COMNTOOLS call "%VS140COMNTOOLS%..\..\VC\vcvarsall.bat" %PLATFORM% && echo found VS 2o15 && set PLATFORM_VER=v140 && set VS_VERSION=2015 && goto:exitsucc
|
||||
|
||||
if defined VS130COMNTOOLS echo call ghostbusters... found lost VS version
|
||||
|
||||
set "CMAKE_GENERATOR=Visual Studio 12 2013 Win64"
|
||||
if defined VS120COMNTOOLS call "%VS120COMNTOOLS%..\..\VC\vcvarsall.bat" %PLATFORM% && echo found VS 2o13 && set PLATFORM_VER=v120 && set VS_VERSION=2013 && goto:exitsucc
|
||||
|
||||
set "CMAKE_GENERATOR=Visual Studio 11 2012 Win64"
|
||||
if defined VS110COMNTOOLS call "%VS110COMNTOOLS%..\..\VC\vcvarsall.bat" %PLATFORM% && echo found VS 2o12 && set PLATFORM_VER=v110 && set VS_VERSION=2012 && goto:exitsucc
|
||||
|
||||
set "CMAKE_GENERATOR=Visual Studio 10 2010 Win64"
|
||||
if defined VS100COMNTOOLS call "%VS100COMNTOOLS%..\..\VC\vcvarsall.bat" %PLATFORM% && echo found VS 2o1o && set PLATFORM_VER=v100 && set VS_VERSION=2010 && goto:exitsucc
|
||||
|
||||
goto:exitsucc
|
|
@ -1,18 +0,0 @@
|
|||
rem @echo off
|
||||
setlocal
|
||||
call build_env_win32.bat
|
||||
|
||||
set BUILD_CONFIG=release
|
||||
set PLATFORM_CONFIG=x64
|
||||
set MAX_CPU_CONFIG=4
|
||||
|
||||
set CONFIG_PARAMETER=/p:Configuration="%BUILD_CONFIG%"
|
||||
set PLATFORM_PARAMETER=/p:Platform="%PLATFORM_CONFIG%"
|
||||
set CPU_PARAMETER=/maxcpucount:%MAX_CPU_CONFIG%
|
||||
set PLATFORM_TOOLSET=/p:PlatformToolset=%PLATFORM_VER%
|
||||
|
||||
pushd ..\..\
|
||||
cmake CMakeLists.txt -G "Visual Studio 15 2017 Win64"
|
||||
%MSBUILD% assimp.sln %CONFIG_PARAMETER% %PLATFORM_PARAMETER% %CPU_PARAMETER% %PLATFORM_TOOLSET%
|
||||
popd
|
||||
endlocal
|
Loading…
Reference in New Issue