[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [46405] branches/meshdata_transfer: svn merge ^/trunk/blender -r46360:46370
Ove Murberg Henriksen
sorayasilvermoon at hotmail.com
Tue May 8 01:40:18 CEST 2012
Revision: 46405
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=46405
Author: cyborgmuppet
Date: 2012-05-07 23:40:17 +0000 (Mon, 07 May 2012)
Log Message:
-----------
svn merge ^/trunk/blender -r46360:46370
Revision Links:
--------------
http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=46360
Modified Paths:
--------------
branches/meshdata_transfer/intern/cycles/render/image.cpp
branches/meshdata_transfer/intern/ghost/intern/GHOST_SystemCocoa.mm
branches/meshdata_transfer/source/blender/bmesh/intern/bmesh_construct.c
branches/meshdata_transfer/source/blender/bmesh/intern/bmesh_private.h
branches/meshdata_transfer/source/blender/bmesh/operators/bmo_dissolve.c
branches/meshdata_transfer/source/blender/editors/sculpt_paint/paint_stroke.c
branches/meshdata_transfer/source/blender/editors/sculpt_paint/paint_vertex.c
branches/meshdata_transfer/source/blender/editors/sculpt_paint/sculpt.c
branches/meshdata_transfer/source/blender/editors/sculpt_paint/sculpt_undo.c
Property Changed:
----------------
branches/meshdata_transfer/
branches/meshdata_transfer/source/blender/editors/interface/interface.c
branches/meshdata_transfer/source/blender/editors/space_outliner/
Property changes on: branches/meshdata_transfer
___________________________________________________________________
Modified: svn:mergeinfo
- /branches/ge_harmony:42255,42279-42282,42286,42302,42338,42349,42616,42620,42698-42699,42739,42753,42773-42774,42832,44568,44597-44598,44793-44794
/branches/soc-2011-cucumber:37517,38166-38167,38177,38179-38180,38187,38242,38384,38387,38403-38404,38407,38968,38970,38973,39045,40845,42997-42998,43439
/branches/soc-2011-tomato:42376,42378-42379,42383,42385,42395,42397-42400,42407,42411,42418,42443-42444,42446,42467,42472,42486,42650-42652,42654-42655,42709-42710,42733-42734,42801,43872,44130,44141,44147-44149,44151-44152,44229-44230,45623-45625,46037
/trunk/blender:44563-46200,46301-46360
+ /branches/ge_harmony:42255,42279-42282,42286,42302,42338,42349,42616,42620,42698-42699,42739,42753,42773-42774,42832,44568,44597-44598,44793-44794
/branches/soc-2011-cucumber:37517,38166-38167,38177,38179-38180,38187,38242,38384,38387,38403-38404,38407,38968,38970,38973,39045,40845,42997-42998,43439
/branches/soc-2011-tomato:42376,42378-42379,42383,42385,42395,42397-42400,42407,42411,42418,42443-42444,42446,42467,42472,42486,42650-42652,42654-42655,42709-42710,42733-42734,42801,43872,44130,44141,44147-44149,44151-44152,44229-44230,45623-45625,46037
/trunk/blender:44563-46200,46301-46370
Modified: branches/meshdata_transfer/intern/cycles/render/image.cpp
===================================================================
--- branches/meshdata_transfer/intern/cycles/render/image.cpp 2012-05-07 23:36:22 UTC (rev 46404)
+++ branches/meshdata_transfer/intern/cycles/render/image.cpp 2012-05-07 23:40:17 UTC (rev 46405)
@@ -344,7 +344,7 @@
}
if(is_float) {
- string filename = path_filename(float_images[slot]->filename);
+ string filename = path_filename(float_images[slot - TEX_IMAGE_FLOAT_START]->filename);
progress->set_status("Updating Images", "Loading " + filename);
device_vector<float4>& tex_img = dscene->tex_float_image[slot - TEX_IMAGE_FLOAT_START];
Modified: branches/meshdata_transfer/intern/ghost/intern/GHOST_SystemCocoa.mm
===================================================================
--- branches/meshdata_transfer/intern/ghost/intern/GHOST_SystemCocoa.mm 2012-05-07 23:36:22 UTC (rev 46404)
+++ branches/meshdata_transfer/intern/ghost/intern/GHOST_SystemCocoa.mm 2012-05-07 23:40:17 UTC (rev 46405)
@@ -1487,7 +1487,8 @@
break;
}
- case NSMouseMoved:
+ case NSMouseMoved:
+ {
GHOST_TGrabCursorMode grab_mode = window->getCursorGrabMode();
/* TODO: CHECK IF THIS IS A TABLET EVENT */
@@ -1572,7 +1573,8 @@
}
break;
}
- break;
+ }
+ break;
case NSScrollWheel:
{
Modified: branches/meshdata_transfer/source/blender/bmesh/intern/bmesh_construct.c
===================================================================
--- branches/meshdata_transfer/source/blender/bmesh/intern/bmesh_construct.c 2012-05-07 23:36:22 UTC (rev 46404)
+++ branches/meshdata_transfer/source/blender/bmesh/intern/bmesh_construct.c 2012-05-07 23:40:17 UTC (rev 46405)
@@ -214,6 +214,9 @@
BLI_array_append(verts, v);
BLI_array_append(edges2, e);
+ /* we only flag the verts to check if they are in the face more then once */
+ BM_ELEM_API_FLAG_ENABLE(v, _FLAG_MV);
+
do {
e2 = bmesh_disk_edge_next(e2, v);
if (e2 != e && BM_ELEM_API_FLAG_TEST(e2, _FLAG_MF)) {
@@ -269,6 +272,12 @@
if (!edges2[i]) {
goto err;
}
+
+ /* check if vert is in face more then once. if the flag is disabled. we've already visited */
+ if (!BM_ELEM_API_FLAG_TEST(verts[i], _FLAG_MV)) {
+ goto err;
+ }
+ BM_ELEM_API_FLAG_DISABLE(verts[i], _FLAG_MV);
}
f = BM_face_create(bm, verts, edges2, len, nodouble);
@@ -286,6 +295,10 @@
err:
for (i = 0; i < len; i++) {
BM_ELEM_API_FLAG_DISABLE(edges[i], _FLAG_MF);
+ /* vert count may != len */
+ if (i < BLI_array_count(verts)) {
+ BM_ELEM_API_FLAG_DISABLE(verts[i], _FLAG_MV);
+ }
}
BLI_array_free(verts);
Modified: branches/meshdata_transfer/source/blender/bmesh/intern/bmesh_private.h
===================================================================
--- branches/meshdata_transfer/source/blender/bmesh/intern/bmesh_private.h 2012-05-07 23:36:22 UTC (rev 46404)
+++ branches/meshdata_transfer/source/blender/bmesh/intern/bmesh_private.h 2012-05-07 23:40:17 UTC (rev 46405)
@@ -60,6 +60,7 @@
* on using these internal flags!*/
#define _FLAG_JF 1 /* join faces */
#define _FLAG_MF 2 /* make face */
+#define _FLAG_MV 2 /* make face, vertex */
#define BM_ELEM_API_FLAG_ENABLE(element, f) ((element)->oflags[0].pflag |= (f))
#define BM_ELEM_API_FLAG_DISABLE(element, f) ((element)->oflags[0].pflag &= ~(f))
Modified: branches/meshdata_transfer/source/blender/bmesh/operators/bmo_dissolve.c
===================================================================
--- branches/meshdata_transfer/source/blender/bmesh/operators/bmo_dissolve.c 2012-05-07 23:36:22 UTC (rev 46404)
+++ branches/meshdata_transfer/source/blender/bmesh/operators/bmo_dissolve.c 2012-05-07 23:40:17 UTC (rev 46405)
@@ -34,14 +34,14 @@
#include "intern/bmesh_operators_private.h" /* own include */
-#define FACE_MARK 1
-#define FACE_ORIG 2
-#define FACE_NEW 4
-#define EDGE_MARK 1
+#define FACE_MARK 1
+#define FACE_ORIG 2
+#define FACE_NEW 4
+#define EDGE_MARK 1
-#define VERT_MARK 1
+#define VERT_MARK 1
-static int UNUSED_FUNCTION(check_hole_in_region)(BMesh *bm, BMFace *f)
+static int UNUSED_FUNCTION(check_hole_in_region) (BMesh * bm, BMFace * f)
{
BMWalker regwalker;
BMIter liter2;
@@ -60,8 +60,8 @@
l2 = BM_iter_new(&liter2, bm, BM_LOOPS_OF_FACE, f2);
for ( ; l2; l2 = BM_iter_step(&liter2)) {
l3 = l2->radial_next;
- if ( BMO_elem_flag_test(bm, l3->f, FACE_MARK) !=
- BMO_elem_flag_test(bm, l2->f, FACE_MARK))
+ if (BMO_elem_flag_test(bm, l3->f, FACE_MARK) !=
+ BMO_elem_flag_test(bm, l2->f, FACE_MARK))
{
if (!BMO_elem_flag_test(bm, l2->e, EDGE_MARK)) {
return FALSE;
@@ -433,8 +433,8 @@
fe = l->e;
for ( ; l; l = BM_iter_step(&liter)) {
f2 = BM_iter_new(&fiter, bm,
- BM_FACES_OF_EDGE, l->e);
- for ( ; f2; f2 = BM_iter_step(&fiter)) {
+ BM_FACES_OF_EDGE, l->e);
+ for (; f2; f2 = BM_iter_step(&fiter)) {
if (f2 != f) {
BM_faces_join_pair(bm, f, f2, l->e);
found2 = 1;
@@ -520,14 +520,24 @@
const float angle_max = (float)M_PI / 2.0f;
const float angle_limit = minf(angle_max, BMO_slot_float_get(op, "angle_limit"));
DissolveElemWeight *weight_elems = MEM_mallocN(MAX2(einput->len, vinput->len) *
- sizeof(DissolveElemWeight), __func__);
+ sizeof(DissolveElemWeight), __func__);
int i, tot_found;
+ int *vert_reverse_lookup;
+
+ BMEdge **einput_arr = (BMEdge **)einput->data.p;
+ BMVert **vinput_arr = (BMVert **)vinput->data.p;
+
/* --- first edges --- */
+ /* wire -> tag */
+ BM_ITER_MESH (e_iter, &iter, bm, BM_EDGES_OF_MESH) {
+ BM_elem_flag_set(e_iter, BM_ELEM_TAG, BM_edge_is_wire(e_iter));
+ }
+
/* go through and split edge */
for (i = 0, tot_found = 0; i < einput->len; i++) {
- BMEdge *e = ((BMEdge **)einput->data.p)[i];
+ BMEdge *e = einput_arr[i];
const float angle = BM_edge_calc_face_angle(e);
if (angle < angle_limit) {
@@ -576,10 +586,51 @@
}
}
+ /* prepare for cleanup */
+ BM_mesh_elem_index_ensure(bm, BM_VERT);
+ vert_reverse_lookup = MEM_mallocN(sizeof(int) * bm->totvert, __func__);
+ fill_vn_i(vert_reverse_lookup, bm->totvert, -1);
+ for (i = 0, tot_found = 0; i < vinput->len; i++) {
+ BMVert *v = vinput_arr[i];
+ vert_reverse_lookup[BM_elem_index_get(v)] = i;
+ }
+
+ /* --- cleanup --- */
+ earray = MEM_mallocN(sizeof(BMEdge *) * bm->totedge, __func__);
+ BM_ITER_MESH_INDEX (e_iter, &iter, bm, BM_EDGES_OF_MESH, i) {
+ earray[i] = e_iter;
+ }
+ /* remove all edges/verts left behind from dissolving, NULL'ing the vertex array so we dont re-use */
+ for (i = bm->totedge - 1; i != -1; i--) {
+ e_iter = earray[i];
+
+ if (BM_edge_is_wire(e_iter) && (BM_elem_flag_test(e_iter, BM_ELEM_TAG) == FALSE)) {
+ /* edge has become wire */
+ int vidx_reverse;
+ BMVert *v1 = e_iter->v1;
+ BMVert *v2 = e_iter->v2;
+ BM_edge_kill(bm, e_iter);
+ if (v1->e == NULL) {
+ vidx_reverse = vert_reverse_lookup[BM_elem_index_get(v1)];
+ if (vidx_reverse != -1) vinput_arr[vidx_reverse] = NULL;
+ BM_vert_kill(bm, v1);
+ }
+ if (v2->e == NULL) {
+ vidx_reverse = vert_reverse_lookup[BM_elem_index_get(v2)];
+ if (vidx_reverse != -1) vinput_arr[vidx_reverse] = NULL;
+ BM_vert_kill(bm, v2);
+ }
+ }
+ }
+ MEM_freeN(vert_reverse_lookup);
+
+ MEM_freeN(earray);
+
+
/* --- second verts --- */
for (i = 0, tot_found = 0; i < vinput->len; i++) {
- BMVert *v = ((BMVert **)vinput->data.p)[i];
- const float angle = bm_vert_edge_face_angle(v);
+ BMVert *v = vinput_arr[i];
+ const float angle = v ? bm_vert_edge_face_angle(v) : angle_limit;
if (angle < angle_limit) {
weight_elems[i].ele = (BMHeader *)v;
Property changes on: branches/meshdata_transfer/source/blender/editors/interface/interface.c
___________________________________________________________________
Modified: svn:mergeinfo
- /branches/ge_candy/source/blender/editors/interface/interface.c:45070-46163
/branches/ge_harmony/source/blender/editors/interface/interface.c:42255,42279-42282,42286,42302,42338,42349,42616,42620,42698-42699,42739,42753,42773-42774,42832,44568,44597-44598,44793-44794
/branches/soc-2011-cucumber/source/blender/editors/interface/interface.c:37517,38166-38167,38177,38179-38180,38187,38242,38384,38387,38403-38404,38407,38968,38970,38973,39045,40845,42997-42998,43439
/branches/soc-2011-tomato/source/blender/editors/interface/interface.c:42376,42378-42379,42383,42385,42395,42397-42400,42407,42411,42418,42443-42444,42446,42467,42472,42486,42650-42652,42654-42655,42709-42710,42733-42734,42801,43872,44130,44141,44147-44149,44151-44152,44229-44230,45623-45625,46037
/trunk/blender/source/blender/editors/interface/interface.c:44563-46200,46301-46360
+ /branches/ge_candy/source/blender/editors/interface/interface.c:45070-46163
/branches/ge_harmony/source/blender/editors/interface/interface.c:42255,42279-42282,42286,42302,42338,42349,42616,42620,42698-42699,42739,42753,42773-42774,42832,44568,44597-44598,44793-44794
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list