Added "Pack Charts" function in the UV editor, using Campbell's new box
packing code.
This commit is contained in:
@@ -40,6 +40,7 @@ void select_linked_tfaces_with_seams(int mode, struct Mesh *me, unsigned int ind
|
|||||||
|
|
||||||
void unwrap_lscm(short seamcut); /* unwrap faces selected in 3d view */
|
void unwrap_lscm(short seamcut); /* unwrap faces selected in 3d view */
|
||||||
void minimize_stretch_tface_uv(void); /* optimize faces selected in uv editor */
|
void minimize_stretch_tface_uv(void); /* optimize faces selected in uv editor */
|
||||||
|
void pack_charts_tface_uv(void);
|
||||||
|
|
||||||
/* for live mode: no undo pushes, caching for quicky re-unwrap */
|
/* for live mode: no undo pushes, caching for quicky re-unwrap */
|
||||||
void unwrap_lscm_live_begin(void);
|
void unwrap_lscm_live_begin(void);
|
||||||
|
|||||||
@@ -998,6 +998,9 @@ static void do_image_uvsmenu(void *arg, int event)
|
|||||||
case 12:
|
case 12:
|
||||||
minimize_stretch_tface_uv();
|
minimize_stretch_tface_uv();
|
||||||
break;
|
break;
|
||||||
|
case 13:
|
||||||
|
pack_charts_tface_uv();
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -1030,13 +1033,14 @@ static uiBlock *image_uvsmenu(void *arg_unused)
|
|||||||
|
|
||||||
uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, "");
|
uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, "");
|
||||||
|
|
||||||
|
uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Pack Charts|Ctrl P", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 0, 13, "");
|
||||||
uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Minimize Stretch|Ctrl V", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 0, 12, "");
|
uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Minimize Stretch|Ctrl V", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 0, 12, "");
|
||||||
uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Limit Stitch...|Shift V", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 0, 3, "");
|
uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Limit Stitch...|Shift V", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 0, 3, "");
|
||||||
uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Stitch|V", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 0, 4, "");
|
uiDefIconTextBut(block, BUTM, 1, ICON_BLANK1, "Stitch|V", 0, yco-=20, menuwidth, 19, NULL, 0.0, 0.0, 0, 4, "");
|
||||||
uiDefIconTextBlockBut(block, image_uvs_transformmenu, NULL, ICON_RIGHTARROW_THIN, "Transform", 0, yco-=20, 120, 19, "");
|
|
||||||
|
|
||||||
uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, "");
|
uiDefBut(block, SEPR, 0, "", 0, yco-=6, menuwidth, 6, NULL, 0.0, 0.0, 0, 0, "");
|
||||||
|
|
||||||
|
uiDefIconTextBlockBut(block, image_uvs_transformmenu, NULL, ICON_RIGHTARROW_THIN, "Transform", 0, yco-=20, 120, 19, "");
|
||||||
uiDefIconTextBlockBut(block, image_uvs_mirrormenu, NULL, ICON_RIGHTARROW_THIN, "Mirror", 0, yco-=20, 120, 19, "");
|
uiDefIconTextBlockBut(block, image_uvs_mirrormenu, NULL, ICON_RIGHTARROW_THIN, "Mirror", 0, yco-=20, 120, 19, "");
|
||||||
uiDefIconTextBlockBut(block, image_uvs_weldalignmenu, NULL, ICON_RIGHTARROW_THIN, "Weld/Align", 0, yco-=20, 120, 19, "");
|
uiDefIconTextBlockBut(block, image_uvs_weldalignmenu, NULL, ICON_RIGHTARROW_THIN, "Weld/Align", 0, yco-=20, 120, 19, "");
|
||||||
|
|
||||||
|
|||||||
@@ -4136,7 +4136,7 @@ void param_pack(ParamHandle *handle)
|
|||||||
if (tot_height>tot_width)
|
if (tot_height>tot_width)
|
||||||
scale = 1.0/tot_height;
|
scale = 1.0/tot_height;
|
||||||
else
|
else
|
||||||
scale = 1.0/tot_height;
|
scale = 1.0/tot_width;
|
||||||
|
|
||||||
for (i = 0; i < phandle->ncharts-unpacked; i++) {
|
for (i = 0; i < phandle->ncharts-unpacked; i++) {
|
||||||
box = boxarray+i;
|
box = boxarray+i;
|
||||||
|
|||||||
@@ -4745,7 +4745,9 @@ static void winqreadimagespace(ScrArea *sa, void *spacedata, BWinEvent *evt)
|
|||||||
break;
|
break;
|
||||||
case PKEY:
|
case PKEY:
|
||||||
if(G.f & G_FACESELECT) {
|
if(G.f & G_FACESELECT) {
|
||||||
if(G.qual==LR_SHIFTKEY)
|
if(G.qual==LR_CTRLKEY)
|
||||||
|
pack_charts_tface_uv();
|
||||||
|
else if(G.qual==LR_SHIFTKEY)
|
||||||
select_pinned_tface_uv();
|
select_pinned_tface_uv();
|
||||||
else if(G.qual==LR_ALTKEY)
|
else if(G.qual==LR_ALTKEY)
|
||||||
pin_tface_uv(0);
|
pin_tface_uv(0);
|
||||||
|
|||||||
@@ -398,6 +398,27 @@ void minimize_stretch_tface_uv(void)
|
|||||||
allqueue(REDRAWIMAGE, 0);
|
allqueue(REDRAWIMAGE, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void pack_charts_tface_uv(void)
|
||||||
|
{
|
||||||
|
Mesh *me;
|
||||||
|
ParamHandle *handle;
|
||||||
|
|
||||||
|
me = get_mesh(OBACT);
|
||||||
|
if(me==0 || me->mtface==0) return;
|
||||||
|
|
||||||
|
handle = construct_param_handle(me, 1, 0, 1);
|
||||||
|
param_pack(handle);
|
||||||
|
param_flush(handle);
|
||||||
|
param_delete(handle);
|
||||||
|
|
||||||
|
BIF_undo_push("UV pack charts");
|
||||||
|
|
||||||
|
object_uvs_changed(OBACT);
|
||||||
|
|
||||||
|
allqueue(REDRAWVIEW3D, 0);
|
||||||
|
allqueue(REDRAWIMAGE, 0);
|
||||||
|
}
|
||||||
|
|
||||||
/* LSCM live mode */
|
/* LSCM live mode */
|
||||||
|
|
||||||
static ParamHandle *liveHandle = NULL;
|
static ParamHandle *liveHandle = NULL;
|
||||||
|
|||||||
Reference in New Issue
Block a user