[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [19166] branches/soc-2008-mxcurioni/source /blender/freestyle/intern/scene_graph/BlenderFileLoader.cpp: Fixed an issue regarding render layers.

Tamito Kajiyama rd6t-kjym at asahi-net.or.jp
Mon Mar 2 04:31:19 CET 2009


Revision: 19166
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=19166
Author:   kjym3
Date:     2009-03-02 04:30:59 +0100 (Mon, 02 Mar 2009)

Log Message:
-----------
Fixed an issue regarding render layers.  Now the Freestyle renderer builds a view map based on selected object layers in a render layer, instead of the global selection of object layers.  This allows, for example, to have two render layers, one for rendering solid faces in all object layers, and the other for rendering outlines of objects in selected object layers by Freestyle.  At the moment, the number of Freestyle-enabled render layers is restricted to one -- a better fix is in the future work.

Modified Paths:
--------------
    branches/soc-2008-mxcurioni/source/blender/freestyle/intern/scene_graph/BlenderFileLoader.cpp

Modified: branches/soc-2008-mxcurioni/source/blender/freestyle/intern/scene_graph/BlenderFileLoader.cpp
===================================================================
--- branches/soc-2008-mxcurioni/source/blender/freestyle/intern/scene_graph/BlenderFileLoader.cpp	2009-03-02 02:21:18 UTC (rev 19165)
+++ branches/soc-2008-mxcurioni/source/blender/freestyle/intern/scene_graph/BlenderFileLoader.cpp	2009-03-02 03:30:59 UTC (rev 19166)
@@ -19,12 +19,30 @@
 	ObjectRen *obr;
 
 	cout << "\n===  Importing triangular meshes into Blender  ===" << endl;
+	
+	SceneRenderLayer *srl, *active_srl = NULL;
+	int count = 0;
+	for(srl= (SceneRenderLayer *)_re->scene->r.layers.first; srl; srl= srl->next) {
+		if(srl->layflag & SCE_LAY_FRS) {
+			if (!active_srl) active_srl = srl;
+			count++;
+		}
+	}
+	if (count > 1) {
+		cout << "Warning: Freestyle is enabled in the following " << count << " scene render layers:" << endl;
+		for(srl= (SceneRenderLayer *)_re->scene->r.layers.first; srl; srl= srl->next)
+			if(srl->layflag & SCE_LAY_FRS)
+				cout << "  \"" << srl->name << "\"" << ((active_srl == srl) ? " (only this is taken into account)" : "") << endl;
+	}
 
   // creation of the scene root node
   _Scene = new NodeGroup;
 
 	int id = 0;
 	for(obi= (ObjectInstanceRen *) _re->instancetable.first; obi; obi=obi->next) {
+		if (!(obi->lay & _re->scene->lay & active_srl->lay))
+			continue;
+
 		obr= obi->obr;
 		
 		if( obr->totvlak > 0)





More information about the Bf-blender-cvs mailing list