7 Replies Latest reply on Jun 29, 2012 11:04 AM by Mylenium

    Is there a limited range for the Offset (Turbulence) attribute?


      Hi.  I'm animating the Offset (Turbulence) attribute of the Turbulent Displacement effect, having it increase over time through a 4 minute animation, and I'm finding that some of my layers end up not animating either at the start or the end of the animation, and I suspect it may be because the value is going outside of some limited range the attribute may have (on the negative and positive sides).


      So, I'm wondering if the Offset (Turbulence) attribute (for both the Turbulent Displacement effect, and all other effects that have that attribute) does have a limited range it can't go beyond.


      What is really strange is that before I render it, I do a preview, and it seemed fine throughout... but in the final render, some layers will stop (again, either at the start or end), but be animating through the rest of the animation.


      One other theory (although one I really can't see being valid) is that it's a memory thing?... only because the preview shows it fine, but the full res, high quality render has it stopping.


      I'm running CS5.5 on an i7 Win7 with 12 gigs of RAM.


      I'm going to continue trying various starting points to see if I can get it to stay within the range (assuming there IS a limited range).


      Any theories, info, suggestions would be appreciated.  Thanks!

        • 1. Re: Is there a limited range for the Offset (Turbulence) attribute?
          Mylenium Most Valuable Participant

          All values in AE have a limit - or any software on that planet, for that matter. This is the same issue as explained here, meaning there is only so many discrete values you can express with double-precision integers or even floats. So yes, eventually things will just stop, depending on what you actually do. The result would be consistent and predictable, though, so verify the numerical readouts, not just the visual result.



          • 2. Re: Is there a limited range for the Offset (Turbulence) attribute?
            Rick Gerard Adobe Community Professional & MVP

            If the results of a render are different than a ram preview you've got a cache problem. Try purging all caches before the render. Also, you should test to see if the ram preview is different with open GL turned off or on in the Comp panel. Make sure that you are not using OPEN GL for rendering (preference setting)

            • 3. Re: Is there a limited range for the Offset (Turbulence) attribute?
              Laer2 Level 1

              Ya, that's what I figured, but I'm wondering what that value actually is.  I'm starting off at negative values to effectively double my range (assuming that the attribute's range is equal in the negatives as it is the positives), but having found a working offset just yet.... Close, but not enough to get it through the whole animation.  I was originally using the expression time*300 for the x value of the Offset (Turbulance), but have since been trying offsets like 25000-(time*300), to utilize negative values to extend the previous range (which was only using positive numbers).


              So, according to that article, the range (for many attributes) is 30000, correct?  That seems to be about what I'm finding, with my trial and error experiements.



              I still don't understand why the previous shows it animating fine, yet the render gives different results... aside from memory being a factor, which I can't imagine (but, nonetheless, it might still be a factor).  Any ideas?  (Just curious, as it looks like I'm zeroing in on the correct offset as I write this anyway... and that article confirmed that it seemed to be around 30000).

              • 4. Re: Is there a limited range for the Offset (Turbulence) attribute?
                Laer2 Level 1

                I'll look into the cache thing too, Rick.  Thanks.

                • 5. Re: Is there a limited range for the Offset (Turbulence) attribute?
                  Laer2 Level 1

                  UPDATE: Ya, my latest offset seems to have hit it... at least in a low res test render.  Since I know now from the article that -30000 to 30000 is likely the range, I can just watch the values and make sure they don't go beyond that.  I'll test the cache thing next, just more out of curiousity, since I'm assuming that it'll render fine now.


                  I have an odd habit of figuring things out just as I finish posting a question!  Anyway, thanks for your help.  I'll think it should be fine now.

                  • 6. Re: Is there a limited range for the Offset (Turbulence) attribute?
                    Laer2 Level 1

                    Damn... still having issues with it.


                    Additional question related to this.  I've tried creating an expression (on the Offset (turbulence) attribute to reset the value if it goes beyond the range, but there's some issue with one part of it, and I'm not sure what the proper syntax is (and can't find any reference in the help and online):


                    temp = -2500 + time*300;
                    if (temp>25000) temp = time-20000;


                    The logic seems to work if I set the second line to ' if (temp>25000) temp = 20000; ', but it doesn't work if I do the time-20000 thing... so I'm wondering if I'm using the wrong syntax to say temp = temp-20000;


                    A simple solution would be for me to reduce the *300 in the first line to something smaller, thus keeping it within the range, and not requiring the other code... but that results in motion that is too slow for what I'm after.  So, I'm trying to make it reset when it hits the high limit.


                    Can anyone point out the error in my syntax?  Thanks

                    • 7. Re: Is there a limited range for the Offset (Turbulence) attribute?
                      Mylenium Most Valuable Participant

                      Your syntax is sloppy. Conditionals' functions belong into sway braces and you need to provide a secondary fallback, if the condition is not met. In your case it simply takes time as the only variable/function and that condition is of course never met. That is also the problem for your subtraction - you are subtracting 20000 seconds, not frames. A code that at least works could look like that, though the actual result is pretty nonsensical and won't solve your issue, since there is no relation to the motion after you have evaluated the conditional:


                      temp = -2500 + time*300;


                      if (temp>25000)

                      {temp = time-framesToTime(20000);}






                      Therefore something that is 100% watertight would have to be something like this:


                      if (time*300 > framesToTime(25000))

                      {temp = time-framesToTime(20000);}