Return-Path: Received: from mail-wi0-f181.google.com ([209.85.212.181] verified) by media-motion.tv (CommuniGate Pro SMTP 4.2.10) with ESMTP-TLS id 5228016 for AE-List@media-motion.tv; Wed, 25 Sep 2013 15:45:51 +0200 Received: by mail-wi0-f181.google.com with SMTP id ex4so5555190wid.14 for ; Wed, 25 Sep 2013 06:46:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :content-type; bh=hydJbA3l9TVBD8VLBDJHHWOIeeKzidKm+FYbLn9tdzg=; b=uIhmIX/d3W0P1MTbOOiSq9R2zIbBYCBfaFF59O0l3CzQPRSA30F3RMEDHkx88SPoI6 x5djsxCKQnwxIia+wDQjpQPZfTO0nZ+Q12K6HSb1W90wxOyCr4B6xcPKIFwniWGXDMge p5CtKMUbMZonFhlT79aPhmWuEucl+BB/rruGc0r1PjXxGicjtN+KiChphqBUPOChCThA SEPeVawsLN9XWyB3nfM82RbwCQncpAP7Fp8OeUv29um7Kqh4PfyG2NRkIevjRMAs9pL9 fmhp0nJ6mqUmXbm6+C2gmbkFSB1A3OubLDbUxNvigCfWnLojnPZOElcfcszCKk/aEIs2 Ku8g== MIME-Version: 1.0 X-Received: by 10.180.79.163 with SMTP id k3mr7271409wix.25.1380116763497; Wed, 25 Sep 2013 06:46:03 -0700 (PDT) Received: by 10.217.7.71 with HTTP; Wed, 25 Sep 2013 06:46:03 -0700 (PDT) In-Reply-To: References: Date: Wed, 25 Sep 2013 14:46:03 +0100 Message-ID: Subject: Re: [AE] Inertial bounce expression keeps being disabled randomly... From: D To: After Effects Mail List Content-Type: multipart/alternative; boundary=f46d043d65576fe1f704e73579e1 --f46d043d65576fe1f704e73579e1 Content-Type: text/plain; charset=ISO-8859-1 Yes, was guessing that. Too many instances to replace with an upcoming deadline though so quick fixing with the aid of your script for now. On 25 September 2013 14:35, Lloyd Alvarez wrote: > The expression will keep failing unless you account for that divide by > zero error. > > > On Wed, Sep 25, 2013 at 9:23 AM, D wrote: > >> Thanks Lloyd. Funnily enough, I just found your script 'Activate Disabled >> Expressions'. I purged all memory then applied the script. Emptying the >> memory seems to allow them back on. Great script. Next time I get a mass >> disablement I'll try your solution. >> >> >> On 25 September 2013 12:35, Lloyd Alvarez wrote: >> >>> As the error suggests, it gets disabled because it tries to divide by >>> zero.. Most probably because you are in negative time due to this: t = >>> time - key(n).time; >>> >>> You can protect against that in several ways but here's a quick cheeky >>> way: >>> >>> amp = .1; >>> >>> freq = 2.0; >>> >>> decay = 12.0; >>> >>> n = 0; >>> >>> if (numKeys > 0){ n = nearestKey(time).index; >>> >>> if (key(n).time > time){ n--; >>> >>> }} if (n == 0){ t = 0; >>> >>> }else{ t = time - key(n).time; >>> >>> } if (n > 0){ v = velocityAtTime(key(n).time - >>> thisComp.frameDuration/10); >>> d= Math.exp(decay*t); >>> if ( d == 0 ) d= 0.0001; >>> >>> value + v*amp*Math.sin(freq*t*2*Math.PI)/d; >>> >>> }else{value} >>> >>> >>> Cheers, >>> Lloyd >>> >>> On Wednesday, September 25, 2013, D wrote: >>> >>>> ...confusingly, the expression will sometimes continue to work on other >>>> layers in the same comp on both position and scale parameters whilst some >>>> get disabled. >>>> >>>> >>>> On 25 September 2013 10:40, D wrote: >>>> >>>>> Hi >>>>> >>>>> The expression I'm using looks like this: >>>>> >>>>> amp = .1; >>>>> >>>>> freq = 2.0; >>>>> >>>>> decay = 12.0; >>>>> >>>>> n = 0; >>>>> >>>>> if (numKeys > 0){ n = nearestKey(time).index; >>>>> >>>>> if (key(n).time > time){ n--; >>>>> >>>>> }} if (n == 0){ t = 0; >>>>> >>>>> }else{ t = time - key(n).time; >>>>> >>>>> } if (n > 0){ v = velocityAtTime(key(n).time - >>>>> thisComp.frameDuration/10); >>>>> >>>>> value + v*amp*Math.sin(freq*t*2*Math.PI)/Math.exp(decay*t); >>>>> >>>>> }else{value} >>>>> >>>>> >>>>> It works most of the time then will randomly get disabled across lots >>>>> of layers and will not allow me to re-enable until I've restarted AE >>>>> (v5.5). This is the error: >>>>> >>>>> >>>>> -- >>>>> >>>>> >>>>> After Effects warning: invalid numeric result (divide by zero?) >>>>> >>>>> Expression disabled. >>>>> >>>>> >>>>> Error occurred at line 10. >>>>> >>>>> Comp: 'XXX' >>>>> >>>>> Layer 17 ('XXX') >>>>> >>>>> Property: 'Scale' >>>>> >>>>> >>>>> -- >>>>> >>>>> >>>>> I have no real knowledge of how expression code works. I cut and paste >>>>> when I use them. The project is 4 minutes long and the expression occurs >>>>> across many comps and typically as the deadline approaches the error is now >>>>> cropping up often. Any help appreciated. >>>>> >>>>> >>>>> Thanks. >>>>> >>>> >>>> >> > --f46d043d65576fe1f704e73579e1 Content-Type: text/html; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable
Yes, was guessing that. Too many instances to replace with= an upcoming deadline though so quick fixing with the aid of your script fo= r now.=A0


On 25 September 2013 14:35, Lloyd Alvarez <lists@aescripts.com&g= t; wrote:
The expression will keep fa= iling unless you account for that divide by zero error.


On Wed, Sep 25, 2013 at 9:23 AM, D <dow.hanson@gmail.com> wrote:
Thanks Lloyd. Funnily enoug= h, I just found your script 'Activate Disabled Expressions'. I purg= ed all memory then applied the script. Emptying the memory seems to allow t= hem back on. Great script. Next time I get a mass disablement I'll try = your solution.


On 25 Septemb= er 2013 12:35, Lloyd Alvarez <lists@aescripts.com> wrote:<= br>
As the error suggests, it gets disabled because it tries to divide by zero.= . Most probably because you are in negative time due to this:=A0t =3D time - key(n)= .time;

<= /span>
You can protect against that in several ways but here&#= 39;s a quick cheeky way:

amp =3D .1;

freq = =3D 2.0;

decay =3D 12.0;

n= =3D 0;

if (numKeys > 0){ n =3D nearestKey(time).index;

if (key(n).time > time){ n--;

}} if (n =3D=3D 0){ t =3D 0;

}else{ t =3D time - key(n).time;

} if (n > 0){ v =3D velocityAtTime(key(n).time - thisComp.frameDuration/= 10);

d=3D=A0Math.exp(decay*t);
if ( d =3D=3D 0 ) d=3D 0.0001;

=A0value + v*amp*Math.sin(freq*t*2*Math.PI)/d;

}else{value}


Cheers,

<= /span>
Lloyd
=
On Wednesday, September 25, 2013, D wrote:
...confusingly, the expression will sometimes continue to = work on other layers in the same comp on both position and scale parameters= whilst some get disabled.=A0


On 25 September 2013 10:40, D <dow.hanson@gmail.com= > wrote:
Hi

The expression I'm using looks l= ike this:

amp =3D .1;

= freq =3D 2.0;

= decay =3D 12.0;

= n =3D 0;

= if (numKeys > 0){ n =3D nearestKey(time).index;

= if (key(n).time > time){ n--;

= }} if (n =3D=3D 0){ t =3D 0;

= }else{ t =3D time - key(n).time;

= } if (n > 0){ v =3D velocityAtTime(key(n).time - thisComp.frameDuration/= 10);

= value + v*amp*Math.sin(freq*t*2*Math.PI)/Math.exp(decay*t);

= }else{value}


It works most of the time then will randomly get disabled across lots of la= yers and will not allow me to re-enable until I've restarted AE (v5.5).= This is the error:


--


After Effects warning: invalid numeric result (divide by zero?)

Expressi= on disabled.


Error occurred at line 10.

Comp: 'XXX'

Layer 17 ('XXX')

Property: 'Scale'


--


I have no real knowledge of how expression code works. I cut = and paste when I use them. The project is 4 minutes long and the expression= occurs across many comps and typically as the deadline approaches the erro= r is now cropping up often.=A0Any help appreciated.

=

Thanks.





--f46d043d65576fe1f704e73579e1--