Commit: 2b81ef880fccd6a1cd13cf8039aeb0f0da924153 Author: decoda Date: Tue Jul 4 23:39:10 2017 +0530 Branches: soc-2017-sculpting_brush https://developer.blender.org/rB2b81ef880fccd6a1cd13cf8039aeb0f0da924153
Topograb: Codeclean up =================================================================== M source/blender/editors/sculpt_paint/sculpt.c =================================================================== diff --git a/source/blender/editors/sculpt_paint/sculpt.c b/source/blender/editors/sculpt_paint/sculpt.c index e6c910b2e86..c4ad4cae932 100644 --- a/source/blender/editors/sculpt_paint/sculpt.c +++ b/source/blender/editors/sculpt_paint/sculpt.c @@ -3233,22 +3233,6 @@ void mulv3_v3fl(float r[3], const short a[3], float f) } -static bool sculpt_brush_topo_test(SculptBrushTest *test, const float co[3]) -{ - float distsq = len_squared_v3v3(co, test->location); - - if (distsq <= test->radius_squared) { - if (sculpt_brush_test_clipping(test, co)) { - return 0; - } - test->dist = sqrtf(distsq); - return 1; - } - else { - return 0; - } -} - #define loop(i,a,b,n) for(int i=a;i<b;i+=n) static void print_array_i(int *a, int len){ @@ -3271,64 +3255,14 @@ int check_topo_connected(int vert, int *vert_array, int totvert){ return check_present(vert, vert_array, totvert); } -float loc[1000] = { 0.0f }; -int ver[6000] = { 0 }; -int c_ver[6000] = { 0 }; +#define VERLEN 10000 + +int ver[VERLEN] = { 0 }; +int c_ver[VERLEN] = { 0 }; int cn[6] = { 0 }; float d[3] = { 0.0f }; -static int init_zero(int *a, int len){ loop(i, 0, len, 1)a[i] = 0; } - -static void topo_init_task_cb(void *userdata, const int n) { - SculptThreadedTaskData *data = userdata; - SculptSession *ss = data->ob->sculpt; - Brush *brush = data->brush; - int *count = data->count; - int *v_index = data->v_index; - float *t_dis = data->t_dis; - - PBVHVertexIter vd; - SculptBrushTest test; - SculptOrigVertData orig_data; - sculpt_orig_vert_data_init(&orig_data, data->ob, data->nodes[n]); - sculpt_brush_test_init(ss, &test); - int it = 0; - - float ray_normal[3], rays[3], raye[3]; - ED_view3d_win_to_segment(test.vc->ar, test.vc->v3d, ss->cache->mouse, rays, raye, true); - sub_v3_v3v3(ray_normal, raye, rays); - normalize_v3(ray_normal); - - copy_v3_v3(test.normal, ray_normal); - - float(*proxy)[3]; - proxy = BKE_pbvh_node_add_proxy(ss->pbvh, data->nodes[n])->co; - BKE_pbvh_vertex_iter_begin(ss->pbvh, data->nodes[n], vd, PBVH_ITER_UNIQUE) { - sculpt_orig_vert_data_update(&orig_data, &vd); - - if (sculpt_brush_test(&test, orig_data.co)) { - float *co; - co = vd.co; - v_index[it + count[0]] = vd.vert_indices[vd.i]; - //if (ss->cache->first_time) ver[cn[1]++] = vd.vert_indices[vd.i]; - float distsq = dist_squared_to_line_direction_v3v3(vd.co, test.true_location, test.normal); - - if (distsq < t_dis[0]){ - t_dis[0] = distsq; - count[1] = v_index[it + count[0]]; - } - - it++; - } - - } - BKE_pbvh_vertex_iter_end; - BLI_mutex_lock(&data->mutex); - if (it) count[0] += it; - BLI_mutex_unlock(&data->mutex); -} - -#define VERLEN 10000 +static int init_zero(int *a, int len){ loop(i, 0, len, 1) a[i] = 0; } int find_connect(SculptSession *ss, int vert, short *ch, int *vert_index, int len){ int p = check_present(vert, vert_index, len); @@ -3356,55 +3290,6 @@ int find_connect(SculptSession *ss, int vert, short *ch, int *vert_index, int le return 0; } -static void topo_init(Sculpt *sd, Object *ob, PBVHNode **nodes, int totnode, - int *count, int *vert_index, float *temp_dis, short *t_index) -{ - SculptSession *ss = ob->sculpt; - Brush *brush = BKE_paint_brush(&sd->paint); - int t_count[3] = { 0 }; - int v_index[VERLEN] = { 0 }; - float t_dis[1]; - t_dis[0] = 100000.0f; - - SculptThreadedTaskData data = { - .sd = sd, .ob = ob, .nodes = nodes, .totnode = totnode, - .count = t_count, .v_index = v_index, .t_dis = t_dis, - }; - - //return; - - BLI_mutex_init(&data.mutex); - - BLI_task_parallel_range( - 0, totnode, &data, topo_init_task_cb, - ((sd->flags & SCULPT_USE_OPENMP) && totnode > SCULPT_THREADED_LIMIT)); - - BLI_mutex_end(&data.mutex); - - temp_dis[0] = t_dis[0]; - loop(ir, 0, 2, 1) count[ir] = t_count[ir]; - loop(ir, 0, count[0], 1) vert_index[ir] = v_index[ir]; - -} - -static void connected_face_init(Sculpt *sd, Object *ob, PBVHNode **nodes, int totnode, - int *count, int *v_index, float *dis, int *t_index){ - SculptSession *ss = ob->sculpt; - topo_init(sd, ob, nodes, totnode, count, v_index, dis, t_index); - - int vrn = count[1]; - short ch[VERLEN] = { 0 }; - find_connect(ss, vrn, ch, v_index, count[0]); - int k = 0; - loop(ir, 0, count[0], 1){ - if (ch[ir]){ - t_index[k] = v_index[ir]; - k++; - } - } - count[2] = k; -} - static void do_topo_grab_brush_task_cb_ex( void *userdata, void *UNUSED(userdata_chunk), const int n, const int thread_id) { @@ -3416,9 +3301,6 @@ static void do_topo_grab_brush_task_cb_ex( SculptBrushTest test; SculptOrigVertData orig_data; float(*proxy)[3]; - - int *count = ss->cache->d_count; - int *vert_array = ss->cache->v_index; const float bstrength = ss->cache->bstrength; @@ -3435,9 +3317,6 @@ static void do_topo_grab_brush_task_cb_ex( copy_v3_v3(test.normal, ray_normal); - - //for (int ix = 0; ix < cn[0]; ix++) printf("%f ", test.location[ix]); - //printf("\n"); BKE_pbvh_vertex_iter_begin(ss->pbvh, data->nodes[n], vd, PBVH_ITER_UNIQUE) { sculpt_orig_vert_data_update(&orig_data, &vd); @@ -3474,17 +3353,7 @@ static void do_topo_grab_brush_task_cb_ex( BKE_pbvh_vertex_iter_end; if (ss->cache->first_time){ - loc[cn[3]] = test.location[0]; - loc[cn[3] + 1] = test.location[1]; - loc[cn[3] + 2] = test.location[2]; - cn[3] += 3; - //for (int ix = 0; ix < cn[3]; ix++) printf("%.3f ", loc[ix]); - //printf("\n%f", d[0]); d[0] = 1000.0f; - //printf("\n%d", cn[2]); - //print_array_i(ver, cn[1]); - //printf("\n"); - short ch1[VERLEN] = { 0 }; find_connect(ss, cn[2], ch1, ver, cn[1]); int k = 0; @@ -3496,8 +3365,6 @@ static void do_topo_grab_brush_task_cb_ex( } cn[1] = 0; cn[4] = cn[4] + k; - print_array_i(c_ver, cn[4]); - printf("\n"); } } @@ -3514,6 +3381,9 @@ static void do_topo_grab_brush(Sculpt *sd, Object *ob, PBVHNode **nodes, int tot } if (!ss->pmap) {printf("NO!"); return;} + PBVHType type = BKE_pbvh_type(ss->pbvh); + if (type == PBVH_BMESH) return 0; //removing dyntopo for now + SculptThreadedTaskData data = { .sd = sd, .ob = ob, .brush = brush, .nodes = nodes, .grab_delta = grab_delta, @@ -4720,7 +4590,7 @@ static void sculpt_update_brush_delta(UnifiedPaintSettings *ups, Object *ob, Bru copy_v2_v2(ups->anchored_initial_mouse, cache->initial_mouse); ups->anchored_size = ups->pixel_radius; } - if (cache->first_time) init_zero(cn,5) , d[0] = 1000.0f; + if (cache->first_time && tool == SCULPT_TOOL_TOPO_GRAB) init_zero(cn,5) , d[0] = 1000.0f; /* handle 'rake' */ cache->is_rake_rotation_valid = false; @@ -4773,11 +4643,7 @@ static void sculpt_update_brush_delta(UnifiedPaintSettings *ups, Object *ob, Bru /* Initialize the stroke cache variants from operator properties */ -int countx[3]; /* count[0] -> totalvertex that can be modified, count[1] -> store central vertex index */ -int v_index[VERLEN]; -int t_index[VERLEN] = { 0 }; -float dis[1]; //added new -short second_time[1] = { 0 }; + static void sculpt_update_cache_variants(bContext *C, Sculpt *sd, Object *ob, PointerRNA *ptr) { @@ -4849,34 +4715,7 @@ static void sculpt_update_cache_variants(bContext *C, Sculpt *sd, Object *ob, sculpt_update_brush_delta(ups, ob, brush); - if (brush->sculpt_tool == SCULPT_TOOL_TOPO_GRAB){ - //SculptSession *ss = ob->sculpt; - if (cache->first_time){ - second_time[0] = 0; - } - if (second_time[0]<2){ - countx[0] = 0; - countx[1] = 0; - countx[2] = 0; - - SculptSearchSphereData data; - PBVHNode **nodes = NULL; - int totnode; - data.ss = ss; - data.sd = sd; - data.radius_squared = ss->cache->radius_squared; - data.original = sculpt_tool_needs_original(brush->sculpt_tool) ? true : ss->cache->original; - BKE_pbvh_search_gather(ss->pbvh, sculpt_search_sphere_cb, &data, &nodes, &totnode); - printf(" Once \n"); - - - connected_face_init(sd, ob, nodes, totnode, countx, v_index, dis, t_index); - } - second_time[0]++; - if (second_time[0] > 6) second_time[0] = 3; - cache->d_count = countx; - cache->v_index = t_index; - } + if (brush->sculpt_tool == SCULPT_TOOL_ROTATE) { cache->vertex_rotation = -BLI_dial_angle(cache->dial, cache->mouse) * cache->bstrength; _______________________________________________ Bf-blender-cvs mailing list Bf-blender-cvs@blender.org https://lists.blender.org/mailman/listinfo/bf-blender-cvs