Browse Source

Merge branch 'master' into MalcolmTyrrell/gltfCrashes

Kim Kulling 4 years ago
parent
commit
5f652feb75
3 changed files with 25 additions and 0 deletions
  1. 1 0
      code/AssetLib/glTF2/glTF2Asset.inl
  2. 20 0
      tools/assimp_cmd/Main.cpp
  3. 4 0
      tools/assimp_cmd/Main.h

+ 1 - 0
code/AssetLib/glTF2/glTF2Asset.inl

@@ -478,6 +478,7 @@ unsigned int LazyDict<T>::Remove(const char *id) {
     mAsset.mUsedIds[id] = false;
     mObjsById.erase(id);
     mObjsByOIndex.erase(index);
+    delete mObjs[index];
     mObjs.erase(mObjs.begin() + index);
 
     //update index of object in mObjs;

+ 20 - 0
tools/assimp_cmd/Main.cpp

@@ -325,6 +325,14 @@ bool ExportModel(const aiScene* pOut,
 		PrintHorBar();
 	}
 
+	aiMatrix4x4 rx, ry, rz;
+    aiMatrix4x4::RotationX(imp.rot.x, rx);
+    aiMatrix4x4::RotationY(imp.rot.y, ry);
+    aiMatrix4x4::RotationZ(imp.rot.z, rz);
+	pOut->mRootNode->mTransformation *= rx;
+    pOut->mRootNode->mTransformation *= ry;
+    pOut->mRootNode->mTransformation *= rz;
+
 	// do the actual export, measure time
 	const clock_t first = clock();
 	const aiReturn res = globalExporter->Export(pOut,pID,path);
@@ -493,6 +501,18 @@ int ProcessStandardArguments(
 		else if (! strcmp( param, "-v") || ! strcmp( param, "--verbose")) {
 			fill.verbose = true;
 		}
+		else if (!strncmp(params[i], "-rx=", 4) || !strncmp(params[i], "--rotation-x=", 13)) {
+            std::string value = std::string(params[i] + (params[i][1] == '-' ? 13 : 4));
+            fill.rot.x = std::stof(value);
+		} 
+		else if (!strncmp(params[i], "-ry=", 4) || !strncmp(params[i], "--rotation-y=", 13)) {
+            std::string value = std::string(params[i] + (params[i][1] == '-' ? 13 : 4));
+            fill.rot.y = std::stof(value);
+        } 
+		else if (!strncmp(params[i], "-rz=", 4) || !strncmp(params[i], "--rotation-z=", 13)) {
+            std::string value = std::string(params[i] + (params[i][1] == '-' ? 13 : 4));
+            fill.rot.z = std::stof(value);
+        }
 		else if (! strncmp( param, "--log-out=",10) || ! strncmp( param, "-lo",3)) {
 			fill.logFile = std::string(params[i]+(params[i][1] == '-' ? 10 : 3));
 			if (!fill.logFile.length()) {

+ 4 - 0
tools/assimp_cmd/Main.h

@@ -96,6 +96,7 @@ struct ImportData {
 		,	showLog (false)
 		,	verbose (false)
 		,	log	    (false)
+        ,   rot     (aiVector3D(0.f, 0.f, 0.f))
 	{}
 
 	/// Post-processing flags
@@ -112,6 +113,9 @@ struct ImportData {
 
 	// Need to log?
 	bool log;
+
+	// Export With Rotation
+	aiVector3D rot;
 };
 
 /// \enum AssimpCmdError