[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [38107] branches/soc-2011-avocado/blender/ source/blender/editors: Initial integration of stretch minimization functionality.

shuvro sarker shuvro05 at gmail.com
Tue Jul 5 05:31:23 CEST 2011


Revision: 38107
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=38107
Author:   shuvro
Date:     2011-07-05 03:31:20 +0000 (Tue, 05 Jul 2011)
Log Message:
-----------
Initial integration of stretch minimization functionality.

Modified Paths:
--------------
    branches/soc-2011-avocado/blender/source/blender/editors/include/ED_uvedit.h
    branches/soc-2011-avocado/blender/source/blender/editors/mesh/autoseam_tools.c
    branches/soc-2011-avocado/blender/source/blender/editors/uvedit/uvedit_unwrap_ops.c

Modified: branches/soc-2011-avocado/blender/source/blender/editors/include/ED_uvedit.h
===================================================================
--- branches/soc-2011-avocado/blender/source/blender/editors/include/ED_uvedit.h	2011-07-05 02:56:14 UTC (rev 38106)
+++ branches/soc-2011-avocado/blender/source/blender/editors/include/ED_uvedit.h	2011-07-05 03:31:20 UTC (rev 38107)
@@ -33,6 +33,7 @@
 #define ED_UVEDIT_H
 
 #include "BKE_context.h"
+#include "DNA_windowmanager_types.h"
 
 struct ARegionType;
 struct EditFace;
@@ -83,6 +84,11 @@
 //int ED_uvedit_ensure_uvs(bContext *C, Scene *scene, Object *obedit);
 int ED_uvedit_ensure_uvs(bContext *C, Scene *scene, Object *obedit);
 
+/*for minimizing stretch */
+void minimize_stretch_init(bContext *C, wmOperator *op);
+void minimize_stretch_iteration(bContext *C, wmOperator *op, int interactive);
+void minimize_stretch_exit(bContext *C, wmOperator *op, int cancel);
+
 /* uvedit_draw.c */
 void draw_uvedit_main(struct SpaceImage *sima, struct ARegion *ar, struct Scene *scene, struct Object *obedit);
 

Modified: branches/soc-2011-avocado/blender/source/blender/editors/mesh/autoseam_tools.c
===================================================================
--- branches/soc-2011-avocado/blender/source/blender/editors/mesh/autoseam_tools.c	2011-07-05 02:56:14 UTC (rev 38106)
+++ branches/soc-2011-avocado/blender/source/blender/editors/mesh/autoseam_tools.c	2011-07-05 03:31:20 UTC (rev 38107)
@@ -352,21 +352,21 @@
 
 static int generate_seam_exec(bContext *C, wmOperator *op)
 {
-	Scene *scene= CTX_data_scene(C);
-	Object *obedit= CTX_data_edit_object(C);
-	Mesh *me= ((Mesh *)obedit->data);
-	BMEditMesh *em= ((Mesh *)obedit->data)->edit_btmesh;
-	BMesh *bm = em->bm;
 	AUTOSEAM_Adjacency adj;
+    int i, iterations;
 	//AUTOSEAM_Adjacency adj_big;
 	int maxdepth= RNA_int_get(op->ptr, "depth");
 	int is_combinatorial = RNA_boolean_get(op->ptr, "is_combinatorial");
 	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");
-
-
-	int num_faces;
+    int num_faces;
+    
+    Scene *scene= CTX_data_scene(C);
+	Object *obedit= CTX_data_edit_object(C);
+	Mesh *me= ((Mesh *)obedit->data);
+	BMEditMesh *em= ((Mesh *)obedit->data)->edit_btmesh;
+	BMesh *bm = em->bm;
 		
 	me->drawflag |= ME_DRAWSEAMS;
 	num_faces = BM_Count_Element(bm, BM_FACE);
@@ -402,15 +402,24 @@
 	
 	if(correct_aspect)	scene->toolsettings->uvcalc_flag &= ~UVCALC_NO_ASPECT_CORRECT;
 	else				scene->toolsettings->uvcalc_flag |=  UVCALC_NO_ASPECT_CORRECT;
+    
+    ED_unwrap_lscm(scene, obedit, TRUE);
+    
+    
+    /* Now try to minimize the stretch of the mesh */
+    minimize_stretch_init(C, op);
+    
+	iterations= RNA_int_get(op->ptr, "iterations");
+	for(i=0; i<iterations; i++)
+		minimize_stretch_iteration(C, op, 0);
+	minimize_stretch_exit(C, op, 0);
+	
 
 	
-	ED_unwrap_lscm(scene, obedit, TRUE);
-	
-	//autoseam_delete_adjacency(adj_big);
-	
 	/*reset the min_value*/
 	min_value = INF;
 	
+    /* operator management */
 	DAG_id_tag_update(obedit->data, OB_RECALC_DATA);
 	WM_event_add_notifier(C, NC_GEOM|ND_DATA, obedit->data);
 	
@@ -443,7 +452,13 @@
 	RNA_def_enum(ot->srna, "method", method_items, 0, "Method", "Unwrapping method. Angle Based usually gives better results than Conformal, while being somewhat slower.");
 	RNA_def_boolean(ot->srna, "fill_holes", 1, "Fill Holes", "Virtual fill holes in mesh before unwrapping, to better avoid overlaps and preserve symmetry.");
 	RNA_def_boolean(ot->srna, "correct_aspect", 1, "Correct Aspect", "Map UV's taking image aspect ratio into account.");
+    
+    /* Adding parameters for minimizing the stretch */
+    RNA_def_boolean(ot->srna, "fill_holes", 1, "Fill Holes", "Virtual fill holes in mesh before unwrapping, to better avoid overlaps and preserve symmetry.");
+	RNA_def_float_factor(ot->srna, "blend", 0.0f, 0.0f, 1.0f, "Blend", "Blend factor between stretch minimized and original.", 0.0f, 1.0f);
+	RNA_def_int(ot->srna, "iterations", 2, 0, INT_MAX, "Iterations", "Number of iterations to run, 0 is unlimited when run interactively.", 0, 100);
 
+
 }
 
 

Modified: branches/soc-2011-avocado/blender/source/blender/editors/uvedit/uvedit_unwrap_ops.c
===================================================================
--- branches/soc-2011-avocado/blender/source/blender/editors/uvedit/uvedit_unwrap_ops.c	2011-07-05 02:56:14 UTC (rev 38106)
+++ branches/soc-2011-avocado/blender/source/blender/editors/uvedit/uvedit_unwrap_ops.c	2011-07-05 03:31:20 UTC (rev 38107)
@@ -308,7 +308,7 @@
 	wmTimer *timer;
 } MinStretch;
 
-static void minimize_stretch_init(bContext *C, wmOperator *op)
+void minimize_stretch_init(bContext *C, wmOperator *op)
 {
 	Scene *scene= CTX_data_scene(C);
 	Object *obedit= CTX_data_edit_object(C);
@@ -332,7 +332,7 @@
 	op->customdata= ms;
 }
 
-static void minimize_stretch_iteration(bContext *C, wmOperator *op, int interactive)
+void minimize_stretch_iteration(bContext *C, wmOperator *op, int interactive)
 {
 	MinStretch *ms= op->customdata;
 	ScrArea *sa= CTX_wm_area(C);
@@ -357,7 +357,7 @@
 	}
 }
 
-static void minimize_stretch_exit(bContext *C, wmOperator *op, int cancel)
+void minimize_stretch_exit(bContext *C, wmOperator *op, int cancel)
 {
 	MinStretch *ms= op->customdata;
 	ScrArea *sa= CTX_wm_area(C);




More information about the Bf-blender-cvs mailing list