Followup fix to T39966.
authorLukas Tönne <lukas.toenne@gmail.com>
Tue, 6 May 2014 15:44:43 +0000 (17:44 +0200)
committerLukas Tönne <lukas.toenne@gmail.com>
Tue, 6 May 2014 15:47:48 +0000 (17:47 +0200)
The previous fix was not quite correct:
* It would use the same wireframe/bbox check in viewport- and regular render
* The duplicator loop in Blender Internal is more permissive now to avoid disabling wireframe duplicators, but this means we need to check is_object_hidden right before making render objects to ensure this still works.

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

index dfd0531f16d4989d8b657bd00ac5c180ea938097..18c9434929fee4f7c2b9055a53bfaf40d3a3a901 100644 (file)
@@ -3924,10 +3924,15 @@ 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);
+       if (re->r.scemode & R_VIEWPORT_PREVIEW) {
+               /* 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);
+       }
+       else {
+               return false;
+       }
 }
 
 /* layflag: allows material group to ignore layerflag */
@@ -4795,6 +4800,9 @@ void RE_Database_Free(Render *re)
 
 static int allow_render_object(Render *re, Object *ob, int nolamps, int onlyselected, Object *actob)
 {
+       if (is_object_hidden(re, ob))
+               return 0;
+       
        /* override not showing object when duplis are used with particles */
        if (ob->transflag & OB_DUPLIPARTS) {
                /* pass */  /* let particle system(s) handle showing vs. not showing */