[Bf-blender-cvs] [23a9504df1e] fracture_modifier: small fixes for acceleration map
Martin Felke
noreply at git.blender.org
Fri Dec 29 02:07:38 CET 2017
Commit: 23a9504df1eb22c811eb466cdc3d75f301b58cd2
Author: Martin Felke
Date: Fri Dec 29 02:07:29 2017 +0100
Branches: fracture_modifier
https://developer.blender.org/rB23a9504df1eb22c811eb466cdc3d75f301b58cd2
small fixes for acceleration map
===================================================================
M source/blender/blenkernel/intern/fracture.c
M source/blender/blenkernel/intern/pointcache.c
===================================================================
diff --git a/source/blender/blenkernel/intern/fracture.c b/source/blender/blenkernel/intern/fracture.c
index 751ea619f35..6092c396212 100644
--- a/source/blender/blenkernel/intern/fracture.c
+++ b/source/blender/blenkernel/intern/fracture.c
@@ -3677,9 +3677,6 @@ void BKE_update_acceleration_map(FractureModifierData *fmd, MeshIsland* mi, Obje
{
weight = (acc - fmd->min_acceleration) / denom;
- if (ctime == mi->start_frame)
- weight = 0.0f;
-
for (i = 0; i < mi->vertex_count; i++)
{
dv = dvert + mi->vertex_indices[i];
diff --git a/source/blender/blenkernel/intern/pointcache.c b/source/blender/blenkernel/intern/pointcache.c
index 14c481105fe..f29cde5f626 100644
--- a/source/blender/blenkernel/intern/pointcache.c
+++ b/source/blender/blenkernel/intern/pointcache.c
@@ -1347,12 +1347,18 @@ static int ptcache_rigidbody_write(int index, void *rb_v, void **data, int cfra
if (cfra >= mi->start_frame + 1)
{
lastvel = mi->acc_sequence[cfra - mi->start_frame - 1];
+ acc = fabsf(vel - lastvel);
+ BKE_update_acceleration_map(fmd, mi, ob, cfra, acc);
}
+ else {
+ BKE_update_acceleration_map(fmd, mi, ob, cfra, 0.0f);
- acc = fabsf(vel - lastvel);
+ }
- mi->acc_sequence[cfra - mi->start_frame] = acc;
- BKE_update_acceleration_map(fmd, mi, ob, cfra, acc);
+ mi->acc_sequence[cfra - mi->start_frame] = vel;
+ }
+ else {
+ BKE_update_acceleration_map(fmd, mi, ob, cfra, 0.0f);
}
}
@@ -1446,9 +1452,22 @@ static void ptcache_rigidbody_read(int index, void *rb_v, void **data, float cfr
int frame = (int)floor(cfra);
mi = find_meshisland(fmd, rbo->meshisland_index);
if (frame >= mi->start_frame && frame <= mi->frame_count) {
- float acc = mi->acc_sequence[frame - mi->start_frame];
- //printf("acc %f\n", acc);
- BKE_update_acceleration_map(fmd, mi, ob, frame, acc);
+ float vel = mi->acc_sequence[frame - mi->start_frame];
+ float lastvel = 0.0f;
+ float acc = 0.0f;
+
+ if (frame >= mi->start_frame + 1)
+ {
+ lastvel = mi->acc_sequence[frame - mi->start_frame - 1];
+ acc = fabsf(vel - lastvel);
+ BKE_update_acceleration_map(fmd, mi, ob, frame, acc);
+ }
+ else {
+ BKE_update_acceleration_map(fmd, mi, ob, frame, 0.0f);
+ }
+ }
+ else {
+ BKE_update_acceleration_map(fmd, mi, ob, frame, 0.0f);
}
}
}
More information about the Bf-blender-cvs
mailing list