From 21d670e11efbe292317c85b0d72e70c75eae57b4 Mon Sep 17 00:00:00 2001 From: Miika Hamalainen Date: Fri, 30 Aug 2013 09:59:49 +0000 Subject: Fix [#36600]: Smoke subframes not working with initial velocity --- source/blender/blenkernel/intern/smoke.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) (limited to 'source/blender/blenkernel/intern/smoke.c') diff --git a/source/blender/blenkernel/intern/smoke.c b/source/blender/blenkernel/intern/smoke.c index bb65955e3b5..189c1e967dd 100644 --- a/source/blender/blenkernel/intern/smoke.c +++ b/source/blender/blenkernel/intern/smoke.c @@ -1142,8 +1142,8 @@ static void em_combineMaps(EmissionMap *output, EmissionMap *em2, int hires_mult /* values */ output->influence[index_out] = em1.influence[index_in]; - if (output->velocity) { - output->velocity[index_out] = em1.velocity[index_in]; + if (output->velocity && em1.velocity) { + copy_v3_v3(&output->velocity[index_out * 3], &em1.velocity[index_in * 3]); } } @@ -1160,9 +1160,11 @@ static void em_combineMaps(EmissionMap *output, EmissionMap *em2, int hires_mult else { output->influence[index_out] = MAX2(em2->influence[index_in], output->influence[index_out]); } - if (output->velocity) { + if (output->velocity && em2->velocity) { /* last sample replaces the velocity */ - output->velocity[index_out] = ADD_IF_LOWER(output->velocity[index_out], em2->velocity[index_in]); + output->velocity[index_out * 3] = ADD_IF_LOWER(output->velocity[index_out * 3], em2->velocity[index_in * 3]); + output->velocity[index_out * 3 + 1] = ADD_IF_LOWER(output->velocity[index_out * 3 + 1], em2->velocity[index_in * 3 + 1]); + output->velocity[index_out * 3 + 2] = ADD_IF_LOWER(output->velocity[index_out * 3 + 2], em2->velocity[index_in * 3 + 2]); } } } // low res loop -- cgit v1.2.3