diff --git a/source/blender/renderconverter/intern/convertBlenderScene.c b/source/blender/renderconverter/intern/convertBlenderScene.c index 01a0f24dde2..ac988e850e5 100644 --- a/source/blender/renderconverter/intern/convertBlenderScene.c +++ b/source/blender/renderconverter/intern/convertBlenderScene.c @@ -2966,14 +2966,14 @@ void RE_rotateBlenderScene(void) yafray only needs to know about one, the rest can be instanciated. The dupliMtx list is used for this purpose */ if (R.r.renderer==R_YAFRAY) { - /* Special case, parent object dupli's: ignore lattices */ + /* Special case, parent object dupli's: ignore lattices & empty's */ if (ob->parent) { - if ((ob->parent->type!=OB_LATTICE) && (YAF_objectKnownData(ob))) + if ((ob->parent->type!=OB_EMPTY) && (ob->parent->type!=OB_LATTICE) && YAF_objectKnownData(ob)) printf("From parent: Added dupli matrix for linked data object %s\n", ob->id.name); else init_render_object(ob); } - else if ((ob->type!=OB_EMPTY) && (ob->type!=OB_LAMP) && (YAF_objectKnownData(ob))) + else if ((ob->type!=OB_EMPTY) && (ob->type!=OB_LAMP) && YAF_objectKnownData(ob)) printf("Added dupli matrix for linked data object %s\n", ob->id.name); else init_render_object(ob); diff --git a/source/blender/yafray/intern/export_File.cpp b/source/blender/yafray/intern/export_File.cpp index 61d15bff0c9..22f8f1f042a 100755 --- a/source/blender/yafray/intern/export_File.cpp +++ b/source/blender/yafray/intern/export_File.cpp @@ -1052,11 +1052,10 @@ void yafrayFileRender_t::writeAreaLamp(LampRen* lamp, int num, float iview[4][4] // if no GI used, the GIphotons flag can still be set, so only use when 'full' selected if ((R.r.GImethod==2) && (R.r.GIphotons)) { md="on"; power*=R.r.GIpower; } ostr << "ray_totsamp; - if (sm>=25) psm = sm/5; - ostr << "samples=\"" << sm << "\" psamples=\"" << psm << "\" "; - } + // samples not used for GI with photons, can still be exported, is ignored + int psm=0, sm = lamp->ray_totsamp; + if (sm>=25) psm = sm/5; + ostr << "samples=\"" << sm << "\" psamples=\"" << psm << "\" "; ostr << ">\n"; // transform area lamp coords back to world @@ -1138,7 +1137,15 @@ void yafrayFileRender_t::writeLamps() //decay = 1; } } - ostr << "\" power=\"" << pwr << "\""; + + if (is_sphereL) { + // 'dummy' mode for spherelight when used with gpm + string md = "off"; + // if no GI used, the GIphotons flag can still be set, so only use when 'full' selected + if ((R.r.GImethod==2) && (R.r.GIphotons)) { md="on"; pwr*=R.r.GIpower; } + ostr << "\" power=\"" << pwr << "\" dummy=\"" << md << "\""; + } + else ostr << "\" power=\"" << pwr << "\""; // cast_shadows flag not used with softlight, spherelight or photonlight if ((!is_softL) && (!is_sphereL) && (lamp->type!=LA_YF_PHOTON)) { @@ -1297,7 +1304,7 @@ void yafrayFileRender_t::writeHemilight() void yafrayFileRender_t::writePathlight() { ostr.str(""); - if(R.r.GIphotons) + if (R.r.GIphotons) { ostr << "2) ? (R.r.GIdepth-1) : 1) @@ -1305,7 +1312,7 @@ void yafrayFileRender_t::writePathlight() ostr << ""<ray_totsamp; - if (sm>=25) psm = sm/5; - params["samples"]=yafray::parameter_t(sm); - params["psamples"]=yafray::parameter_t(psm); - } + // samples not used for GI with photons, can still be exported, is ignored + int psm=0, sm = lamp->ray_totsamp; + if (sm>=25) psm = sm/5; + params["samples"]=yafray::parameter_t(sm); + params["psamples"]=yafray::parameter_t(psm); // transform area lamp coords back to world float lpco[4][3]; @@ -1147,7 +1145,16 @@ void yafrayPluginRender_t::writeLamps() //decay = 1; } } - params["power"] = yafray::parameter_t(pwr); + + if (is_sphereL) { + // 'dummy' mode for spherelight when used with gpm + string md = "off"; + // if no GI used, the GIphotons flag can still be set, so only use when 'full' selected + if ((R.r.GImethod==2) && (R.r.GIphotons)) { md="on"; pwr*=R.r.GIpower; } + params["power"] = yafray::parameter_t(pwr); + params["dummy"] = yafray::parameter_t(md); + } + else params["power"] = yafray::parameter_t(pwr); // cast_shadows flag not used with softlight, spherelight or photonlight if ((!is_softL) && (!is_sphereL) && (lamp->type!=LA_YF_PHOTON)) { @@ -1299,7 +1306,7 @@ void yafrayPluginRender_t::writeHemilight() void yafrayPluginRender_t::writePathlight() { - if(R.r.GIphotons) + if (R.r.GIphotons) { yafray::paramMap_t params; params["type"]=yafray::parameter_t("globalphotonlight");