
françois leroy
Enthusiast
françois leroy
Enthusiast
Activity
Oct 29, 2021
07:54 AM
1 Upvote
Hi, I'm a After Effects plugin developper, and one of my clients is having the same issue. He's working on Mac and have a clean install of AE and ME. ME is stuck since he's been installing one of my plugins, which is running just fine in AE. He can export without a problem from AE, but not from ME. ME opens, but doesn't render. Instead it runs the 'Dynamic link connection' window for ever. I guess ME cannot scan my plugin properly, but I can't be sure... It worked fine with previous versions, and it works with all my other clients (a lot), either on Mac or Windows, and of course on my machines. Do you see any reason it can happen on a specific machine? And of course, do you have any fix for this issue? Thanks in advance, François
... View more
Aug 06, 2019
07:31 AM
It's normal that they are smoothed. But you should be able to set the tension anyway... What do you get when you read the tangent / vertex values?
... View more
Aug 06, 2019
07:02 AM
Can you explain what didn't work when you tried it before? Cos' there's something I don't really understand: when you use rotobezier, you can still adjust the smoothness for each vertex, right? So what happened when you've set them to 0? Also, before writing your tangents, did you try reading them, see their value? It could give you a clue... Cheers, François
... View more
Aug 04, 2019
08:08 AM
Hi, if I remember correctly, RotoBezier work just like classical bezier, except that the In/Out tangents are always aligned and have the same "smoothing" (in fact, distance form the vertex) So, to get sharp vertices, you can simply set tangents X/Y to 0. Cheers, François
... View more
Jun 21, 2019
05:06 AM
Well, I don't know any other way. If you want to get something, you have to send it first...
... View more
Jun 18, 2019
03:12 AM
Hi, 1.To grab the layer result after some of the effects are applied, you could make a plugin that you apply to your layer right after the last wanted effect. The plugin can grab the result and send it to another plugin (see communication between plugins...) 2.Same principle, but this time, I would add an adjustment layer right above the desired layer, and have a similar plugin grabbing the result and sending it where you need it. But be careful with this kind of jobs: you'll have to deal with render order, image caching... On the paper, it works just fine, but in reality, you'll have to force render to fight AE's caching system. It's doable, but it's a lot of work, so, make sure what you want to achieve is worth it... Cheers, François
... View more
Apr 11, 2019
12:17 AM
Glad it works! 🙂
... View more
Apr 10, 2019
02:50 AM
I understood "Do stuff..." as filling the output with a part of the checked out layer. If not, you're right, it will be overwritten every time. Seems the answer lies inside the "do stuff" mystery 😉
... View more
Apr 10, 2019
02:34 AM
1 Upvote
Hi Richard, Hi Toby, I remember checking out a single layer parameter at different times and having no crash... Even without using a different 'checkout' variable. But in this case, I think the issue happens cos' the checkout variable is 'dirty'. The code should look like this: for (i=0;i<5;i++) { AEFX_CLR_STRUCT(checkout);//NEW line here ERR(PF_CHECKOUT_PARAM( in_data, LAYER_DISK_ID, in_data->current_time+i, in_data->time_step, in_data->time_scale, &checkout)); Do stuff... ERR2(PF_CHECKIN_PARAM( in_data, &checkout)); } Hope it helps, François
... View more
Apr 06, 2019
01:54 AM
As far as I've used them, they're reliable... And yes, they're called immediately. When you receive them, you can even choose to work before or after AE does.
... View more
Apr 06, 2019
01:24 AM
You're right, I missed the point here... Did you try to add a CommandHook, to see if different cmd is triggered when duplicating / creating lights? If the cmd is different, it'll be easy to fix. Otherwise, there is a possible workaround, but I don't know if it fits your needs: the lights used by your plugin could be parented (to the layer using the effect, or to a 3D null that you create) or even have a "pseudo parenting", like an expression linking a property (your color alpha?) to your main layer. Then, duplicates will keep the link, while newly created lights won't... Hope it helps this time 😉 François ps: Hi Shachar! Long time no see 🙂
... View more
Apr 05, 2019
02:48 AM
Hi, bumping into the discussion here, I love interrupting ;-)... Since you have an Idlehook, why don't you check your lights and see if light's alpha = light's ID? Cos' even if the alpha is "duplicated", the ID isn't... Cheers, François
... View more
Mar 12, 2019
09:11 PM
Make sure {10,10} is inside the range of available pixels (smaller than the size of the layer) and make sure check.u.ld is valid (and not checked in yet!). Also, the example only works in 8 bits (for 16 bits replace PF_Pixel by PF_Pixel16, same for 32 bits...), so make sure your project is 8 bits for now... Cheers, François
... View more
Mar 12, 2019
08:29 PM
Hi, the way I use OpenGL is like this: -I create only one context for the plugin. -each thread of each instance of the plugin activates this context at the beginning of the render thread and deactivates it at the end. -when I'm done with the plugin (closing AE, most likely...), I destroy my context. So, what it means is AE uses the same context whatever the thread or instance, it just draws on it, grab the pixels and let it hanging there for later use. I didn't get any issue so far, so I would say it must work 🙂 Cheers, François
... View more
Mar 12, 2019
08:27 PM
Here's a function that works for sure, in 8bits: PF_Pixel getPixel(PF_EffectWorld* inputP, const A_long x, const A_long y) { return = *((PF_Pixel *)((char*)inputP->data + (y * inputP->rowbytes) + x * sizeof(PF_Pixel ))); } And you would use it like this (to get the pixel data at 10,10): PF_Pixel myPixel = getPixel( &check.u.ld, 10, 10); Now, you can read it's red value with myPixel.red.
... View more
Mar 12, 2019
08:13 PM
Hi Richard, you've done almost all the work there. PF_EffectWorld is a canvas of pixels. So, once you have your check.u.ld you can access its pixels, either through iterations suites, or directly. What you'll get is pixel data, it means alpha, red, green and blue values for a particular pixel. You won't get 'the red channel' of the EffectWorld. If you want to act on the whole red channel, you have to go through iteration suites and modify the red value of each pixel... For example, if you want to divide the red channel by 2 like this "myPixel->red *= .5;" the iteration will go through all the pixels, one by one, and multiply its red value by .5. You can check this thread for more details on how to access pixels directly: Re: Get Pixel Value from Layer Parameter and Arbitrary XY Coordinates Cheers, François
... View more
Nov 25, 2018
10:52 PM
Oh, you're right, I made a mistake. It multiplies to stay in the range 0 - 65535, not 0 - 32768... It is the accepted range with OpenGL, like described here: graphics - What is the correct way to sample a 16-bit height map in OpenGL - Stack Overflow But I must say I gave up on 16 bits... I just convert my 16 bits textures to 32 bits. The web is full of 16 bits related issues, and I don't understand a half of what they say 😉
... View more
Nov 25, 2018
08:59 PM
1 Upvote
Hi guys! OpenGL 16 bits is a bit weird... Or at least doesn't work like AE's 16 bits. So in the Glator sample, the 16 bits texture is just converted to "floats" (not really, cos' you can't have overbrights...) and then converted back to 16 bits when everything's done. From what I can remember, texture is written as 'half-floats'. That's why there's the 1.99999 multiplication, so it stays inside the 0 - 32768 range. Cheers, François
... View more
Oct 02, 2018
02:18 AM
1 Upvote
Hi! You could also take a deeeep breath and jump into OpenGL... That's what Trapcode's Tao and most of Bao plugins use. It's a real nightmare in the beginning, then you see a lot of possibilities and can have a lot of fun. And then it's a nightmare again 😉 You can start with the GLator sample plugin, and have a look at the related threads on this forum. Cheers, François ps: glad you like Mask 3D Warper !
... View more
Sep 29, 2018
07:12 AM
Thanks for the reply, but nope. All the other apps installed in french without any issue (including other versions of AE!), only AE CC 2015 doesn't. I've already tried uninstalling / re-installing, I've checked French language is on in CCloud app, checked for ae_force_english.txt which was already deleted...
... View more
Sep 29, 2018
03:40 AM
Bonjour, j'ai essayé d'installer After cc 2015 en français plusieurs fois et à chaque fois l'application est en anglais. J'ai vérifié dans les préférences de Creative cloud, l'option 'langue de l'app' est bien en français. De plus, toutes les autres applications que j'ai installées sont bien en français... Si vous avez une solution pour pouvoir forcer la langue de l'anglais vers le français, merci d'avance .
... View more
Aug 10, 2018
04:57 AM
Unfortunately not... The only way to modify masks, if you want to avoid expressions, is the way I wrote BAO Mask Avenger 2 - aescripts + aeplugins - aescripts.com It bakes the mask path, and it was a nightmare to make it "almost realtime". Sorry, no good news
... View more
Aug 10, 2018
01:33 AM
For all my plugins, I use the same code, that generates a random name based on current date (including milliseconds). This way, as windows are created at different times, I'm sure they use different names. Cheers, François
... View more
Aug 09, 2018
03:42 AM
Hi! the latest GLator is better that the old one, though it's not perfect. Toby's right, it used to misuse contexts and lead to troubles... But I think a quick fix, in your case, would be to give a new name when you create your OpenGL window (look into GL_base.cpp). In my own OGL structure, I give a random name, so I'm sure 2 plugins will never use the same name. Cheers, François
... View more
Jun 28, 2018
01:37 PM
Thanks Shachar! I never understood what PF_OutFlag2_I_MIX_GUID_DEPENDENCIES was here for... I guess it's time to give it a try! Cheers, François
... View more
Jun 04, 2018
02:58 AM
Hi, your code looks correct... I don't think the problem is here. Is your mask animated? From what you describe, I would say no. So, PF_PathVertexInfo probably gives you the path at the right time (which is the same value than at time 0), but you seem to expect the path + the position at local time. In that case, you should get the layer matrix and multiply the path info with the matrix. Hope it helps, François
... View more
Apr 28, 2018
05:22 AM
Hi, I have a plugin that handles its own motion blur calculation (like the Puppet tool does). Everything works fine, I can check AEGP_CompFlag_ENABLE_MOTION_BLUR at render time so users can play with it just like any other layer. The only issue I have is: _If AEGP_LayerFlag_MOTION_BLUR is disabled, which is the option I chose now, AE doesn't compute motion blur on this layer and I can render my own motion blur. BUT, I don't get a render call when AEGP_CompFlag_ENABLE_MOTION_BLUR is modified, and AE caches wrong data. _If AEGP_LayerFlag_MOTION_BLUR is enabled, AE computes motion blur as it should and triggers a rerender when AEGP_CompFlag_ENABLE_MOTION_BLUR changes, but my own motion blur is just added to AE's one, which is not good. So, is there any way to either have AEGP_LayerFlag_MOTION_BLUR enabled but tell AE not to render motion blur on this layer, or to get a render call when AEGP_CompFlag_ENABLE_MOTION_BLUR is modified? I still can check the flag at idle time, but then I have to keep track of active comp, the layer index and the effect index... And even so, to force re-render, I would have to change a hidden parameter value, and that would invalidate all the cached data for nothing. Any idea? Thanks, François
... View more
Apr 16, 2018
04:07 AM
Probably, but then I would need to cancel the render, resize and re-render... Just like I do now. Finally, writing the infos is better for me than the progress bar, as it's more accurate. Also, now, I can easily implement a 'stop' in the calculation if user presses 'esc'.
... View more