Return-Path: Received: from atl4mhob17.myregisteredsite.com ([209.17.115.57] verified) by media-motion.tv (CommuniGate Pro SMTP 4.2.10) with ESMTP id 5285001 for AE-List@media-motion.tv; Wed, 13 Nov 2013 21:39:31 +0100 Received: from mailpod.hostingplatform.com ([10.30.71.205]) by atl4mhob17.myregisteredsite.com (8.14.4/8.14.4) with ESMTP id rADKfIkH014106 for ; Wed, 13 Nov 2013 15:41:18 -0500 Received: (qmail 10671 invoked by uid 0); 13 Nov 2013 20:41:18 -0000 X-TCPREMOTEIP: 60.225.197.206 X-Authenticated-UID: chris@chriszwar.com Received: from unknown (HELO ?192.168.0.3?) (chris@chriszwar.com@60.225.197.206) by 0 with ESMTPA; 13 Nov 2013 20:41:18 -0000 From: Chris Zwar Content-Type: multipart/alternative; boundary="Apple-Mail=_88F0FB88-4401-4232-897B-99B9E571CCB1" Message-Id: <53356DF1-A2F0-4526-B09C-2F022CB676EC@chriszwar.com> Mime-Version: 1.0 (Mac OS X Mail 6.6 \(1510\)) Subject: Re: [AE] freeze frame from precomp - expression needed to not get duplicates Date: Thu, 14 Nov 2013 07:41:15 +1100 References: To: "After Effects Mail List" In-Reply-To: X-Mailer: Apple Mail (2.1510) --Apple-Mail=_88F0FB88-4401-4232-897B-99B9E571CCB1 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=windows-1252 Yeah, and randomise the images in the pre comp. I use kinda sorta, but = there are many scripts around to randomise layers: http://www.redefinery.com/ae/view.php?item=3Drd_KindaSorta On 14/11/2013, at 6:04 AM, rendernyc wrote: > which is why using index numbers on consecutive layers to map to the = time of the layers in the precomp is a good way to go. each index will = give you a unique image >=20 >=20 > On Wed, Nov 13, 2013 at 1:57 PM, Byron Nash = wrote: > I've written something like this in script form(Fisher-Yates) although = I did not know it had a name. I can't think of a good way to do it with = expressions without killing the render. It would need to go through many = iterations for each layer on each frame to get it going. I imagine with = 125 layers you would start to get speed issues. >=20 >=20 > On Wed, Nov 13, 2013 at 6:35 AM, Chris Zwar = wrote: > Grrr sorry, I decided to google my own suggestion and discovered I was = wrong. What you need is a Fisher-Yates algorithm: >=20 > http://en.wikipedia.org/wiki/Fisher=96Yates_shuffle >=20 > Luckily there's plenty of examples on the web, and it seems that = writing a script to shuffle cards is a common task given to computer = students, so if you think of your 300+ faces as a deck of 300 cards then = you should be able to google a solution sooner or later. >=20 >=20 > -Chris >=20 >=20 > On 13/11/2013, at 10:23 PM, Chris Zwar wrote: >=20 >> This question has come up before, and I remember someone else = explaining that you will need to use a custom random number generator, = and not just the generic random expression. As you have realised, the = problem with random() is that even though the numbers are random there = is nothing to stop the same number being randomly chosen more than once. >>=20 >> You need to use a "monte carlo" random number expression, which I = don't have and am not sure where you find one. I think the algorithm is = normally used to shuffle a deck of cards, hence the name. I guess when = you want a computer to create a random deck of cards it's important to = know that each card only appears once! >>=20 >> It might be quicker to do it manually. >>=20 >> HTH >> -Chris >>=20 >> On 13/11/2013, at 9:18 AM, Greg Balint = wrote: >>=20 >>> Got a quick one here.. something i'm probably just either not = familiar with, or I'm thinking too hard about it. >>>=20 >>> I've got a large grid wall of squares with people's faces in them. = Each face panel is the same precomp with this expression in the = time-remap attribute. >>>=20 >>> seedRandom(index,true); >>> myFrame =3D Math.floor(random(303)); >>> framesToTime(myFrame) >>>=20 >>> Basically this grabs a random frame from the precomp, which is about = 10 seconds long, and shows it as a freeze frame for that particular = layer. >>>=20 >>> I've got 125 face panels all using this expression, and for the most = part it works wonderfully.. they all have random faces on them, and if I = add another layer, the random seed changes and I get a whole new slew of = faces (which doesn't matter in this instance, but i could see that as a = problem in others) >>>=20 >>> My issue is, even though I've got over 300 frames (each frame with a = new face) in my precomp.. the randomness is grabbing duplicates.. in = some cases 2-3 pairs of duplicates over the course of the 125 it = chooses. >>>=20 >>>=20 >>> Anyone know of a way to append this script so that it does not = choose something it has already? >>>=20 >>> I'd even be fine if there were a way to use an expression to grab = frames sequentially from the precomp and then I could just hand choose = to make sure there's no duplicates in the first 125 frames. >>>=20 >>> I think i might just be overthinking this, but I'm not sure if I've = seen a "check for duplicate and don't use" sort of expression before. >>>=20 >>> thanks in advance. >>>=20 >>> --=20 >>> ///Greg Balint >>> //Art Director / Motion Graphics Designer >>> /321.514.4839 >>> delRAZOR.com/=20 >>=20 >=20 >=20 >=20 >=20 >=20 > --=20 > danny princz >=20 > vimeo.com/rendernyc --Apple-Mail=_88F0FB88-4401-4232-897B-99B9E571CCB1 Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset=windows-1252 Yeah, = and randomise the images in the pre comp.  I use kinda sorta, but = there are many scripts around to randomise layers:


On 14/11/2013, at 6:04 AM, rendernyc <rendernyc@gmail.com> = wrote:

which is why using index numbers on = consecutive layers to map to the time of the layers in the precomp is a = good way to go. each index will give you a unique image


On Wed, Nov 13, 2013 at 1:57 PM, Byron Nash <byronnash@gmail.com> = wrote:
I've written something like this in script = form(Fisher-Yates) although I did not know it had a name. I can't think = of a good way to do it with expressions without killing the render. It = would need to go through many iterations for each layer on each frame to = get it going. I imagine with 125 layers you would start to get speed = issues.


On Wed, = Nov 13, 2013 at 6:35 AM, Chris Zwar <chris@chriszwar.com> wrote:
Grrr sorry, I decided to google my = own suggestion and discovered I was wrong.  What you need is a = Fisher-Yates algorithm:

http://en.wikipedia.org/wiki/Fisher=96Yates_shuffle<= /div>

Luckily there's plenty of examples on the web, and = it seems that writing a script to shuffle cards is a common task given = to computer students, so if you think of your 300+ faces as a deck of = 300 cards then you should be able to google a solution sooner or = later.


<= font = color=3D"#888888">-Chris


On 13/11/2013, at 10:23 PM, Chris Zwar <chris@chriszwar.com> wrote:

This = question has come up before, and I remember someone else explaining that = you will need to use a custom random number generator, and not just the = generic random expression.  As you have realised, the problem with = random() is that even though the numbers are random there is nothing to = stop the same number being randomly chosen more than once.

You need to use a "monte carlo" random number expression, = which I don't have and am not sure where you find one.  I think the = algorithm is normally used to shuffle a deck of cards, hence the name. =  I guess when you want a computer to create a random deck of cards = it's important to know that each card only appears once!

It might be quicker to do it = manually.

HTH
-Chris

= On 13/11/2013, at 9:18 AM, Greg Balint <delrazoraelist@gmail.com> wrote:

Got a quick one here.. = something i'm probably just either not familiar with, or I'm thinking = too hard about it.

I've got a large grid wall of = squares with people's faces in them.  Each face panel is the same = precomp with this expression in the time-remap attribute.

seedRandom(index,true);
myFrame =3D = Math.floor(random(303));
framesToTime(myFrame)

Basically this grabs a random frame from the precomp, which is = about 10 seconds long, and shows it as a freeze frame for that = particular layer.

I've got 125 face panels all using this expression, = and for the most part it works wonderfully.. they all have random faces = on them, and if I add another layer, the random seed changes and I get a = whole new slew of faces (which doesn't matter in this instance, but i = could see that as a problem in others)

My issue is, even though I've got over 300 frames = (each frame with a new face) in my precomp.. the randomness is grabbing = duplicates.. in some cases 2-3 pairs of duplicates over the course of = the 125 it chooses.


Anyone know of a way to append this = script so that it does not choose something it has = already?

I'd even be fine if there were a way = to use an expression to grab frames sequentially from the precomp and = then I could just hand choose to make sure there's no duplicates in the = first 125 frames.

I think i might just be overthinking this, but I'm = not sure if I've seen a "check for duplicate and don't use" sort of = expression before.

thanks in advance.

--
///Greg Balint
//Art Director / Motion Graphics Designer
/321.514.4839
delRAZOR.com/ =
=






-- =

= --Apple-Mail=_88F0FB88-4401-4232-897B-99B9E571CCB1--