[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