[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [50047] branches/soc-2012-bratwurst/source /blender: - bf_assimp, bf_fbx: make assimp and fbx import settings accessible from the UI / add them to SRNA.
Alexander Gessler
alexander.gessler at gmx.net
Mon Aug 20 16:28:21 CEST 2012
Revision: 50047
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=50047
Author: aramis_acg
Date: 2012-08-20 14:28:21 +0000 (Mon, 20 Aug 2012)
Log Message:
-----------
- bf_assimp, bf_fbx: make assimp and fbx import settings accessible from the UI / add them to SRNA.
Modified Paths:
--------------
branches/soc-2012-bratwurst/source/blender/assimp/MeshImporter.cpp
branches/soc-2012-bratwurst/source/blender/assimp/SceneImporter.cpp
branches/soc-2012-bratwurst/source/blender/assimp/bassimp.cpp
branches/soc-2012-bratwurst/source/blender/assimp/bassimp.h
branches/soc-2012-bratwurst/source/blender/fbx/bfbx.cpp
branches/soc-2012-bratwurst/source/blender/fbx/bfbx.h
branches/soc-2012-bratwurst/source/blender/windowmanager/intern/wm_operators.c
Modified: branches/soc-2012-bratwurst/source/blender/assimp/MeshImporter.cpp
===================================================================
--- branches/soc-2012-bratwurst/source/blender/assimp/MeshImporter.cpp 2012-08-20 14:03:19 UTC (rev 50046)
+++ branches/soc-2012-bratwurst/source/blender/assimp/MeshImporter.cpp 2012-08-20 14:28:21 UTC (rev 50047)
@@ -63,7 +63,9 @@
// XXX copypaste from collada
mesh->id.us--; // is already 1 here, but will be set later in set_mesh
- reverseMatIDs.reserve(16);
+ if(scene_imp.get_settings().read_materials) {
+ reverseMatIDs.reserve(16);
+ }
}
@@ -118,9 +120,11 @@
// give up ownership of the mesh object
mesh = NULL;
- // assign materials
- for (size_t i = 0; i < reverseMatIDs.size(); ++i) {
- assign_material(ob,scene_imp.get_material(reverseMatIDs[i]).get_material(),ob->totcol + 1, BKE_MAT_ASSIGN_OBDATA);
+ if(scene_imp.get_settings().read_materials) {
+ // assign materials
+ for (size_t i = 0; i < reverseMatIDs.size(); ++i) {
+ assign_material(ob,scene_imp.get_material(reverseMatIDs[i]).get_material(),ob->totcol + 1, BKE_MAT_ASSIGN_OBDATA);
+ }
}
return ob;
@@ -449,6 +453,10 @@
}
}
+ if(!scene_imp.get_settings().read_materials) {
+ continue;
+ }
+
if (matIDs.find(m.mMaterialIndex) == matIDs.end()) {
matIDs[m.mMaterialIndex] = reverseMatIDs.size();
reverseMatIDs.push_back(m.mMaterialIndex);
Modified: branches/soc-2012-bratwurst/source/blender/assimp/SceneImporter.cpp
===================================================================
--- branches/soc-2012-bratwurst/source/blender/assimp/SceneImporter.cpp 2012-08-20 14:03:19 UTC (rev 50046)
+++ branches/soc-2012-bratwurst/source/blender/assimp/SceneImporter.cpp 2012-08-20 14:28:21 UTC (rev 50047)
@@ -136,6 +136,7 @@
{
unsigned int flags = aiProcess_JoinIdenticalVertices;
+ // needed for AI_CONFIG_PP_SBP_REMOVE
if (settings.nolines) {
flags |= aiProcess_SortByPType;
@@ -185,7 +186,9 @@
handle_coordinate_space();
handle_scale();
- convert_materials();
+ if(settings.read_materials) {
+ convert_materials();
+ }
// check if there are bones present because this changes
// the way how the assimp node hierarchy is imported.
@@ -198,10 +201,16 @@
}
convert_node(*scene->mRootNode,NULL);
- convert_armature();
- convert_skin();
- convert_animations();
+ if(settings.read_armature) {
+ convert_armature();
+ convert_skin();
+ }
+
+ if(settings.read_animations) {
+ convert_animations();
+ }
+
verbose("conversion to blender Scene ok");
return true;
}
@@ -391,7 +400,7 @@
}
// attach lights (these are located in the global aiScene and referenced by name)
- if(scene->mNumLights) {
+ if(scene->mNumLights && settings.read_lights) {
for (unsigned int i = 0, c = scene->mNumLights; i < c; ++i) {
const aiLight* const light = scene->mLights[i];
@@ -407,7 +416,7 @@
}
// attach cameras (these are located in the global aiScene and referenced by name)
- if(scene->mNumCameras) {
+ if(scene->mNumCameras && settings.read_cameras) {
for (unsigned int i = 0, c = scene->mNumCameras; i < c; ++i) {
const aiCamera* const cam = scene->mCameras[i];
Modified: branches/soc-2012-bratwurst/source/blender/assimp/bassimp.cpp
===================================================================
--- branches/soc-2012-bratwurst/source/blender/assimp/bassimp.cpp 2012-08-20 14:03:19 UTC (rev 50046)
+++ branches/soc-2012-bratwurst/source/blender/assimp/bassimp.cpp 2012-08-20 14:28:21 UTC (rev 50047)
@@ -84,6 +84,23 @@
}
+ void bassimp_import_set_defaults(bassimp_import_settings* defaults_out)
+ {
+ assert(defaults_out);
+
+ defaults_out->enableAssimpLog = 0;
+ defaults_out->reports = NULL;
+ defaults_out->nolines = 0;
+ defaults_out->triangulate = 0;
+
+ defaults_out->read_animations = 1;
+ defaults_out->read_armature = 1;
+ defaults_out->read_cameras = 1;
+ defaults_out->read_lights = 1;
+ defaults_out->read_materials = 1;
+ }
+
+
int bassimp_import(bContext *C, const char *filepath, const bassimp_import_settings* settings)
{
assert(C);
@@ -91,10 +108,7 @@
bassimp_import_settings defaults;
if (!settings) {
- defaults.enableAssimpLog = 0;
- defaults.reports = NULL;
- defaults.nolines = 0;
- defaults.triangulate = 0;
+ bassimp_import_set_defaults(&defaults);
settings = &defaults;
}
Modified: branches/soc-2012-bratwurst/source/blender/assimp/bassimp.h
===================================================================
--- branches/soc-2012-bratwurst/source/blender/assimp/bassimp.h 2012-08-20 14:03:19 UTC (rev 50046)
+++ branches/soc-2012-bratwurst/source/blender/assimp/bassimp.h 2012-08-20 14:28:21 UTC (rev 50047)
@@ -66,11 +66,23 @@
* the scene is scaled to */
float maximum_size;
+
+ /* flags to specify which parts of the scene to import */
+ int read_animations;
+ int read_cameras;
+ int read_lights;
+ int read_armature;
+ int read_materials;
+
} bassimp_import_settings;
+ /* obtain default settings for bassimp_import() */
+ void bassimp_import_set_defaults(bassimp_import_settings* defaults_out);
- /* import a scene using assimp. settings are optional.
+
+ /* import a scene using assimp. settings are optional, bassimp_import_set_defaults
+ * will be used if NULL is specified.
* returns 1 on success, 0 on error
*/
int bassimp_import(bContext *C, const char *filepath, const bassimp_import_settings* settings);
Modified: branches/soc-2012-bratwurst/source/blender/fbx/bfbx.cpp
===================================================================
--- branches/soc-2012-bratwurst/source/blender/fbx/bfbx.cpp 2012-08-20 14:03:19 UTC (rev 50046)
+++ branches/soc-2012-bratwurst/source/blender/fbx/bfbx.cpp 2012-08-20 14:28:21 UTC (rev 50047)
@@ -34,10 +34,23 @@
#include "BKE_scene.h"
#include "BKE_context.h"
-/* make dummy file */
#include "BLI_fileops.h"
#include "BLI_path_util.h"
+
+ void bfbx_import_set_defaults(bfbx_import_settings* defaults_out)
+ {
+ assert(defaults_out);
+
+ bassimp_import_set_defaults(&defaults_out->assimp_settings);
+
+ defaults_out->all_geo_layers = 1;
+ defaults_out->drop_dummy_anims = 1;
+ defaults_out->preserve_pivot_nodes = 0;
+ defaults_out->strict_mode = 0;
+ }
+
+
int bfbx_import(bContext *C, const char *filepath, const bfbx_import_settings* settings)
{
assert(C);
@@ -45,12 +58,8 @@
bfbx_import_settings defaults;
- defaults.assimp_settings.enableAssimpLog = 0;
- defaults.assimp_settings.reports = NULL;
- defaults.assimp_settings.nolines = 0;
- defaults.assimp_settings.triangulate = 0;
-
if(!settings) {
+ bfbx_import_set_defaults(&defaults);
settings = &defaults;
}
Modified: branches/soc-2012-bratwurst/source/blender/fbx/bfbx.h
===================================================================
--- branches/soc-2012-bratwurst/source/blender/fbx/bfbx.h 2012-08-20 14:03:19 UTC (rev 50046)
+++ branches/soc-2012-bratwurst/source/blender/fbx/bfbx.h 2012-08-20 14:28:21 UTC (rev 50047)
@@ -59,7 +59,12 @@
} bfbx_import_settings;
- /* import/export functions
+ /* obtain default settings for bfbx_import() */
+ void bfbx_import_set_defaults(bfbx_import_settings* defaults_out);
+
+
+ /* import/export functions, settings are optional, bfbx_import_set_defaults()
+ * will be used to get default settings if NULL is specified.
* both return 1 on success, 0 on error
*/
int bfbx_import(bContext *C, const char *filepath, const bfbx_import_settings* settings);
Modified: branches/soc-2012-bratwurst/source/blender/windowmanager/intern/wm_operators.c
===================================================================
--- branches/soc-2012-bratwurst/source/blender/windowmanager/intern/wm_operators.c 2012-08-20 14:03:19 UTC (rev 50046)
+++ branches/soc-2012-bratwurst/source/blender/windowmanager/intern/wm_operators.c 2012-08-20 14:28:21 UTC (rev 50047)
@@ -2205,10 +2205,20 @@
RNA_string_get(op->ptr, "filepath", filename);
settings.reports = op->reports;
- settings.triangulate = 0;
- settings.nolines = 0;
- settings.enableAssimpLog = 1;
+ settings.enableAssimpLog = RNA_boolean_get(op->ptr, "enable_log");
+ settings.triangulate = RNA_boolean_get(op->ptr, "triangulate");
+ settings.nolines = !RNA_boolean_get(op->ptr, "read_lines");
+
+ settings.read_animations = RNA_boolean_get(op->ptr, "read_animations");
+ settings.read_armature = RNA_boolean_get(op->ptr, "read_armature");
+ settings.read_lights = RNA_boolean_get(op->ptr, "read_lights");
+ settings.read_cameras = RNA_boolean_get(op->ptr, "read_cameras");
+ settings.read_materials = RNA_boolean_get(op->ptr, "read_materials");
+
+ settings.unit_scaling = RNA_boolean_get(op->ptr, "scale_to_fit");
+ settings.maximum_size = RNA_float_get(op->ptr, "scale_to_fit_extents");
+
if (bassimp_import(C, filename, &settings)) {
return OPERATOR_FINISHED;
}
@@ -2217,6 +2227,46 @@
return OPERATOR_FINISHED;
}
+/* utility function used by WM_OT_assimp_import and WM_OT_fbx_import */
+static void def_assimp_rna_props(StructRNA* srna)
+{
+ RNA_def_boolean(srna, "enable_log", 1, "Import Logging",
+ "Show Open Asset Import Library's log in Blender");
+
+ RNA_def_boolean(srna, "triangulate", 0, "Triangulate",
+ "Run Open Asset Import Library's builtin triangulation");
+
+ RNA_def_boolean(srna, "scale_to_fit", 0, "Scale To Fit",
+ "Scale imported scene to fit into a cube of the given extents");
+
+ RNA_def_float(srna, "scale_to_fit_extents",
+ 1.0f,
+ 0.0f,
+ FLT_MAX,
+ "Maximum Extents",
+ "If Scale-To-Fit is checked, specifies the extents the scene will be fitted into",
+ 0.0f, 100.0f);
+
+ RNA_def_boolean(srna, "read_lines", 0, "Import Lines",
+ "Import single lines not connected to any polygons");
+
+ RNA_def_boolean(srna, "read_animations", 1, "Import Animations",
+ "Import animations");
+
+ RNA_def_boolean(srna, "read_cameras", 1, "Import Cameras",
+ "Import cameras and camera settings");
+
+ RNA_def_boolean(srna, "read_lights", 1, "Import Lights",
+ "Import light sources");
+
+ RNA_def_boolean(srna, "read_armature", 1, "Import Armature",
+ "Import armature and deform groups");
+
+ RNA_def_boolean(srna, "read_materials", 1, "Import Materials",
+ "Import materials and material assignments, if not checked a default material will be used");
+}
+
+
static void WM_OT_assimp_import(wmOperatorType *ot)
{
ot->name = "Import Open Asset Import Library (assimp)";
@@ -2228,6 +2278,7 @@
ot->poll = WM_operator_winactive;
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list