Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTamito Kajiyama <rd6t-kjym@asahi-net.or.jp>2009-03-02 06:30:59 +0300
committerTamito Kajiyama <rd6t-kjym@asahi-net.or.jp>2009-03-02 06:30:59 +0300
commitcd202bc3b64337d2d8230234836565b91caf0e56 (patch)
tree49d9cf6947c8d26d0ad737d7d3b9556599e21465 /source/blender
parent20496ca64450bff0e7fa090e6a14b90f11c33cd5 (diff)
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.
Diffstat (limited to 'source/blender')
-rw-r--r--source/blender/freestyle/intern/scene_graph/BlenderFileLoader.cpp18
1 files changed, 18 insertions, 0 deletions
diff --git a/source/blender/freestyle/intern/scene_graph/BlenderFileLoader.cpp b/source/blender/freestyle/intern/scene_graph/BlenderFileLoader.cpp
index 33a05b4389d..d1713254ce7 100644
--- a/source/blender/freestyle/intern/scene_graph/BlenderFileLoader.cpp
+++ b/source/blender/freestyle/intern/scene_graph/BlenderFileLoader.cpp
@@ -19,12 +19,30 @@ NodeGroup* BlenderFileLoader::Load()
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)