From 8ef4c4762be16d9e2f4f3fc274009f294893cd2e Mon Sep 17 00:00:00 2001 From: Gaia Clary Date: Sat, 23 Jun 2012 22:03:31 +0000 Subject: Added option for exporting material based textures. Cleaned up header files due to a bug in osx --- source/blender/collada/EffectExporter.cpp | 5 +++-- source/blender/collada/EffectExporter.h | 2 +- source/blender/collada/ExportSettings.h | 1 + source/blender/collada/ImageExporter.cpp | 6 ++++-- source/blender/collada/ImageExporter.h | 4 ++-- source/blender/collada/collada.cpp | 6 ++++-- source/blender/collada/collada.h | 5 +++-- 7 files changed, 18 insertions(+), 11 deletions(-) (limited to 'source/blender/collada') diff --git a/source/blender/collada/EffectExporter.cpp b/source/blender/collada/EffectExporter.cpp index aee4f00b31c..f11ecc7f16d 100644 --- a/source/blender/collada/EffectExporter.cpp +++ b/source/blender/collada/EffectExporter.cpp @@ -173,7 +173,8 @@ void EffectsExporter::operator()(Material *ma, Object *ob) { // create a list of indices to textures of type TEX_IMAGE std::vector tex_indices; - createTextureIndices(ma, tex_indices); + if(this->export_settings->include_material_textures) + createTextureIndices(ma, tex_indices); openEffect(translate_id(id_name(ma)) + "-effect"); @@ -309,7 +310,7 @@ void EffectsExporter::operator()(Material *ma, Object *ob) std::set uv_textures; - if (ob->type == OB_MESH && ob->totcol) { + if (ob->type == OB_MESH && ob->totcol && this->export_settings->include_uv_textures) { Mesh *me = (Mesh *) ob->data; BKE_mesh_tessface_ensure(me); for (int i = 0; i < me->pdata.totlayer; i++) { diff --git a/source/blender/collada/EffectExporter.h b/source/blender/collada/EffectExporter.h index e20d6b7cd4b..d20cbfdfe0b 100644 --- a/source/blender/collada/EffectExporter.h +++ b/source/blender/collada/EffectExporter.h @@ -64,7 +64,7 @@ private: void writeBlinn(COLLADASW::EffectProfile &ep, Material *ma); void writeLambert(COLLADASW::EffectProfile &ep, Material *ma); void writePhong(COLLADASW::EffectProfile &ep, Material *ma); - void EffectsExporter::writeTextures(COLLADASW::EffectProfile &ep, + void writeTextures(COLLADASW::EffectProfile &ep, std::string &key, COLLADASW::Sampler *sampler, MTex *t, Image *ima, diff --git a/source/blender/collada/ExportSettings.h b/source/blender/collada/ExportSettings.h index 73f78ebd040..2504c276036 100644 --- a/source/blender/collada/ExportSettings.h +++ b/source/blender/collada/ExportSettings.h @@ -41,6 +41,7 @@ public: bool active_uv_only; bool include_uv_textures; + bool include_material_textures; bool use_texture_copies; bool use_object_instantiation; diff --git a/source/blender/collada/ImageExporter.cpp b/source/blender/collada/ImageExporter.cpp index d7bcfa8eed1..fbe7111bb58 100644 --- a/source/blender/collada/ImageExporter.cpp +++ b/source/blender/collada/ImageExporter.cpp @@ -98,7 +98,7 @@ void ImagesExporter::export_UV_Image(Image *image, bool use_copies) // So we have to export it. The export will keep the image state intact, // so the exported file will not be associated with the image. - if (BKE_imbuf_write_as(imbuf, export_path, &imageFormat, true) != 0) { + if (BKE_imbuf_write_as(imbuf, export_path, &imageFormat, true) == 0) { fprintf(stderr, "Collada export: Cannot export image to:\n%s\n", export_path); } BLI_strncpy(export_path, export_file, sizeof(export_path)); @@ -215,7 +215,9 @@ void ImagesExporter::exportImages(Scene *sce) openLibrary(); MaterialFunctor mf; - mf.forEachMaterialInExportSet(sce, *this, this->export_settings->export_set); + if (this->export_settings->include_material_textures) { + mf.forEachMaterialInExportSet(sce, *this, this->export_settings->export_set); + } if (this->export_settings->include_uv_textures) { export_UV_Images(); diff --git a/source/blender/collada/ImageExporter.h b/source/blender/collada/ImageExporter.h index c617676cf20..0eaebdd5cdd 100644 --- a/source/blender/collada/ImageExporter.h +++ b/source/blender/collada/ImageExporter.h @@ -51,8 +51,8 @@ public: private: std::vector mImages; // contains list of written images, to avoid duplicates - void ImagesExporter::export_UV_Images(); - void ImagesExporter::export_UV_Image(Image *image, bool use_texture_copies); + void export_UV_Images(); + void export_UV_Image(Image *image, bool use_texture_copies); bool hasImages(Scene *sce); const ExportSettings *export_settings; }; diff --git a/source/blender/collada/collada.cpp b/source/blender/collada/collada.cpp index 17be0c46cd3..f7e0f75ec5c 100644 --- a/source/blender/collada/collada.cpp +++ b/source/blender/collada/collada.cpp @@ -63,6 +63,7 @@ int collada_export(Scene *sce, int active_uv_only, int include_uv_textures, + int include_material_textures, int use_texture_copies, int use_object_instantiation, @@ -90,8 +91,9 @@ int collada_export(Scene *sce, export_settings.deform_bones_only = deform_bones_only != 0; export_settings.active_uv_only = active_uv_only != 0; - export_settings.include_uv_textures = include_uv_textures; - export_settings.use_texture_copies = use_texture_copies; + export_settings.include_uv_textures = include_uv_textures != 0; + export_settings.include_material_textures= include_material_textures != 0; + export_settings.use_texture_copies = use_texture_copies != 0; export_settings.use_object_instantiation = use_object_instantiation != 0; export_settings.sort_by_name = sort_by_name != 0; diff --git a/source/blender/collada/collada.h b/source/blender/collada/collada.h index d136914e484..13f8151da3d 100644 --- a/source/blender/collada/collada.h +++ b/source/blender/collada/collada.h @@ -57,8 +57,9 @@ int collada_export(Scene *sce, int include_armatures, int deform_bones_only, - int active_uv, - int include_textures, + int active_uv_only, + int include_uv_textures, + int include_material_textures, int use_texture_copies, int use_object_instantiation, -- cgit v1.2.3