[Bf-blender-cvs] [cfaaf58023a] soc-2021-simulation-display: Cleanup: Forces

soumya pochiraju noreply at git.blender.org
Wed Aug 18 21:48:25 CEST 2021


Commit: cfaaf58023ad7d8f0f6266b858efafcc17989dcc
Author: soumya pochiraju
Date:   Thu Aug 19 01:17:08 2021 +0530
Branches: soc-2021-simulation-display
https://developer.blender.org/rBcfaaf58023ad7d8f0f6266b858efafcc17989dcc

Cleanup: Forces

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

M	source/blender/blenkernel/intern/rigidbody.c
M	source/blender/draw/engines/overlay/overlay_extra.c

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

diff --git a/source/blender/blenkernel/intern/rigidbody.c b/source/blender/blenkernel/intern/rigidbody.c
index 5c2daef6997..d0e86c193dc 100644
--- a/source/blender/blenkernel/intern/rigidbody.c
+++ b/source/blender/blenkernel/intern/rigidbody.c
@@ -2209,6 +2209,7 @@ static void rigidbody_get_debug_draw_data(RigidBodyWorld *rbw, float substep, bo
       float norm_forces[3][3] = {{0.0f}};
       float fric_forces[3][3] = {{0.0f}};
       float vec_locations[3][3] = {{0.0f}};
+
       Object *ob = rbw->objects[j];
       if (ob->rigidbody_object != NULL) {
         rbRigidBody *rbo = (rbRigidBody *)(ob->rigidbody_object->shared->physics_object);
@@ -2236,11 +2237,13 @@ static void rigidbody_get_debug_draw_data(RigidBodyWorld *rbw, float substep, bo
                                 vec_locations,
                                 norm_flag,
                                 fric_flag);
+          if(!is_zero_v3(norm_forces[0])) {
+            rigidbody_debug_draw_get_colliding_face(ob, vec_locations, norm_forces);
+          }
+
           for(int k=0; k<3; k++){
                if (norm_flag || fric_flag) {
-                if(!is_zero_v3(norm_forces[0])) {
-                  rigidbody_debug_draw_get_colliding_face(ob, vec_locations, norm_forces);
-                }
+
                 mul_v3_fl(norm_forces[k], 1/num_substeps);
                 add_v3_v3(ob->rigidbody_object->norm_forces[k].vector, norm_forces[k]);
                 mul_v3_fl(vec_locations[k], len_v3(norm_forces[k]));
diff --git a/source/blender/draw/engines/overlay/overlay_extra.c b/source/blender/draw/engines/overlay/overlay_extra.c
index 09a5d15b0e0..b19c4c253fd 100644
--- a/source/blender/draw/engines/overlay/overlay_extra.c
+++ b/source/blender/draw/engines/overlay/overlay_extra.c
@@ -1656,7 +1656,7 @@ static void OVERLAY_vector_extra(OVERLAY_Data *data,
                                  float scale,
                                  float min_clamp,
                                  float color[3],
-                                 int text_flag)
+                                 int draw_text)
 {
 
   uchar text_color[4];
@@ -1680,7 +1680,7 @@ static void OVERLAY_vector_extra(OVERLAY_Data *data,
   DRW_shgroup_call_procedural_lines(grp, NULL, 3);
 
   /* Draw magnitude of vector as text */
-  if (text_flag) {
+  if (draw_text) {
     struct DRWTextStore *dt = DRW_text_cache_ensure();
     DRW_text_cache_add(dt,
                        vector_head_pos,
@@ -1697,13 +1697,13 @@ static void OVERLAY_forces_extra(OVERLAY_Data *data, Scene *scene, RigidBodyOb *
 {
 
   float scale = 0.05f;
-  float min_clamp = 2.0f;
+  float min_clamp = 1.0f;
   float vector[3] = {0.0f};
   float color1[3] = {1.0, 0.0, 1.0}; /* Pink. */
   float color2[3] = {0.0, 1.0, 0.5}; /* Cyan. */
   float color3[3] = {1.0, 1.0, 0.0}; /* Yellow. */
 
-  int text_flag = rbo->sim_display_options & RB_SIM_TEXT;
+  int draw_text = rbo->sim_display_options & RB_SIM_TEXT;
 
   if (rbo->display_force_types & RB_SIM_NET_FORCE) {
     /* Calculate net force. */
@@ -1714,10 +1714,11 @@ static void OVERLAY_forces_extra(OVERLAY_Data *data, Scene *scene, RigidBodyOb *
     for (int i = 0; i < 3; i++) {
       add_v3_v3(net_force, rbo->eff_forces[i].vector);
       add_v3_v3(net_force, rbo->norm_forces[i].vector);
+      add_v3_v3(net_force, rbo->fric_forces[i].vector);
     }
 
     if ((len_v3(net_force) > 0.000001f)) {
-      OVERLAY_vector_extra(data, net_force, rbo->pos, scale, min_clamp, color2, text_flag);
+      OVERLAY_vector_extra(data, net_force, rbo->pos, scale, min_clamp, color2, draw_text);
     }
   }
 
@@ -1726,42 +1727,42 @@ static void OVERLAY_forces_extra(OVERLAY_Data *data, Scene *scene, RigidBodyOb *
 
     copy_v3_v3(vector, scene->physics_settings.gravity);
     mul_v3_fl(vector, rbo->mass);
-    OVERLAY_vector_extra(data, vector, rbo->pos, scale, min_clamp, color1, text_flag);
+    OVERLAY_vector_extra(data, vector, rbo->pos, scale, min_clamp, color1, draw_text);
   }
 
   if (rbo->display_force_types & RB_SIM_EFFECTORS) {
 
     for (int i = 0; i < 3; i++) {
-      if (!is_zero_v3(rbo->eff_forces[i].vector)) {
+      if (len_v3(rbo->eff_forces[i].vector)>0.000001f) {
         OVERLAY_vector_extra(
-            data, rbo->eff_forces[i].vector, rbo->pos, scale, min_clamp, color1, text_flag);
+            data, rbo->eff_forces[i].vector, rbo->pos, scale, min_clamp, color1, draw_text);
       }
     }
   }
 
   if (rbo->display_force_types & RB_SIM_NORMAL) {
     for (int i = 0; i < 3; i++) {
-      if (!is_zero_v3(rbo->norm_forces[i].vector)) {
+      if (len_v3(rbo->norm_forces[i].vector)>0.000001f) {
         OVERLAY_vector_extra(data,
                              rbo->norm_forces[i].vector,
                              rbo->vec_locations[i].vector,
                              scale,
                              min_clamp,
                              color1,
-                             text_flag);
+                             draw_text);
       }
     }
   }
   if (rbo->display_force_types & RB_SIM_FRICTION) {
     for (int i = 0; i < 3; i++) {
-      if (!is_zero_v3(rbo->fric_forces[i].vector)) {
+      if (len_v3(rbo->fric_forces[i].vector)>0.000001f) {
         OVERLAY_vector_extra(data,
                              rbo->fric_forces[i].vector,
                              rbo->vec_locations[i].vector,
                              scale,
                              min_clamp,
                              color3,
-                             text_flag);
+                             draw_text);
       }
     }
   }
@@ -1771,7 +1772,7 @@ static void OVERLAY_forces_extra(OVERLAY_Data *data, Scene *scene, RigidBodyOb *
 static void OVERLAY_velocity_extra(OVERLAY_Data *data, RigidBodyOb *rbo)
 {
   float scale = 0.5f;
-  float min_clamp = 2.0f;
+  float min_clamp = 1.0f;
   float color[3] = {1.0, 0.5, 1.0};
 
   int text_flag = rbo->sim_display_options & RB_SIM_TEXT;
@@ -1787,7 +1788,7 @@ static void OVERLAY_acceleration_extra(OVERLAY_Data *data,
                                        Scene *scene)
 {
   float scale = 0.5f;
-  float min_clamp = 2.0f;
+  float min_clamp = 1.0f;
   float color[3] = {1.0, 1.0, 0.0};
 
   int text_flag = rbo->sim_display_options & RB_SIM_TEXT;



More information about the Bf-blender-cvs mailing list