[Bf-blender-cvs] [b2c2edf] master: Fix T39966: Whole Group option of dupligroup visualization of particles does not work as expected for Viewport and Blender Internal.

Lukas Tönne noreply at git.blender.org
Fri May 2 13:18:09 CEST 2014


Commit: b2c2edf6aeebd38601f1f6b652a91abd64983c4b
Author: Lukas Tönne
Date:   Fri May 2 13:08:15 2014 +0200
https://developer.blender.org/rBb2c2edf6aeebd38601f1f6b652a91abd64983c4b

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

===================================================================

M	source/blender/render/intern/source/convertblender.c

===================================================================

diff --git a/source/blender/render/intern/source/convertblender.c b/source/blender/render/intern/source/convertblender.c
index ac2c419..c798322 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) {




More information about the Bf-blender-cvs mailing list