[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [43971] trunk/blender/intern/cycles/ blender: Fix #30061: cycles single render layer through python operator parameter not

Brecht Van Lommel brechtvanlommel at pandora.be
Tue Feb 7 21:51:44 CET 2012


Revision: 43971
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=43971
Author:   blendix
Date:     2012-02-07 20:51:33 +0000 (Tue, 07 Feb 2012)
Log Message:
-----------
Fix #30061: cycles single render layer through python operator parameter not
working.

Modified Paths:
--------------
    trunk/blender/intern/cycles/blender/blender_session.cpp
    trunk/blender/intern/cycles/blender/blender_sync.cpp
    trunk/blender/intern/cycles/blender/blender_sync.h

Modified: trunk/blender/intern/cycles/blender/blender_session.cpp
===================================================================
--- trunk/blender/intern/cycles/blender/blender_session.cpp	2012-02-07 20:39:51 UTC (rev 43970)
+++ trunk/blender/intern/cycles/blender/blender_session.cpp	2012-02-07 20:51:33 UTC (rev 43971)
@@ -191,14 +191,8 @@
 	BL::RenderResult::layers_iterator b_iter;
 	BL::RenderLayers b_rr_layers(r.ptr);
 	
-	int active = 0;
-
 	/* render each layer */
-	for(b_rr.layers.begin(b_iter); b_iter != b_rr.layers.end(); ++b_iter, ++active) {
-		/* single layer render */
-		if(r.use_single_layer())
-			active = b_rr_layers.active_index();
-
+	for(b_rr.layers.begin(b_iter); b_iter != b_rr.layers.end(); ++b_iter) {
 		/* set layer */
 		b_rlay = *b_iter;
 
@@ -226,7 +220,7 @@
 		session->reset(buffer_params, session_params.samples);
 
 		/* update scene */
-		sync->sync_data(b_v3d, active);
+		sync->sync_data(b_v3d, b_iter->name().c_str());
 
 		/* render */
 		session->start();

Modified: trunk/blender/intern/cycles/blender/blender_sync.cpp
===================================================================
--- trunk/blender/intern/cycles/blender/blender_sync.cpp	2012-02-07 20:39:51 UTC (rev 43970)
+++ trunk/blender/intern/cycles/blender/blender_sync.cpp	2012-02-07 20:51:33 UTC (rev 43971)
@@ -122,7 +122,7 @@
 	return recalc;
 }
 
-void BlenderSync::sync_data(BL::SpaceView3D b_v3d, int layer)
+void BlenderSync::sync_data(BL::SpaceView3D b_v3d, const char *layer)
 {
 	sync_render_layers(b_v3d);
 	sync_integrator(layer);
@@ -133,7 +133,7 @@
 
 /* Integrator */
 
-void BlenderSync::sync_integrator(int layer)
+void BlenderSync::sync_integrator(const char *layer)
 {
 	PointerRNA cscene = RNA_pointer_get(&b_scene.ptr, "cycles");
 
@@ -155,8 +155,21 @@
 
 	integrator->no_caustics = get_boolean(cscene, "no_caustics");
 	integrator->seed = get_int(cscene, "seed");
-	integrator->layer_flag = render_layers[layer].layer;
 
+	/* render layer */
+	int active_layer = 0;
+
+	if(layer) {
+		for(int i = 0; i < render_layers.size(); i++) {
+			if(render_layers[i].name == layer) {
+				active_layer = i;
+				break;
+			}
+		}
+	}
+
+	integrator->layer_flag = render_layers[active_layer].layer;
+
 	if(integrator->modified(previntegrator))
 		integrator->tag_update(scene);
 }
@@ -208,6 +221,7 @@
 			/* single layer for now */
 			RenderLayerInfo rlay;
 
+			rlay.name = b_rlay->name();
 			rlay.scene_layer = get_layer(b_scene.layers());
 			rlay.layer = get_layer(b_rlay->layers());
 			rlay.material_override = b_rlay->material_override();

Modified: trunk/blender/intern/cycles/blender/blender_sync.h
===================================================================
--- trunk/blender/intern/cycles/blender/blender_sync.h	2012-02-07 20:39:51 UTC (rev 43970)
+++ trunk/blender/intern/cycles/blender/blender_sync.h	2012-02-07 20:51:33 UTC (rev 43971)
@@ -54,7 +54,7 @@
 
 	/* sync */
 	bool sync_recalc();
-	void sync_data(BL::SpaceView3D b_v3d, int layer = 0);
+	void sync_data(BL::SpaceView3D b_v3d, const char *layer = 0);
 	void sync_camera(int width, int height);
 	void sync_view(BL::SpaceView3D b_v3d, BL::RegionView3D b_rv3d, int width, int height);
 
@@ -70,7 +70,7 @@
 	void sync_materials();
 	void sync_objects(BL::SpaceView3D b_v3d);
 	void sync_film();
-	void sync_integrator(int layer);
+	void sync_integrator(const char *layer);
 	void sync_view();
 	void sync_world();
 	void sync_render_layers(BL::SpaceView3D b_v3d);
@@ -110,6 +110,7 @@
 		  material_override(PointerRNA_NULL)
 		{}
 
+		string name;
 		uint scene_layer;
 		uint layer;
 		BL::Material material_override;




More information about the Bf-blender-cvs mailing list