[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