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:
authorLukas Tönne <lukas.toenne@gmail.com>2014-05-02 15:08:15 +0400
committerLukas Tönne <lukas.toenne@gmail.com>2014-05-02 15:08:15 +0400
commitb2c2edf6aeebd38601f1f6b652a91abd64983c4b (patch)
tree9c16d351f36f2d9a7c6efe6f4d1ff6f3db3614e2
parentf65dcfc6d9ac241ab15c383558d14390127249b1 (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
-rw-r--r--source/blender/render/intern/source/convertblender.c17
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) {