diff options
author | Thomas Dinges <blender@dingto.org> | 2013-06-16 16:05:39 +0400 |
---|---|---|
committer | Thomas Dinges <blender@dingto.org> | 2013-06-16 16:05:39 +0400 |
commit | 04295954408db25e749a897a7db2972049005688 (patch) | |
tree | 1db66e453f0599289762474e591fd2569ae0591f /intern/cycles/blender | |
parent | 9e16c5a9e429e0d00801a4dd6ee71a8fbf6691f0 (diff) | |
parent | 29be97975876a1f298f4e6dab14c75aa9956f96a (diff) |
Merged revision(s) 57423-57498 from trunk/blender into soc-2013-dingto
Diffstat (limited to 'intern/cycles/blender')
-rw-r--r-- | intern/cycles/blender/blender_object.cpp | 13 |
1 files changed, 9 insertions, 4 deletions
diff --git a/intern/cycles/blender/blender_object.cpp b/intern/cycles/blender/blender_object.cpp index 75f0c48a8a2..4a72341cd8c 100644 --- a/intern/cycles/blender/blender_object.cpp +++ b/intern/cycles/blender/blender_object.cpp @@ -209,7 +209,8 @@ Object *BlenderSync::sync_object(BL::Object b_parent, int persistent_id[OBJECT_P /* light is handled separately */ if(object_is_light(b_ob)) { - if(!motion) + /* don't use lamps for excluded layers used as mask layer */ + if(!motion && !((layer_flag & render_layer.holdout_layer) && (layer_flag & render_layer.exclude_layer))) sync_light(b_parent, persistent_id, b_ob, tfm); return NULL; @@ -317,8 +318,12 @@ Object *BlenderSync::sync_object(BL::Object b_parent, int persistent_id[OBJECT_P return object; } -static bool object_render_hide_original(BL::Object::dupli_type_enum dupli_type) +static bool object_render_hide_original(BL::Object::type_enum ob_type, BL::Object::dupli_type_enum dupli_type) { + /* metaball exception, they duplicate self */ + if(ob_type == BL::Object::type_META) + return false; + return (dupli_type == BL::Object::dupli_type_VERTS || dupli_type == BL::Object::dupli_type_FACES || dupli_type == BL::Object::dupli_type_FRAMES); @@ -351,7 +356,7 @@ static bool object_render_hide(BL::Object b_ob, bool top_level, bool parent_hide /* hide original object for duplis */ BL::Object parent = b_ob.parent(); - if(parent && object_render_hide_original(parent.dupli_type())) + if(parent && object_render_hide_original(b_ob.type(), parent.dupli_type())) if(parent_hide) hide = true; @@ -363,7 +368,7 @@ static bool object_render_hide_duplis(BL::Object b_ob) { BL::Object parent = b_ob.parent(); - return (parent && object_render_hide_original(parent.dupli_type())); + return (parent && object_render_hide_original(b_ob.type(), parent.dupli_type())); } /* Object Loop */ |