[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [35446] trunk/blender: request from Jedrzej Slewczuk's:

Campbell Barton ideasman42 at gmail.com
Thu Mar 10 06:52:16 CET 2011


Revision: 35446
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=35446
Author:   campbellbarton
Date:     2011-03-10 05:52:16 +0000 (Thu, 10 Mar 2011)
Log Message:
-----------
request from Jedrzej Slewczuk's:
 Option for tagging creases (Ctrl+RMB) to also re-unwrap the mesh.
 In 2.42 this could be done by setting rt==8 (very hidden), now its a little less hidden (in the toolbar).

Modified Paths:
--------------
    trunk/blender/release/scripts/ui/space_view3d_toolbar.py
    trunk/blender/source/blender/editors/include/ED_uvedit.h
    trunk/blender/source/blender/editors/mesh/editmesh_mods.c
    trunk/blender/source/blender/editors/uvedit/uvedit_unwrap_ops.c
    trunk/blender/source/blender/makesdna/DNA_scene_types.h
    trunk/blender/source/blender/makesrna/intern/rna_scene.c

Modified: trunk/blender/release/scripts/ui/space_view3d_toolbar.py
===================================================================
--- trunk/blender/release/scripts/ui/space_view3d_toolbar.py	2011-03-10 01:15:55 UTC (rev 35445)
+++ trunk/blender/release/scripts/ui/space_view3d_toolbar.py	2011-03-10 05:52:16 UTC (rev 35446)
@@ -177,8 +177,16 @@
             col = layout.column(align=True)
             col.prop(mesh, "use_mirror_x")
             col.prop(mesh, "use_mirror_topology")
-            col.prop(context.tool_settings, "edge_path_mode")
 
+            ts = context.tool_settings
+
+            col.label("Edge Select Mode")
+            col.prop(ts, "edge_path_mode", text="")
+
+            col = layout.column(align=True)
+            col.active = ts.edge_path_mode == 'SEAM'
+            col.prop(context.tool_settings, "edge_path_live_unwrap")
+
 # ********** default tools for editmode_curve ****************
 
 

Modified: trunk/blender/source/blender/editors/include/ED_uvedit.h
===================================================================
--- trunk/blender/source/blender/editors/include/ED_uvedit.h	2011-03-10 01:15:55 UTC (rev 35445)
+++ trunk/blender/source/blender/editors/include/ED_uvedit.h	2011-03-10 05:52:16 UTC (rev 35446)
@@ -66,11 +66,15 @@
 
 int ED_uvedit_nearest_uv(struct Scene *scene, struct Object *obedit, struct Image *ima, float co[2], float uv[2]);
 
-/* uvedit_unwrap.c */
+/* uvedit_unwrap_ops.c */
 void ED_uvedit_live_unwrap_begin(struct Scene *scene, struct Object *obedit);
 void ED_uvedit_live_unwrap_re_solve(void);
 void ED_uvedit_live_unwrap_end(short cancel);
 
+/* single call up unwrap using scene settings, used for edge tag unwrapping */
+void ED_unwrap_lscm(struct Scene *scene, struct Object *obedit, const short sel);
+
+/* uvedit_draw.c */
 void draw_uvedit_main(struct SpaceImage *sima, struct ARegion *ar, struct Scene *scene, struct Object *obedit);
 
 #endif /* ED_UVEDIT_H */

Modified: trunk/blender/source/blender/editors/mesh/editmesh_mods.c
===================================================================
--- trunk/blender/source/blender/editors/mesh/editmesh_mods.c	2011-03-10 01:15:55 UTC (rev 35445)
+++ trunk/blender/source/blender/editors/mesh/editmesh_mods.c	2011-03-10 05:52:16 UTC (rev 35446)
@@ -79,6 +79,7 @@
 #include "ED_mesh.h"
 #include "ED_screen.h"
 #include "ED_view3d.h"
+#include "ED_uvedit.h"
 
 #include "BIF_gl.h"
 
@@ -2201,7 +2202,15 @@
 				me->drawflag |= ME_DRAWBWEIGHTS;
 				break;
 		}
-		
+
+		/* live unwrap while tagging */
+		if(	(vc.scene->toolsettings->edge_mode_live_unwrap) &&
+			(vc.scene->toolsettings->edge_mode == EDGE_MODE_TAG_SEAM) &&
+			(CustomData_has_layer(&em->fdata, CD_MTFACE))
+		) {
+			ED_unwrap_lscm(vc.scene, vc.obedit, FALSE); /* unwrap all not just sel */
+		}
+
 		DAG_id_tag_update(vc.obedit->data, 0);
 		WM_event_add_notifier(C, NC_GEOM|ND_SELECT, vc.obedit->data);
 	}

Modified: trunk/blender/source/blender/editors/uvedit/uvedit_unwrap_ops.c
===================================================================
--- trunk/blender/source/blender/editors/uvedit/uvedit_unwrap_ops.c	2011-03-10 01:15:55 UTC (rev 35445)
+++ trunk/blender/source/blender/editors/uvedit/uvedit_unwrap_ops.c	2011-03-10 05:52:16 UTC (rev 35446)
@@ -812,41 +812,57 @@
 
 /* ******************** Unwrap operator **************** */
 
+/* assumes UV layer is checked, doesn't run update funcs */
+void ED_unwrap_lscm(Scene *scene, Object *obedit, const short sel)
+{
+	EditMesh *em= BKE_mesh_get_editmesh((Mesh*)obedit->data);
+
+	const short fill_holes= scene->toolsettings->uvcalc_flag & UVCALC_FILLHOLES;
+	const short correct_aspect= !(scene->toolsettings->uvcalc_flag & UVCALC_NO_ASPECT_CORRECT);
+
+	ParamHandle *handle= construct_param_handle(scene, em, 0, fill_holes, sel, correct_aspect);
+
+	param_lscm_begin(handle, PARAM_FALSE, scene->toolsettings->unwrapper == 0);
+	param_lscm_solve(handle);
+	param_lscm_end(handle);
+
+	param_pack(handle, scene->toolsettings->uvcalc_margin);
+
+	param_flush(handle);
+
+	param_delete(handle);
+
+	BKE_mesh_end_editmesh(obedit->data, em);
+}
+
 static int unwrap_exec(bContext *C, wmOperator *op)
 {
 	Scene *scene= CTX_data_scene(C);
 	Object *obedit= CTX_data_edit_object(C);
-	EditMesh *em= BKE_mesh_get_editmesh((Mesh*)obedit->data);
-	ParamHandle *handle;
 	int method = RNA_enum_get(op->ptr, "method");
 	int fill_holes = RNA_boolean_get(op->ptr, "fill_holes");
 	int correct_aspect = RNA_boolean_get(op->ptr, "correct_aspect");
 	
 	/* add uvs if they don't exist yet */
 	if(!ED_uvedit_ensure_uvs(C, scene, obedit)) {
-		BKE_mesh_end_editmesh(obedit->data, em);
 		return OPERATOR_CANCELLED;
 	}
 
 	/* remember last method for live unwrap */
 	scene->toolsettings->unwrapper = method;
 
-	handle= construct_param_handle(scene, em, 0, fill_holes, 1, correct_aspect);
+	if(fill_holes)		scene->toolsettings->uvcalc_flag |=  UVCALC_FILLHOLES;
+	else				scene->toolsettings->uvcalc_flag &= ~UVCALC_FILLHOLES;
 
-	param_lscm_begin(handle, PARAM_FALSE, method == 0);
-	param_lscm_solve(handle);
-	param_lscm_end(handle);
-	
-	param_pack(handle, scene->toolsettings->uvcalc_margin);
+	if(correct_aspect)	scene->toolsettings->uvcalc_flag &= ~UVCALC_NO_ASPECT_CORRECT;
+	else				scene->toolsettings->uvcalc_flag |=  UVCALC_NO_ASPECT_CORRECT;
 
-	param_flush(handle);
+	/* execute unwrap */
+	ED_unwrap_lscm(scene, obedit, FALSE);
 
-	param_delete(handle);
-
 	DAG_id_tag_update(obedit->data, 0);
 	WM_event_add_notifier(C, NC_GEOM|ND_DATA, obedit->data);
 
-	BKE_mesh_end_editmesh(obedit->data, em);
 	return OPERATOR_FINISHED;
 }
 

Modified: trunk/blender/source/blender/makesdna/DNA_scene_types.h
===================================================================
--- trunk/blender/source/blender/makesdna/DNA_scene_types.h	2011-03-10 01:15:55 UTC (rev 35445)
+++ trunk/blender/source/blender/makesdna/DNA_scene_types.h	2011-03-10 05:52:16 UTC (rev 35446)
@@ -726,9 +726,11 @@
 	
 	/* Alt+RMB option */
 	char edge_mode;
+	char edge_mode_live_unwrap;
 
 	/* Transform */
-	short snap_mode, snap_flag, snap_target;
+	char snap_mode;
+	short snap_flag, snap_target;
 	short proportional, prop_mode;
 	char proportional_objects; /* proportional edit, object mode */
 	char pad[3];
@@ -1176,7 +1178,7 @@
 
 /* toolsettings->uvcalc_flag */
 #define UVCALC_FILLHOLES			1
-/*#define UVCALC_NO_ASPECT_CORRECT	2*/	/* would call this UVCALC_ASPECT_CORRECT, except it should be default with old file */
+#define UVCALC_NO_ASPECT_CORRECT	2	/* would call this UVCALC_ASPECT_CORRECT, except it should be default with old file */
 #define UVCALC_TRANSFORM_CORRECT	4	/* adjust UV's while transforming to avoid distortion */
 
 /* toolsettings->uv_flag */

Modified: trunk/blender/source/blender/makesrna/intern/rna_scene.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_scene.c	2011-03-10 01:15:55 UTC (rev 35445)
+++ trunk/blender/source/blender/makesrna/intern/rna_scene.c	2011-03-10 05:52:16 UTC (rev 35446)
@@ -1206,6 +1206,10 @@
 	RNA_def_property_enum_items(prop, edge_tag_items);
 	RNA_def_property_ui_text(prop, "Edge Tag Mode", "The edge flag to tag when selecting the shortest path");
 
+	prop= RNA_def_property(srna, "edge_path_live_unwrap", PROP_BOOLEAN, PROP_NONE);
+	RNA_def_property_boolean_sdna(prop, NULL, "edge_mode_live_unwrap", 1);
+	RNA_def_property_ui_text(prop, "Live Unwrap", "Tagging edges re-calculates unwrap");
+
 	/* etch-a-ton */
 	prop= RNA_def_property(srna, "use_bone_sketching", PROP_BOOLEAN, PROP_NONE);
 	RNA_def_property_boolean_sdna(prop, NULL, "bone_sketching", BONE_SKETCHING);




More information about the Bf-blender-cvs mailing list