Преглед изворни кода

- more fine-grained import settings.

Alexander Gessler пре 13 година
родитељ
комит
711878567a
2 измењених фајлова са 23 додато и 3 уклоњено
  1. 2 2
      code/FBXConverter.cpp
  2. 21 1
      code/FBXImportSettings.h

+ 2 - 2
code/FBXConverter.cpp

@@ -261,7 +261,7 @@ private:
 		// one material per mesh maps easily to aiMesh. Multiple material 
 		// meshes need to be split.
 		const std::vector<unsigned int>& mindices = mesh.GetMaterialIndices();
-		if (!mindices.empty()) {
+		if (doc.Settings().readMaterials && !mindices.empty()) {
 			const unsigned int base = mindices[0];
 			BOOST_FOREACH(unsigned int index, mindices) {
 				if(index != base) {
@@ -408,7 +408,7 @@ private:
 			std::copy(colors.begin(),colors.end(),out_mesh->mColors[i]);
 		}
 
-		if(mindices.empty()) {
+		if(!doc.Settings().readMaterials || mindices.empty()) {
 			FBXImporter::LogError("no material assigned to mesh, setting default material");
 			out_mesh->mMaterialIndex = GetDefaultMaterial();
 		}

+ 21 - 1
code/FBXImportSettings.h

@@ -53,6 +53,10 @@ struct ImportSettings
 	ImportSettings()
 		: readAllLayers(true)
 		, readAllMaterials()
+		, readMaterials(true)
+		, readCameras(true)
+		, readLights(true)
+		, readAnimations(true)
 	{}
 
 	/** specifies whether all geometry layers are read and scanned for
@@ -66,8 +70,24 @@ struct ImportSettings
 	/** specifies whether all materials are read, or only those that
 	 *  are referenced by at least one mesh. Reading all materials
 	 *  may make FBX reading a lot slower since all objects
-	 *  need to be processed .*/
+	 *  need to be processed .
+	 *  This bit is ignored unless readMaterials=true*/
 	bool readAllMaterials;
+
+
+	/** import materials (true) or skip them and assign a default 
+	 *  material. The default value is true.*/
+	bool readMaterials;
+
+	/** import cameras? Default value is true.*/
+	bool readCameras;
+
+	/** import light sources? Default value is true.*/
+	bool readLights;
+
+	/** import animations (i.e. animation curves, the node
+	 *  skeleton is always imported)? Default value is true. */
+	bool readAnimations;
 };