[Bf-blender-cvs] [7ef8404f4e0] soc-2018-npr: Always use get_facing function when possible

Sebastian Parborg noreply at git.blender.org
Fri Aug 31 15:48:49 CEST 2018


Commit: 7ef8404f4e0ec99d5cc864eb7f22d94a43f7fa88
Author: Sebastian Parborg
Date:   Wed Aug 29 12:29:09 2018 +0200
Branches: soc-2018-npr
https://developer.blender.org/rB7ef8404f4e0ec99d5cc864eb7f22d94a43f7fa88

Always use get_facing function when possible

===================================================================

M	source/blender/modifiers/intern/MOD_mybmesh.c

===================================================================

diff --git a/source/blender/modifiers/intern/MOD_mybmesh.c b/source/blender/modifiers/intern/MOD_mybmesh.c
index 1ae354b9be6..8be71336340 100644
--- a/source/blender/modifiers/intern/MOD_mybmesh.c
+++ b/source/blender/modifiers/intern/MOD_mybmesh.c
@@ -2770,13 +2770,12 @@ static int radial_extention( MeshData *m_d ){
 		float prev_face_diff = 0;
 		BMEdge *flip_edge = NULL;
 		bool flipped_edge = false;
-		float cent_f[3], no[3], view_vec[3];
+		float cent_f[3], no[3];
 		BM_ITER_ELEM (face, &iter, r_vert.vert, BM_FACES_OF_VERT) {
 			BM_face_calc_center_mean(face, cent_f);
 			BM_face_calc_normal(face, no);
 
-			sub_v3_v3v3(view_vec, m_d->cam_loc, cent_f);
-			float face_dir = dot_v3v3(no, view_vec);
+			float face_dir = get_facing_dir_nor(m_d->cam_loc, cent_f, no);
 			if( b_f != (face_dir < 0) ){
 				prev_face_diff += fabs(face_dir);
 				prev_inco_faces++;
@@ -2916,8 +2915,7 @@ static int radial_extention( MeshData *m_d ){
 						BM_face_calc_center_mean(face, cent_f);
 						BM_face_calc_normal(face, no);
 
-						sub_v3_v3v3(view_vec, m_d->cam_loc, cent_f);
-						float face_dir = dot_v3v3(no, view_vec);
+						float face_dir = get_facing_dir_nor(m_d->cam_loc, cent_f, no);
 						if( b_f != (face_dir < 0) ){
 							new_diff_facing += fabs(face_dir);
 							new_inco_faces++;
@@ -3129,12 +3127,10 @@ static int opti_vertex_wiggle( MeshData *m_d, BLI_Buffer *inco_faces ){
 
 					float no[3];
 					float P[3];
-					float view_vec[3];
 					BM_face_calc_normal(f, no);
 					BM_face_calc_center_mean(f, P);
 
-					sub_v3_v3v3(view_vec, m_d->cam_loc, P);
-					float face_dir = dot_v3v3(no, view_vec);
+					float face_dir = get_facing_dir_nor(m_d->cam_loc, P, no);
 					if( inface->back_f != (face_dir < 0) ){
 						tot_diff_facing += fabs(face_dir);
 						nr_inco_faces++;
@@ -3224,7 +3220,6 @@ static int opti_vertex_wiggle( MeshData *m_d, BLI_Buffer *inco_faces ){
 							BM_ITER_ELEM_INDEX (f, &iter_f, vert, BM_FACES_OF_VERT, f_idx) {
 								float no[3];
 								float P[3];
-								float view_vec[3];
 								BM_face_calc_normal(f, no);
 								BM_face_calc_center_mean(f, P);
 
@@ -3234,8 +3229,7 @@ static int opti_vertex_wiggle( MeshData *m_d, BLI_Buffer *inco_faces ){
 									break;
 								}
 
-								sub_v3_v3v3(view_vec, m_d->cam_loc, P);
-								float face_dir = dot_v3v3(no, view_vec);
+								float face_dir = get_facing_dir_nor(m_d->cam_loc, P, no);
 								if( inface->back_f != (face_dir < 0) ){
 									new_diff_facing += fabs(face_dir);
 									new_inco_faces++;
@@ -3417,17 +3411,16 @@ static void optimization( MeshData *m_d ){
 					//Calculate nr of info faces of egde
 					int nr_inco_faces = 0;
 					float P[3], no[3];
-					float view_vec[3], face_dir;
+					float face_dir;
 					float cur_diff_facing = 0;
-                    BMFace *face;
+					BMFace *face;
 					BMIter iter_f;
 					BM_ITER_ELEM (face, &iter_f, edge, BM_FACES_OF_EDGE) {
 						BM_face_calc_normal(face, no);
 						BM_face_calc_center_mean(face, P);
 
 						//Calc facing of face
-						sub_v3_v3v3(view_vec, m_d->cam_loc, P);
-						face_dir = dot_v3v3(no, view_vec);
+						face_dir = get_facing_dir_nor(m_d->cam_loc, P, no);
 
 						if( inface->back_f != (face_dir < 0) ){
 							cur_diff_facing += fabs(face_dir);
@@ -3477,8 +3470,7 @@ static void optimization( MeshData *m_d ){
 						mul_v3_fl( P, 1.0f / 3.0f );
 
 						//Facing of first new flip face
-						sub_v3_v3v3(view_vec, m_d->cam_loc, P);
-						face_dir = dot_v3v3(no, view_vec);
+						face_dir = get_facing_dir_nor(m_d->cam_loc, P, no);
 						if( inface->back_f != (face_dir < 0) ){
 							//This is not a good flip!
 							//printf("Opti flip, first face not good\n");
@@ -3499,8 +3491,7 @@ static void optimization( MeshData *m_d ){
 						mul_v3_fl( P, 1.0f / 3.0f );
 
 						//Facing of second new flip face
-						sub_v3_v3v3(view_vec, m_d->cam_loc, P);
-						face_dir = dot_v3v3(no, view_vec);
+						face_dir = get_facing_dir_nor(m_d->cam_loc, P, no);
 						if( inface->back_f != (face_dir < 0) ){
 							//This is not a good flip!
 							//printf("Opti flip, second face not good\n");
@@ -3671,12 +3662,10 @@ static void optimization( MeshData *m_d ){
 			BM_ITER_MESH (f, &iter_f, bm_fan_copy, BM_FACES_OF_MESH){
 				float no[3];
 				float P[3];
-				float view_vec[3];
 				BM_face_calc_normal(f, no);
 				BM_face_calc_center_mean(f, P);
 
-				sub_v3_v3v3(view_vec, m_d->cam_loc, P);
-				float face_dir = dot_v3v3(no, view_vec);
+				float face_dir = get_facing_dir_nor(m_d->cam_loc, P, no);
 				if( inface->back_f != (face_dir < 0) ){
 					nr_inco_faces++;
 				}
@@ -3715,12 +3704,10 @@ static void optimization( MeshData *m_d ){
 						BM_ITER_MESH (f, &iter_f, bm_temp, BM_FACES_OF_MESH){
 							float no[3];
 							float P[3];
-							float view_vec[3];
 							BM_face_calc_normal(f, no);
 							BM_face_calc_center_mean(f, P);
 
-							sub_v3_v3v3(view_vec, m_d->cam_loc, P);
-							float face_dir = dot_v3v3(no, view_vec);
+							float face_dir = get_facing_dir_nor(m_d->cam_loc, P, no);
 							if( inface->back_f != (face_dir < 0) ){
 								new_diff_facing += fabs(face_dir);
 								if( dot_v3v3(no, split_vert->no) < 0.0f ){
@@ -3990,12 +3977,10 @@ static void optimization( MeshData *m_d ){
 				BM_ITER_ELEM (f, &iter_f, vert, BM_FACES_OF_VERT) {
 					float no[3];
 					float P[3];
-					float view_vec[3];
 					BM_face_calc_normal(f, no);
 					BM_face_calc_center_mean(f, P);
 
-					sub_v3_v3v3(view_vec, m_d->cam_loc, P);
-					float face_dir = dot_v3v3(no, view_vec);
+					float face_dir = get_facing_dir_nor(m_d->cam_loc, P, no);
 					if( inface->back_f != (face_dir < 0) ){
 						tot_diff_facing += fabs(face_dir);
 						nr_inco_faces++;
@@ -4042,12 +4027,10 @@ static void optimization( MeshData *m_d ){
 					BM_ITER_ELEM (f, &iter_f, vert, BM_FACES_OF_VERT) {
 						float no[3];
 						float P[3];
-						float view_vec[3];
 						BM_face_calc_normal(f, no);
 						BM_face_calc_center_mean(f, P);
 
-						sub_v3_v3v3(view_vec, m_d->cam_loc, P);
-						float face_dir = dot_v3v3(no, view_vec);
+						float face_dir = get_facing_dir_nor(m_d->cam_loc, P, no);
 						if( inface->back_f != (face_dir < 0) ){
 							new_diff_facing += fabs(face_dir);
 							new_inco_faces++;
@@ -4345,7 +4328,7 @@ static Mesh *mybmesh_do(Mesh *mesh, MyBMeshModifierData *mmd, float cam_loc[3])
 			split_BB_FF_edges_thread_start(&mesh_data);
 			//split_BB_FF_edges(&mesh_data);
 			TIMEIT_END(split_bb_ff);
-			printf("New verts: %d\n", new_vert_buffer.count);
+			//printf("New verts: %d\n", new_vert_buffer.count);
 		}
 		// (6.2) Contour Insertion



More information about the Bf-blender-cvs mailing list