diff options
author | Tamito Kajiyama <rd6t-kjym@asahi-net.or.jp> | 2009-03-02 06:30:59 +0300 |
---|---|---|
committer | Tamito Kajiyama <rd6t-kjym@asahi-net.or.jp> | 2009-03-02 06:30:59 +0300 |
commit | cd202bc3b64337d2d8230234836565b91caf0e56 (patch) | |
tree | 49d9cf6947c8d26d0ad737d7d3b9556599e21465 /source/blender/freestyle/intern/scene_graph | |
parent | 20496ca64450bff0e7fa090e6a14b90f11c33cd5 (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/freestyle/intern/scene_graph')
-rw-r--r-- | source/blender/freestyle/intern/scene_graph/BlenderFileLoader.cpp | 18 |
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) |