diff options
author | Lukas Tönne <lukas.toenne@gmail.com> | 2014-05-02 15:08:15 +0400 |
---|---|---|
committer | Lukas Tönne <lukas.toenne@gmail.com> | 2014-05-02 15:08:15 +0400 |
commit | b2c2edf6aeebd38601f1f6b652a91abd64983c4b (patch) | |
tree | 9c16d351f36f2d9a7c6efe6f4d1ff6f3db3614e2 /source/blender/render | |
parent | f65dcfc6d9ac241ab15c383558d14390127249b1 (diff) |
Fix T39966: Whole Group option of dupligroup visualization of particles
does not work as expected for Viewport and Blender Internal.
As @sergey noticed, this was caused by rBfbf8595, which disabled
rendering for wireframe objects in the viewport. However, the same
function `is_object_hidden` is also used for skipping dupli objects then
which may themselves be renderable.
Now use two variants:
* is_object_restricted is the previous test for general viewport/render visibility (lets wireframe duplicators pass)
* is_object_hidden includes the wireframe check for actual render instances
Diffstat (limited to 'source/blender/render')
-rw-r--r-- | source/blender/render/intern/source/convertblender.c | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/source/blender/render/intern/source/convertblender.c b/source/blender/render/intern/source/convertblender.c index ac2c419bc6a..c7983222ba2 100644 --- a/source/blender/render/intern/source/convertblender.c +++ b/source/blender/render/intern/source/convertblender.c @@ -3911,14 +3911,25 @@ static GroupObject *add_render_lamp(Render *re, Object *ob) return go; } -static bool is_object_hidden(Render *re, Object *ob) +static bool is_object_restricted(Render *re, Object *ob) { if (re->r.scemode & R_VIEWPORT_PREVIEW) - return (ob->restrictflag & OB_RESTRICT_VIEW) != 0 || ELEM(ob->dt, OB_BOUNDBOX, OB_WIRE); + return (ob->restrictflag & OB_RESTRICT_VIEW) != 0; else return (ob->restrictflag & OB_RESTRICT_RENDER) != 0; } +static bool is_object_hidden(Render *re, Object *ob) +{ + if (is_object_restricted(re, ob)) + return true; + + /* Mesh deform cages and so on mess up the preview. To avoid the problem, + * viewport doesn't show mesh object if its draw type is bounding box or wireframe. + */ + return ELEM(ob->dt, OB_BOUNDBOX, OB_WIRE); +} + /* layflag: allows material group to ignore layerflag */ static void add_lightgroup(Render *re, Group *group, int exclusive) { @@ -4957,7 +4968,7 @@ static void database_init_objects(Render *re, unsigned int renderlay, int nolamp lay= (timeoffset)? renderlay & vectorlay: renderlay; /* if the object has been restricted from rendering in the outliner, ignore it */ - if (is_object_hidden(re, ob)) continue; + if (is_object_restricted(re, ob)) continue; /* OB_DONE means the object itself got duplicated, so was already converted */ if (ob->flag & OB_DONE) { |