diff options
Diffstat (limited to 'source/blender/collada/EffectExporter.cpp')
-rw-r--r-- | source/blender/collada/EffectExporter.cpp | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/source/blender/collada/EffectExporter.cpp b/source/blender/collada/EffectExporter.cpp index 355e384d000..6863e26a3ce 100644 --- a/source/blender/collada/EffectExporter.cpp +++ b/source/blender/collada/EffectExporter.cpp @@ -37,6 +37,7 @@ #include "DNA_mesh_types.h" #include "DNA_texture_types.h" +#include "DNA_world_types.h" #include "BKE_customdata.h" @@ -55,7 +56,7 @@ static std::string getActiveUVLayerName(Object *ob) return ""; } -EffectsExporter::EffectsExporter(COLLADASW::StreamWriter *sw) : COLLADASW::LibraryEffects(sw){} +EffectsExporter::EffectsExporter(COLLADASW::StreamWriter *sw, const ExportSettings *export_settings) : COLLADASW::LibraryEffects(sw), export_settings(export_settings) {} bool EffectsExporter::hasEffects(Scene *sce) { @@ -78,12 +79,13 @@ bool EffectsExporter::hasEffects(Scene *sce) return false; } -void EffectsExporter::exportEffects(Scene *sce, bool export_selected) +void EffectsExporter::exportEffects(Scene *sce) { if(hasEffects(sce)) { + this->scene = sce; openLibrary(); MaterialFunctor mf; - mf.forEachMaterialInScene<EffectsExporter>(sce, *this, export_selected); + mf.forEachMaterialInScene<EffectsExporter>(sce, *this, this->export_settings->selected); closeLibrary(); } @@ -175,7 +177,12 @@ void EffectsExporter::operator()(Material *ma, Object *ob) ep.setDiffuse(cot, false , "diffuse"); // ambient - cot = getcol(ma->ambr, ma->ambg, ma->ambb, 1.0f); + /* ma->ambX is calculated only on render, so lets do it here manually and not rely on ma->ambX. */ + if(this->scene->world) + cot = getcol(this->scene->world->ambr*ma->amb, this->scene->world->ambg*ma->amb, this->scene->world->ambb*ma->amb, 1.0f); + else + cot = getcol(ma->amb, ma->amb, ma->amb, 1.0f); + ep.setAmbient(cot, false , "ambient"); // reflective, reflectivity |