[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [24908] trunk/blender/source/blender/ render/intern/source/convertblender.c: Fix for [#20023] Renderer aborts in some cases when rendering only meta-objects with volume materials .

Matt Ebb matt at mke3.net
Thu Nov 26 06:01:31 CET 2009


Revision: 24908
          http://projects.blender.org/plugins/scmsvn/viewcvs.php?view=rev&root=bf-blender&revision=24908
Author:   broken
Date:     2009-11-26 06:01:28 +0100 (Thu, 26 Nov 2009)

Log Message:
-----------
Fix for [#20023] Renderer aborts in some cases when rendering only meta-objects with volume materials.

When metaballs were added to the render, if they weren't the basis ball, they'd be skipped, leaving a render object with no geometry. Now it doesn't add an object in the first place.

Modified Paths:
--------------
    trunk/blender/source/blender/render/intern/source/convertblender.c

Modified: trunk/blender/source/blender/render/intern/source/convertblender.c
===================================================================
--- trunk/blender/source/blender/render/intern/source/convertblender.c	2009-11-26 03:43:39 UTC (rev 24907)
+++ trunk/blender/source/blender/render/intern/source/convertblender.c	2009-11-26 05:01:28 UTC (rev 24908)
@@ -4492,7 +4492,7 @@
 	}
 }
 
-static int allow_render_object(Object *ob, int nolamps, int onlyselected, Object *actob)
+static int allow_render_object(Render *re, Object *ob, int nolamps, int onlyselected, Object *actob)
 {
 	/* override not showing object when duplis are used with particles */
 	if(ob->transflag & OB_DUPLIPARTS)
@@ -4500,6 +4500,10 @@
 	else if((ob->transflag & OB_DUPLI) && !(ob->transflag & OB_DUPLIFRAMES))
 		return 0;
 	
+	/* don't add non-basic meta objects, ends up having renderobjects with no geometry */
+	//if (ob!=find_basis_mball(re->scene, ob))
+	//	return 0;
+	
 	if(nolamps && (ob->type==OB_LAMP))
 		return 0;
 	
@@ -4605,7 +4609,7 @@
 
 		if(ob->flag & OB_DONE) {
 			if(ob->transflag & OB_RENDER_DUPLI) {
-				if(allow_render_object(ob, nolamps, onlyselected, actob)) {
+				if(allow_render_object(re, ob, nolamps, onlyselected, actob)) {
 					init_render_object(re, ob, NULL, 0, timeoffset, vectorlay);
 					ob->transflag &= ~OB_RENDER_DUPLI;
 
@@ -4659,7 +4663,7 @@
 			/* OB_RENDER_DUPLI means instances for it were already created, now
 			 * it still needs to create the ObjectRen containing the data */
 			if(ob->transflag & OB_RENDER_DUPLI) {
-				if(allow_render_object(ob, nolamps, onlyselected, actob)) {
+				if(allow_render_object(re, ob, nolamps, onlyselected, actob)) {
 					init_render_object(re, ob, NULL, 0, timeoffset, vectorlay);
 					ob->transflag &= ~OB_RENDER_DUPLI;
 				}
@@ -4693,7 +4697,7 @@
 					if(obd->type==OB_MBALL)
 						continue;
 
-					if(!allow_render_object(obd, nolamps, onlyselected, actob))
+					if(!allow_render_object(re, obd, nolamps, onlyselected, actob))
 						continue;
 
 					if(allow_render_dupli_instance(re, dob, obd)) {
@@ -4763,10 +4767,10 @@
 				}
 				free_object_duplilist(lb);
 
-				if(allow_render_object(ob, nolamps, onlyselected, actob))
+				if(allow_render_object(re, ob, nolamps, onlyselected, actob))
 					init_render_object(re, ob, NULL, 0, timeoffset, vectorlay);
 			}
-			else if(allow_render_object(ob, nolamps, onlyselected, actob))
+			else if(allow_render_object(re, ob, nolamps, onlyselected, actob))
 				init_render_object(re, ob, NULL, 0, timeoffset, vectorlay);
 		}
 





More information about the Bf-blender-cvs mailing list