[Bf-blender-cvs] [f1fe753] bake-cycles: Cycles-Bake: bugfix for when no material is present

Dalai Felinto noreply at git.blender.org
Fri Apr 25 19:12:01 CEST 2014


Commit: f1fe75372ca0e5b9a232464f7fd578a1a7d78675
Author: Dalai Felinto
Date:   Fri Apr 25 14:11:47 2014 -0300
https://developer.blender.org/rBf1fe75372ca0e5b9a232464f7fd578a1a7d78675

Cycles-Bake: bugfix for when no material is present

reported by Thomas Dinges in https://developer.blender.org/D421

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

M	source/blender/editors/object/object_bake_api.c

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

diff --git a/source/blender/editors/object/object_bake_api.c b/source/blender/editors/object/object_bake_api.c
index 7fbac0b..54eb267 100644
--- a/source/blender/editors/object/object_bake_api.c
+++ b/source/blender/editors/object/object_bake_api.c
@@ -237,15 +237,15 @@ static int get_save_internal_status(wmOperator *op, Object *ob, BakeImage *image
 		if (!image) {
 			if (ob->mat[i]) {
 				BKE_reportf(op->reports, RPT_ERROR,
-				            "No valid image in material %d (%s)", i, ob->mat[i]->id.name + 2);
+				            "No active image found in material %d (%s)", i, ob->mat[i]->id.name + 2);
 			}
 			else if (((Mesh *) ob->data)->mat[i]) {
 				BKE_reportf(op->reports, RPT_ERROR,
-				            "No valid image in material %d (%s)", i, ((Mesh *) ob->data)->mat[i]->id.name + 2);
+				            "No active image found in material %d (%s)", i, ((Mesh *) ob->data)->mat[i]->id.name + 2);
 			}
 			else {
 				BKE_reportf(op->reports, RPT_ERROR,
-				            "No valid image in material %d", i);
+				            "No active image found in material %d", i);
 			}
 
 			return -1;
@@ -333,15 +333,32 @@ static int bake_exec(bContext *C, wmOperator *op)
 	RNA_string_get(op->ptr, "cage", custom_cage);
 	RNA_string_get(op->ptr, "filepath", filepath);
 
-	tot_images = ob_low->totcol;
 	is_tangent = pass_type == SCE_PASS_NORMAL && normal_space == R_BAKE_SPACE_TANGENT;
+	tot_images = ob_low->totcol;
+
+	if (tot_images == 0) {
+		if (is_save_internal) {
+			BKE_report(op->reports, RPT_ERROR,
+					   "No active image found. Add a material or bake to an external file");
+			goto cleanup;
+		}
+		else if (is_split_materials) {
+			BKE_report(op->reports, RPT_ERROR,
+					   "No active image found. Add a material or bake without the Split Materials option");
+			goto cleanup;
+		}
+		else {
+			/* baking externally without splitting materials */
+			tot_images = 1;
+		}
+	}
 
 	images = MEM_callocN(sizeof(BakeImage) * tot_images, "bake images dimensions (width, height, offset)");
 
 	if (is_save_internal) {
 		num_pixels = get_save_internal_status(op, ob_low, images);
 
-		if (num_pixels < 0) {
+		if (num_pixels <= 0) {
 			goto cleanup;
 		}
 		else if (is_clear) {




More information about the Bf-blender-cvs mailing list