Announcement

Collapse
No announcement yet.

Issue with PhoenixFD cache looping

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • Issue with PhoenixFD cache looping

    I have a 120 frame long cache of a fire sequence I want to loop. It takes 30 to 40 frames for the fire to build up to full size and I want to loop the section from 40 to 100.
    I have cached out 120 frames
    I've set the Cache Origin to 40
    The Timeline Origin at 0
    The Play length at 60
    The Loop Overlap at 20

    From what I understand from reading the documentation, this should blend frames 100 to 120 with frame 40 to 60 of the cache forming a perfect loop when the timeline is set from 0 to 60. And this is pretty much the case, however I am experiencing an issue. It seems like the cache loops back on itself reading from frame 0 as opposed to the offset set in the Cache Origin value. I am seeing the 20 frame blend at the beginning of the looping sequence as expected, but it is blending with frame 0 to 20 of the cache as opposed to 40 to 60 (40 being my Cache Origin). Is this expected, or is it indeed a bug?



  • #2
    I'm using Phoenix FD 4.30.01 Nightly, Build ID: 2021030130630

    Comment


    • #3
      Let me try to break it here using the same option and the toolbar fire preset....
      Svetlin Nikolov, Ex Lead Phoenix developer

      Comment


      • #4
        Hey, so it seems okay to me. You can check the frame that is loaded via the "..." button next to the Input path -> Show File Name...

        With my setup, it looks like the fire gets reduced during the overlapped frames, so I'm thinking this might be what you are getting as well. The reason for this is that the render settings for the Fire preset are very sensitive to the Temperature data, but the loop overlap just takes two caches and basically averages them together, meaning that if a flame is in the same place in both caches, it would remain the same intensity, but if there is a flame in a certain place in only one of the caches, then the result will be a flame with just half the temperature. And the render settings might not show such a temperature as visible fire at all.

        Could this be what is happening in your scene as well?
        Svetlin Nikolov, Ex Lead Phoenix developer

        Comment


        • #5
          Hi Svetlin!

          Thanks for looking into this. In the attached images you can see a selection of frames from the sequence. Frames 000 and 060 match perfectly. Frame 028 is taken from the middle of the loop and also has similar volume to it. Frame 010 is from the middle of the 20 frame blend at the start of the sequence and you can see a big disparity between the overall volume of the fire shape. Even if frames were being averaged from the sections that are blending I wouldn't anticipate seeing such a big discrepancy...?
          Attached Files

          Comment


          • #6
            If you turn off the GPU Preview and check the voxel preview of the Temperature channel, would it show the ghosts of both the blended frames during the overlap?
            Svetlin Nikolov, Ex Lead Phoenix developer

            Comment


            • #7
              Same frames with GPU preview off - definitely seems to be a visible reduction in volume at frame 010...
              Attached Files

              Comment


              • #8
                My settings
                Attached Files

                Comment


                • #9
                  Yes, looks like the same thing I described. Note that you gotta turn off Auto Reduction and Auto Range when comparing. I'm afraid I can't think of a workaround right now... The blending of non-adjacent frames which is used for looping is pretty basic and can't take advantage of velocity or other data that is used for adjacent frame blending using the Velocity or Precise Tracing methods. Until we figure out something smarter, looping simulations will have problems in cases the volume shader depends on a certain data interval - like most fire setups. The only thing I can advise right now would be to try different render settings - especially if you have a very jagged fire curve, try straightening it out.

                  Svetlin Nikolov, Ex Lead Phoenix developer

                  Comment


                  • #10
                    Ah thats a shame - Its soooo close to being perfect! I appreciate the help though

                    Comment


                    • #11
                      Just thinking about this some more, but would it be possible to have the option added to do a simpler form of blend on the looping section - like more of a cross-fade - as opposed to a complex interpolation of velocity between frames. This would at least provide an alternative way of blending that may in some situations be sufficient...?

                      Houdini has a nice way of blending between voxel data that does just this as shown in this video https://www.youtube.com/watch?v=FmzMlh_v7kk at around the 8:50 mark.
                      Last edited by KevHayes; 03-03-2021, 05:48 AM.

                      Comment


                      • #12
                        Sorry, I might not have been clear:

                        - Complex interpolations happen when you do slowing down and you need to blend adajcent frames.
                        - When you loop, the simplest possible interpolation is done, because with non-adjacent frames we can't assume the things we know about adjacent frames.

                        This is why looping interpolation in crappy
                        Svetlin Nikolov, Ex Lead Phoenix developer

                        Comment

                        Working...
                        X