Revision: 49156
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=49156
Author: psy-fi
Date: 2012-07-23 21:09:13 +0000 (Mon, 23 Jul 2012)
Log Message:
-----------
Mirrored unwrap
================
* better support for regular unwrap, fixed incorrect indices of edges
when calculating seams, made it possible to take seam on mirror border
into account so that mirrored part can be "cut" during unwrapping.
Modified Paths:
--------------
branches/soc-2012-bratwurst/source/blender/editors/uvedit/uvedit_unwrap_ops.c
Modified:
branches/soc-2012-bratwurst/source/blender/editors/uvedit/uvedit_unwrap_ops.c
===================================================================
---
branches/soc-2012-bratwurst/source/blender/editors/uvedit/uvedit_unwrap_ops.c
2012-07-23 20:46:27 UTC (rev 49155)
+++
branches/soc-2012-bratwurst/source/blender/editors/uvedit/uvedit_unwrap_ops.c
2012-07-23 21:09:13 UTC (rev 49156)
@@ -213,12 +213,14 @@
short correct_aspect, short
mirrored)
{
DerivedMesh *init_derived, *mirr_derived;
- int tot_faces;
+ int tot_faces, tot_edges;
int *orig_verts;
+ int *orig_edges;
int *orig_faces;
MPoly *face_array;
MVert *vert_array;
MLoop *loop_array;
+ MEdge *edge_array;
BMEditMesh *em;
ScanFillContext sf_ctx;
ParamHandle *handle;
@@ -265,15 +267,18 @@
init_derived->release(init_derived);
tot_faces = mirr_derived->getNumPolys(mirr_derived);
+ tot_edges = mirr_derived->getNumEdges(mirr_derived);
orig_verts = CustomData_get_layer(&mirr_derived->vertData,
CD_ORIGINDEX);
orig_faces = CustomData_get_layer(&mirr_derived->polyData,
CD_ORIGINDEX);
+ orig_edges = CustomData_get_layer(&mirr_derived->edgeData,
CD_ORIGINDEX);
face_array = mirr_derived->getPolyArray(mirr_derived);
loop_array = mirr_derived->getLoopArray(mirr_derived);
vert_array = mirr_derived->getVertArray(mirr_derived);
+ edge_array = mirr_derived->getEdgeArray(mirr_derived);
} else {
tot_faces = em->bm->totface;
}
- EDBM_index_arrays_init(em, 0, 0, 1);
+ EDBM_index_arrays_init(em, 0, 1, 1);
BLI_srand(0);
@@ -429,21 +434,33 @@
}
if (!implicit) {
- BM_ITER_MESH (eed, &iter, em->bm, BM_EDGES_OF_MESH) {
- if (BM_elem_flag_test(eed, BM_ELEM_SEAM)) {
- ParamKey vkeys[2];
- vkeys[0] = (ParamKey)BM_elem_index_get(eed->v1);
- vkeys[1] = (ParamKey)BM_elem_index_get(eed->v2);
- param_edge_set_seam(handle, vkeys);
+ if(!mirrored) {
+ BM_ITER_MESH (eed, &iter, em->bm, BM_EDGES_OF_MESH) {
+ if (BM_elem_flag_test(eed, BM_ELEM_SEAM)) {
+ ParamKey vkeys[2];
+ vkeys[0] =
(ParamKey)BM_elem_index_get(eed->v1);
+ vkeys[1] =
(ParamKey)BM_elem_index_get(eed->v2);
+ param_edge_set_seam(handle, vkeys);
+ }
}
+ } else {
+ for (fi = 0; fi < tot_edges; fi++) {
+ eed = EDBM_edge_at_index(em, orig_edges[fi]);
+ if (BM_elem_flag_test(eed, BM_ELEM_SEAM)) {
+ ParamKey vkeys[2];
+ vkeys[0] = (ParamKey)edge_array[fi].v1;
+ vkeys[1] = (ParamKey)edge_array[fi].v2;
+ param_edge_set_seam(handle, vkeys);
+ }
+ }
}
}
if(mirrored)
mirr_derived->release(mirr_derived);
- else
- EDBM_index_arrays_free(em);
+ EDBM_index_arrays_free(em);
+
param_construct_end(handle, fill, implicit);
return handle;
_______________________________________________
Bf-blender-cvs mailing list
[email protected]
http://lists.blender.org/mailman/listinfo/bf-blender-cvs