[Bf-blender-cvs] [d2d3b93] soc-2013-paint: Add evil warning when object does not have a UV map. It would be ideal to generate a UV map, but I think algorithms all require edit mode.

Antony Riakiotakis noreply at git.blender.org
Tue Apr 29 22:05:32 CEST 2014


Commit: d2d3b934a0f9ffecaa8b05ae55bf256ed9da35b8
Author: Antony Riakiotakis
Date:   Tue Apr 29 23:05:22 2014 +0300
https://developer.blender.org/rBd2d3b934a0f9ffecaa8b05ae55bf256ed9da35b8

Add evil warning when object does not have a UV map. It would be ideal
to generate a UV map, but I think algorithms all require edit mode.

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

M	source/blender/editors/sculpt_paint/paint_image.c
M	source/blender/editors/sculpt_paint/paint_image_proj.c
M	source/blender/editors/sculpt_paint/paint_intern.h

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

diff --git a/source/blender/editors/sculpt_paint/paint_image.c b/source/blender/editors/sculpt_paint/paint_image.c
index 0077c6f..ec036b8 100644
--- a/source/blender/editors/sculpt_paint/paint_image.c
+++ b/source/blender/editors/sculpt_paint/paint_image.c
@@ -745,8 +745,10 @@ static PaintOperation *texture_paint_init(bContext *C, wmOperator *op, const flo
 
 	/* initialize from context */
 	if (CTX_wm_region_view3d(C)) {
+		Object *ob = OBACT;
+		paint_proj_mesh_data_ensure(C, ob, op);
 		pop->mode = PAINT_MODE_3D_PROJECT;
-		pop->custom_paint = paint_proj_new_stroke(C, OBACT, mouse, mode);
+		pop->custom_paint = paint_proj_new_stroke(C, ob, mouse, mode);
 	}
 	else {
 		pop->mode = PAINT_MODE_2D;
@@ -1343,7 +1345,7 @@ static int texture_paint_toggle_poll(bContext *C)
 
 
 /* Make sure that active object has a material, and assign UVs and image layers (TODO) if they do not exist */
-void paint_proj_mesh_data_ensure(bContext *C, Object *ob)
+void paint_proj_mesh_data_ensure(bContext *C, Object *ob, wmOperator *op)
 {
 	Mesh *me;
 	int layernum;
@@ -1385,6 +1387,8 @@ void paint_proj_mesh_data_ensure(bContext *C, Object *ob)
 	layernum = CustomData_number_of_layers(&me->pdata, CD_MTEXPOLY);
 
 	if (layernum == 0) {
+		BKE_reportf(op->reports, RPT_WARNING, "Object did not have UV map. Recommend manual unwrap");
+
 		ED_mesh_uv_texture_add(me, "UVMap", true);
 	}
 
@@ -1436,7 +1440,7 @@ static int texture_paint_toggle_exec(bContext *C, wmOperator *op)
 		 * cache in case we are loading a file */
 		refresh_object_texpaint_images(ob, use_nodes);
 
-		paint_proj_mesh_data_ensure(C, ob);
+		paint_proj_mesh_data_ensure(C, ob, op);
 
 		ob->mode |= mode_flag;
 
diff --git a/source/blender/editors/sculpt_paint/paint_image_proj.c b/source/blender/editors/sculpt_paint/paint_image_proj.c
index 15a40c0..7b96692 100644
--- a/source/blender/editors/sculpt_paint/paint_image_proj.c
+++ b/source/blender/editors/sculpt_paint/paint_image_proj.c
@@ -4479,8 +4479,6 @@ void *paint_proj_new_stroke(bContext *C, Object *ob, const float mouse[2], int m
 {
 	ProjPaintState *ps = MEM_callocN(sizeof(ProjPaintState), "ProjectionPaintState");
 
-	paint_proj_mesh_data_ensure(C, ob);
-
 	project_state_init(C, ob, ps, mode);
 
 	if (ps->tool == PAINT_TOOL_CLONE && mode == BRUSH_STROKE_INVERT) {
@@ -4565,10 +4563,11 @@ static int texture_paint_camera_project_exec(bContext *C, wmOperator *op)
 	int orig_brush_size;
 	IDProperty *idgroup;
 	IDProperty *view_data = NULL;
+	Object *ob = OBACT;
 
-	paint_proj_mesh_data_ensure(C, OBACT);
+	paint_proj_mesh_data_ensure(C, ob, op);
 
-	project_state_init(C, OBACT, &ps, BRUSH_STROKE_NORMAL);
+	project_state_init(C, ob, &ps, BRUSH_STROKE_NORMAL);
 
 	if (ps.ob == NULL || ps.ob->type != OB_MESH) {
 		BKE_report(op->reports, RPT_ERROR, "No active mesh object");
diff --git a/source/blender/editors/sculpt_paint/paint_intern.h b/source/blender/editors/sculpt_paint/paint_intern.h
index 7af490e..f03f2c5 100644
--- a/source/blender/editors/sculpt_paint/paint_intern.h
+++ b/source/blender/editors/sculpt_paint/paint_intern.h
@@ -165,7 +165,7 @@ void *paint_proj_new_stroke(struct bContext *C, struct Object *ob, const float m
 void paint_proj_stroke(const struct bContext *C, void *ps, const float prevmval_i[2], const float mval_i[2], float pressure, float distance, float size);
 void paint_proj_redraw(const struct bContext *C, void *pps, bool final);
 void paint_proj_stroke_done(void *ps);
-void paint_proj_mesh_data_ensure(bContext *C, struct Object *ob);
+void paint_proj_mesh_data_ensure(bContext *C, struct Object *ob, struct wmOperator *op);
 bool proj_paint_add_slot(bContext *C, int type, struct Material *ma);
 
 void paint_brush_color_get(struct Brush *br, bool color_correction, bool invert, float distance, float pressure, float color[3], struct ColorManagedDisplay *display);




More information about the Bf-blender-cvs mailing list