[Bf-blender-cvs] [1e255ce0319] master: Fix T72214: Fluids: noise does not work with negative frame numbers

Jacques Lucke noreply at git.blender.org
Fri Jul 3 15:28:02 CEST 2020


Commit: 1e255ce0319d6cf45b6951a2a87590d2ca236e9f
Author: Jacques Lucke
Date:   Fri Jul 3 15:27:02 2020 +0200
Branches: master
https://developer.blender.org/rB1e255ce0319d6cf45b6951a2a87590d2ca236e9f

Fix T72214: Fluids: noise does not work with negative frame numbers

The issue is duplicated code. There are two functions that zero-fill
the frame number. They worked the same for positive frames numbers, but
behaved differently for negative ones.

On frame `-100`, `BLI_path_frame` outputs `-0100` and
`fluid_cache_get_framenr_formatted_$ID$` outputted `-100`.

I changed the behavior of the latter, because we depend on the behavior
of the former for much longer already.

Reviewers: sebbas

Differential Revision: https://developer.blender.org/D8107

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

M	intern/mantaflow/intern/strings/fluid_script.h
M	tests/gtests/blenlib/BLI_path_util_test.cc

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

diff --git a/intern/mantaflow/intern/strings/fluid_script.h b/intern/mantaflow/intern/strings/fluid_script.h
index b166ab585b0..977b99e7759 100644
--- a/intern/mantaflow/intern/strings/fluid_script.h
+++ b/intern/mantaflow/intern/strings/fluid_script.h
@@ -502,10 +502,12 @@ gc.collect()\n";
 // BAKE
 //////////////////////////////////////////////////////////////////////
 
+/* This has to match the behavior of BLI_path_frame,
+ * for positive and negative frame numbers. */
 const std::string fluid_cache_helper =
     "\n\
 def fluid_cache_get_framenr_formatted_$ID$(framenr):\n\
-    return str(framenr).zfill(4) # framenr with leading zeroes\n";
+    return str(framenr).zfill(4) if framenr >= 0 else str(framenr).zfill(5)\n";
 
 const std::string fluid_bake_multiprocessing =
     "\n\
diff --git a/tests/gtests/blenlib/BLI_path_util_test.cc b/tests/gtests/blenlib/BLI_path_util_test.cc
index 480d48d6080..734bbc2b31e 100644
--- a/tests/gtests/blenlib/BLI_path_util_test.cc
+++ b/tests/gtests/blenlib/BLI_path_util_test.cc
@@ -408,6 +408,20 @@ TEST(path_util, Frame)
     EXPECT_FALSE(ret);
     EXPECT_STREQ("test_middle", path);
   }
+
+  /* negative frame numbers */
+  {
+    char path[FILE_MAX] = "test_####";
+    ret = BLI_path_frame(path, -1, 4);
+    EXPECT_TRUE(ret);
+    EXPECT_STREQ("test_-0001", path);
+  }
+  {
+    char path[FILE_MAX] = "test_####";
+    ret = BLI_path_frame(path, -100, 4);
+    EXPECT_TRUE(ret);
+    EXPECT_STREQ("test_-0100", path);
+  }
 }
 
 /* BLI_split_dirfile */



More information about the Bf-blender-cvs mailing list