
françois leroy
Enthusiast
françois leroy
Enthusiast
Activity
Sep 19, 2016
04:40 AM
1 Upvote
At first, it seems OK. The main question is what happens to giP variables when they go through 'easeValues()'? Are they modified? You can check that... Also, why don't you define giP.eT, giP.eB, giP.eC and giP.eD before sending them for iteration (right after AEFX_CLR_STRUCT())? This way you avoid re-assigning values for every single pixel. And the last thing, why do you check with 'if (giP)' ? You can try removing this one (anyway you assign values to its variables before checking it, so you already assume that it's fine to work with) Hope it'll help! Cheers, François
... View more
Sep 18, 2016
08:53 AM
1 Upvote
Then, I would say it's a variable initialisation problem. You define giP before sending it to your iteration function, right? Do you assign values to its variables at that time? And how do you pass the data?
... View more
Sep 15, 2016
03:22 AM
1 Upvote
the FIX_2_FLOAT() MACRO is there to convert Fixed point values (here probably a point parameter?) to flaot point value. There's something you can try: _if you write into the output directly, try to clear it before (ERR(PF_FILL( output, null, null));) _in your iteration function, do you draw the line only, or do you fill the rest with black (or transparent)? I think your code should look like this: if (y = mx+c) { fill with white } else { fill with black (or transparent or whatever) } If it still doesn't work, can you post a bit more of your code? It would help finding the solution... Cheers, François
... View more
Sep 04, 2016
03:41 AM
In this case, it must be in the algorithm (it's pretty simple though...) May be some rounding issue? X and Y are longs, right? You could try converting them to doubles before calculation... Cheers, François PS: if you want an example on how to work directly in RAM, you can check the CCU sample effect. It shows how to deal with PF_PROGRESS too.
... View more
Sep 02, 2016
02:24 AM
Hi, are you using an iteration suite? Or do you access ram directly? If you're working with ram, you probably need to use PF_ABORT and / or PF_PROGRESS to handle interruptions. If you're using iteration suites, AE will do it for you. Cheers, François
... View more
Sep 02, 2016
02:02 AM
Oh, I didn't know we could tell visual studio to do it for us. Cool! 😉
... View more
Sep 01, 2016
08:13 AM
Hi, you can check (for project AND associated .cpp files): C/C++ preprocessor / preprocessor definition and replace _DEBUG by NDEBUG (Not sure about the exact names for 'preprocessor and preprocessor definition, I use a french version...) Cheers, Francois
... View more
Aug 26, 2016
02:41 AM
2 Upvotes
Hi, angle params return a 'Fixed' value. So if you want to convert it to float, you do have to divide it or just use the FIX_2_FLOAT macro like this. myAngleInDegrees = FIX_2_FLOAT(params[myAngle]->u.ad.value); And if you need it in radians (your function using cos and sin probably need it), multiply it by PF_RAD_PER_DEGREE Cheers, François
... View more
Aug 24, 2016
01:28 AM
2 Upvotes
instead of removing the star* from the function, you should add & when you use it, like this: PF_PixelFloat testPixel = getPixel( &id->layer, 10, 10); Cheers, François
... View more
Aug 23, 2016
07:31 AM
1 Upvote
Well, I got it from Toby 😉
... View more
Aug 23, 2016
06:00 AM
2 Upvotes
Hi, if you go the suites way, you can try PF_SAMPLINGSUITE and subpixel_sample. The manual way would be: PF_PixelFloat getPixel(PF_EffectWorld* inputP, const A_long x, const A_long y) { return = *((PF_PixelFloat *)((char*)inputP->data + (y * inputP->rowbytes) + x * sizeof(PF_PixelFloat ))); } so with a pixel at [10,10], you'll get: *((PF_PixelFloat *)((char*)inputP->data + (10 * inputP->rowbytes) + 10 * sizeof(PF_PixelFloat ))); } Cheers, François
... View more
Aug 23, 2016
05:54 AM
Hi, the circle you see if probably done via an iteration function, writing in the output. it would look like this (pseudo code): if (hypot(x-center.x, y-center.y) < radius) { output.alpha = PF_MAX_CHAN8; // 8 bit } else { output.alpha = 0; } Cheers, François
... View more
Aug 09, 2016
03:49 AM
Hi Yuri, you can use AEGP_EffectCallGeneric. You can pass any data, so your effect version can be part of it. You can check this thread for details: Architecture advice for Effect and AEGP communication Cheers, François
... View more
Aug 08, 2016
09:38 AM
Hi! You should check in_data->version And here's what says the documentation: For even more precise version checking, a plug-in can run a script using AEGP_ExecuteScript, querying one of the following attributes: app.version - e.g. 11.0.1x12 app.buildNumber - e.g. 12. Hope it helps, François Edit: oops, I just realise you're talking about effect's version, not AE version... I think effect versioning is up to the author, I'm not even sure you actually need to include any version data... What are you trying to achieve? Cheers, Francois
... View more
Aug 05, 2016
10:04 AM
Well, if you're calling your data from the same call each time (render), I don't see any need for flattening unflattening. Troubles come when you use the same data in different calls. You can have a look at this one: Sequence_data different in PF_Cmd_RENDER and PF_Cmd_USER_CHANGED_PARAM See? I've been bothering everyone with my vectors 😉 Cheers, François
... View more
Aug 05, 2016
07:54 AM
In fact, if you want to flatten / unflatten, you don't need to have an array in your sequence data. You should have a look at this thread: Using std::vector in sequence_data Toby litterally saved my life on this one! Cheers, François
... View more
Aug 04, 2016
08:31 AM
Hi Christian, I'm using vectors quite often and didn't have any problem. But the headaches come if you want to share vectors between calls using SequenceData... You'll have to handle flattening unflattening process. Doable, but you loose the simplicity of vectors... Cheers, François
... View more
Aug 03, 2016
06:02 AM
1 Upvote
Hi, if you want something close to "Pixel Bender", you should have a look at the Iteration suites (in the documentation). Cheers, François
... View more
May 18, 2016
08:11 AM
A lot more fun to come! 😉
... View more
May 18, 2016
07:39 AM
Wow, it works!! Thanx a lot, I was totally lost in the new architecture... I've set PF_OutFlag_FORCE_RERENDER during UserChangedParam. It does change the behaviour, but not the way I thought... 1_UserChangedParam is called. I get some sequence_data, different from the one I got in the Render call before. In my case, it's ok, as I don't need to read the data, only to write it... But I wonder how we can do if we want to read it? I change this sequence_data (resetting it in my case) 2_GetFlattenedSequenceData is called, not less than 5 times (!!!) 3_SequenceFlatten is called 4_SequenceResetup is called 5_Render is finally called and I get the right sequence_data Is it me, or is it a bit complicated just to pass some data from one call to the other? I mean, flattening 6 times and unflattening 1 more time... And what about this (from the SDK) : "Once we have the full set of APIs in place needed to manage render state, we will be able to deprecate FORCE_RERENDER" I don't really get it... But it works! Thanks Shachar! Cheers, François
... View more
May 18, 2016
05:49 AM
Hi Shachar, glad you're here! 🙂 In fact, my FX is a particle plugin, and I store previous frame's data, in order not to re-compute everything. I have 2 types of parameters: 1_parameters that actually modify the physics (I set a Supervise flags on these) 2_parameters that modify only the look of the particles Then, when I change one of these physics parameter, I get a UserChangedParam call, where I clean up the sequence data to start again from zero... And of course, for cosmetic changes, I keep my data. What do you mean by 'force the sync.' ? Is it possible? Cheers, François
... View more
May 18, 2016
05:10 AM
Hi all! I have a really anoying issue with in_data->sequence_data and After Effects CC 2015. I'm storing data in Sequence_data. The problem is: I don't get the same data in Render and UserChangedParams... The exact same code works fine with After Effects CS5.5. First, I thought it might be because of the new flattening calls, but I have the same issue even when I first apply my FX and change one parameter value (I don't receive any other call). Did anyone run into a similar issue? Any solution? Cheers, François
... View more
Mar 29, 2016
07:02 AM
1 Upvote
Hi Christian, I would have bet on sequence setup too. What I say probably won't be a great help, but if it happens before Smart_render, then you have only Global Setup and ParamsSetup left... Or UI may be (which could be the difference between CS6 and CC2015)? Try disabling all the calls and re-enable them one by one, it should give you some clues. Sometimes, bugs hide in the most simple tasks... Cheers, François
... View more
Mar 23, 2016
07:08 PM
Well, I"ve started with Pixel Bender, but that was a looooong time ago (Pixel Bender was supported, and I was young and beautiful)... No, all the plugins you see are c++ Cheers, François
... View more
Mar 21, 2016
11:57 PM
Hi Micpen, I'm a french director/animator/developper. You can have a look at some of the plugins I wrote: http://aescripts.com/authors/a-b/bao-plugins/ and the movies I wrote them for: Leroy Lansaque official website If it is the kind of plugins you want to develop, and if you're not in a hurry, I'll be back in Paris in May... You can send me an e-mail directly so we don't fill the forum with personnal stuff 😉 Cheers, François
... View more
Mar 15, 2016
07:28 AM
1 Upvote
Hi everyone, seems the link was broken, so here's a new link to the Windows version: https://www.dropbox.com/s/vwfihacjlcvo8c7/CMD_AEGP.aex?dl=0 Enjoy! François
... View more
Mar 08, 2016
02:51 AM
Well, I don't know anything about singleton... But I do think you shouldn't declare anything outside of functions. Instead, you could declare everything you need during one of the calls (Sequence Setup or re-setup for example, depends on what you need) and store it in sequence data. Then you can access it during other calls. Hope it helps, François
... View more
Mar 07, 2016
10:40 PM
Hi Mike, first idea, may be wrong, but do you use any static values? Could come from there... Cheers, François
... View more
Feb 24, 2016
01:17 AM
That would be real anarchy!
... View more
Feb 24, 2016
12:57 AM
For the record, here's a cleaner answer to my own question: During GlobalSetup: ERR(suites.PersistentDataSuite3()->AEGP_SetData( blobH, "Application Warning Preference Section", "3D esque effect on 3D layer", 1, reinterpret_cast<void*>(00))); It won't change the icon, but at least no warning! But, anarchy was more fun! 😉 Cheers, François
... View more