
françois leroy
Enthusiast
françois leroy
Enthusiast
Activity
Mar 01, 2013
01:50 AM
Hi, no worry, as long as it works for you! It seems I misunderstood what you exactly needed... Cheers, François
... View more
Feb 27, 2013
07:00 AM
So, you have: -'precomp 1' with the same size than 'Main Comp'. -inside 'precomp 1', you have 2 2D layers, lets say 'Layer 1' and 'Layer 2', with no parent. -inside 'Main Comp', 'Layer 1' and 'Layer 2' are parented to 'Controller'. In 'precomp 1', for 'Layer n': anchorPoint: "comp("Main Comp").layer("Layer n").anchorPoint;" position : "comp("Main Comp").layer("Layer n").toComp(anchorPoint);" I've tested it on my side, it works... If it's not working on your side, you're still hiding something 😉 Cheers, François
... View more
Feb 27, 2013
06:32 AM
Can you give me more precisions? Did you take the option to duplicate the 'Controller'? With your layers attached? Or do you try to get the absolute position of the layers directly? Or did you apply the corner pin effect? Don't be scared to give too much infos... Details can change everything.
... View more
Feb 27, 2013
05:46 AM
Hi, it should work if the anchorPoint has the same value and the comp have the same size. Otherwise, please give me more details to see where issues come from...
... View more
Feb 26, 2013
09:36 AM
1 Upvote
Well, it depends on what you exactly need. If it's only for position, then this should be enough : comp("Main Comp").layer("myLayer's name").toComp(anchorPoint); This will give you the absolute position of your layer. If you need to get all the transformation Matrix, it becomes more difficult. One solution is to apply a Corner Pin effect to your layer, put the layer in the Top Left corner of the composition, and put the following expressions: Top Left Corner: comp("Main Comp").layer("myLayer's name").toComp([0,0]); Top Right Corner: comp("Main Comp").layer("myLayer's name").toComp([width,0]); Bottom Left Corner: comp("Main Comp").layer("myLayer's name").toComp([0,height]); Bottom Right Corner: comp("Main Comp").layer("myLayer's name").toComp([width,height]); Otherwise, you have to get the absolute rotation, scale... But if the parent is scaled, then you can have shearing that you cannot reproduce... Hope it helps, François
... View more
Feb 26, 2013
08:20 AM
Hi! The easy way is to have a copy of your 'Controller' in 'precomp 1'. Your 2 layers will be parented to it. On 'Controller' s position, put the following expression: comp("Main Comp").layer("Controller").position; The same for Scale, Rotation, AnchorPoint, if needed. François
... View more
Feb 24, 2013
10:31 AM
Hi Shachar! Thanx for this solution. I can apply a mask with PF_MaskWorldWithPath (you're right, it's in the Pathmaster). So I guess I can use my Parameters, get a Matrix, and apply it with transform_world(). But the problem here is I can get the result image, but not change the maskPath. (or I can do so afterwards, but we're coming back to the rendering loop). So it works for Geometry transformations (this is already good, at least you saved half of my work!), but not the per-vertex changes... I think the best solution (but I don't know if it's possible), would be to call the script (to change maskShape) BEFORE render. In fact, I call the maskShape transformation with PF_Cmd_FRAME_SETUP, before PF_Cmd_RENDER. I thought render wouldn't be called before PF_Cmd_FRAME_SETUP is done, but I was wrong... Thanx again! François
... View more
Feb 23, 2013
07:52 AM
Well, I have anchorPoint, Position, Scale and Rotation parameters, and I use these parameters to simply apply transformations to maskShape. All the Geometry you can apply to a layer, you can apply to a mask with this effect. I also have another version, with per-vertex transformations. So, the Slave is just the result of the transformed Master. This is really handy, at least if you can render... Cheers, François
... View more
Feb 23, 2013
06:41 AM
Hi Shachar! It seems champagne will stay on its shelf for a while... I was tesing my plugin, trying to force re-render, and I did something I didn't try yet : simply render my composition. And here is the big surprise: my plugin doesn't do anything when AE is actually rendering!!! Here is how my plugin works: It's an effect, applied on a layer with 2 masks. First mask is the Master, 2nd mask is the Slave. The plugin takes the Path value of the Master (vertices, tangents), performs transformation on these values, and applies them to the Slave. There is a render call, only using "PF_COPY", so the maskShape transformation is called for every frame. Transformation is processed by scripting. When I change any of those values (maskShape, transformation), the second Mask is transformed just fine. When I launch a RAM preview, or a spaceBar preview, it also works fine... But nothing happens when rendering (I mean through the render queue). So, even if it's a really good way to make a trial mode on an effect, it's a bit anoying! Could it be because maskShape transformation is performed by scripting? So, it would mean no scripting can be called for actual render... Cheers, François
... View more
Feb 22, 2013
05:47 AM
Hi Shachar! Using the Audio to call Video render... you must have a really twisted mind! 😉 It's a really smart hack, it opens a world of new possibilities... Thanx a lot! Cheers, François
... View more
Feb 20, 2013
10:12 AM
Hi Shachar! I've finished cleaning my code. Can I go out and play ? 🙂 More seriously, I still can't force render. But I don't think the problem comes from the slider. I've tried changing the value of other parameters, by code and by hand, but it seems After Effects is smart enough not to process anything if opacity is set to 0. But thanx for the help! Cheers, François
... View more
Feb 18, 2013
06:51 AM
Well, no... But I think there's another issue in my effect... time for code cleaning! I'll let you know when... I understand my own plugin Thanx, François
... View more
Feb 18, 2013
06:04 AM
Hey Shachar! I couldn't fix my problem yet, but for the mask expression, I found a way to get that changing number : instead of "mask("Mask 1").maskPath.value.toSource();" it now works with "mask("Mask 1").maskPath[0];" Do you know where this number comes from? Some path encoding? In which language? Weird... but still there! 🙂 Cheers, François
... View more
Feb 14, 2013
08:36 AM
Smart!!!! Thanx a lot! François Aaaaargh !! It was too beautifull... I don't see any expression that would depend on the maskShape. There is no expression that can access maskShape, except if it's applied on a... maskShape! I tried with maskShape.propertyIndex, or this kind of stuff, but this is fix value, so it doesn't update the render... Any idea?
... View more
Feb 14, 2013
05:47 AM
1 Upvote
Hi! One solution would be to get the xyz value of pointTopLeft, pointTopRight, pointBottomRight via expression : TL = toWorld([0,0,0]); TR = toWorld([width,0,0]); BR = toWorld([0,height,0]); and then use the "AVLayer calculateTransformFromPoints()" method (see aftereffects_scripting_guide for details). Hope it helps! François
... View more
Feb 14, 2013
01:51 AM
Hi Shachar! I have another question for you : I have a plugin that performs maskshape transformation. The transformations are called when the layer is rendered. But I would need to transform my maskshape even if the layer is not rendered. For example, if opacity on my layer is set to 0, or if a bigger layer is above that layer and fully hides it... Is there a way to call my function when my original maskshape is modified (even if it doesn't affect the output of the layer)? If you have a solution, or even the beginning of a clue, it will be a great help! Thanx, François
... View more
Jan 28, 2013
02:05 AM
You're right, I'll try to do the most handy... Thanx again! François
... View more
Jan 27, 2013
09:54 AM
I made it with 2 sliders already, but I'll have a look at the ColorGrid, see if it can look better ! Thanx again for your help! François
... View more
Jan 27, 2013
06:37 AM
Hi Shachar! It's a lot of answers, and it'll take months for me to truly understand them all ! About the extra speed, I don't keyFrame my MaskShape, just SetValue() What I saw is C++ is faster to get Mask Vertices infos, and JS faster to set them (I used the same loops to read / write, so difference must be somewhere else, deeeeeep inside AE) I could'nt tell you why, but it's still good to know, right? 🙂 And something totally different: how do you make a Scale parameter? with a link between x_scale and y_scale, just like Geometry one? I guess I have to make an Arbitrary parameter, but I couldn't find any example... Thanx again! François
... View more
Jan 27, 2013
04:35 AM
Hi Shachar! Thanx for the reply... Well, it seems I did "not so bad", as i don't have to loop through the whole project, but it's still a bit surprising not to be able to access the index. So, for those who need it, here's the process: AEGP_RegisterWithAEGP -> get the plugin's ID AEGP_GetNewEffectStreamByIndex -> get the stream of 1 parameter (no matter which one) AEGP_GetNewParentStreamRef -> get the Effect's stream AEGP_GetStreamName -> get the name (not the matchName) AEGP_LockMemHandle -> store the OldName somewhere AEGP_SetStreamName -> give a new Name Then, you can access your effect by its name with Scripts... And your script can re-send you the Index if you need. Rename your effect with the OldName, and dispose the streams. By the way, I have a few more questions: I've been testing some actions (changing a MaskShape) with Scripting, and directly from AEGP, and it seems scripting is faster. Do Script's engine and Effect's engine run at the same time? And it leads to my 2nd question: is it possible to call ActionScript from an AEGP? Cos' it would be great to have 3 engines running at the same time to get a fast result... And is it possible to call GPU calculations without switching to openGL? That's a lot of questions, but you seem to have a lot of answers! 🙂 Thanx! François
... View more
Jan 25, 2013
08:17 AM
Hi! I have a problem to get an Effect's index. I tried to solve my problem by getting the Effect's name, and it works fine, except if user gives that name twice, so I'm still stucked... How can you return the Effect's index, usable by Script? For example, my effect is the second effect applied on my layer, how can I get this "2" index? I figured out how to get layer's index, comp's unique_ID, but see no reference for effect's index into the SDK documentation... I also tried to iterate with AEGP_GetLayerNumEffects and compare effect_refH, but it doesn't work... Does anyone know a way? Thanx, François ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- I found a work around, by changing the name of my effect, calling it by script with the new name, then re-give the old name, but there must be something more simple... Any idea? Thanx
... View more
Dec 23, 2012
11:49 AM
Hi again! I've been trying to understand how the GLator works, but something's still going wrong... I could switch the context (thanx Dave!) but i still got a problem with the texture coordinates: glBegin(GL_QUADS); //input frame glTexCoord2f(0.0f,0.0f); glVertex3f(-0.5f * aspectF,-0.5f + yOffsetF,0.0f); glTexCoord2f(0.7f,0.0f); glVertex3f(0.5f * aspectF,-0.5f + yOffsetF,0.0f); glTexCoord2f(0.7f,0.46f); glVertex3f(0.5f * aspectF,0.5f + yOffsetF,0.0f); glTexCoord2f(0.0f,0.46f); glVertex3f(-0.5f * aspectF,0.5f + yOffsetF,0.0f); glEnd(); where do the TexCoord2f values come from? why 0.7 and 0.46? I tried to change thoses values to 1.0, 0.5, disabled the perpective, but i can't make the texture match the quad... Any help? Sorry for such a beginner's question... Thanx, François
... View more
Dec 21, 2012
08:50 AM
Ok, no luck... Thanx anyway!
... View more
Dec 21, 2012
01:58 AM
Hi Todd, I use several versions, from CS4 to CS6, as i'm working for different people... I saw the initialization is quicker in CS6. Do you think there is a way to skip or delay it in CS4 and/or CS5? I'm working on a script that imports a lot of .aep in one project, then make a lot of stuff with these files, but this initialization takes more time than all the rest of the script... Thanx for your help! Francois
... View more
Dec 20, 2012
09:31 AM
Hi! Is it possible to skip the "Presets initialization" (i'm not sure about the exact sentence in english, i'm working on french version, sorry..) when importing .aep files? Or just to delay it so it happens only when everything is imported? Thanx! Francois
... View more
Dec 13, 2012
01:49 AM
Hi Dave, thanx a lot for these infos. I have to go deeper into the openGL itself. I think i took bad habits from Pixel Bender, where coding is soooooo simple... About Premiere, i can only wish you good luck Cheers, Francois ("jkhgsruigh" isn't my real name
... View more
Dec 12, 2012
01:29 AM
Hi! I was afraid you'd say that... I'm trying to write my own too, but it's a really hard work! Thanx anyway! Francois
... View more
Dec 08, 2012
08:34 AM
OK, thanx anyway!
... View more
Dec 08, 2012
08:22 AM
Hi Shachar, thanx for your answer. I already tried to follow the instructions in this discussion, but i'm missing something in the beginning: I cannot find where we define the context. Let me precise: it seems DaveProx's way is : [[myOpenglView openGLContext] makeCurrentContext]; glClearColor(0, 0, 0, 1); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glBlendFunc(GL_SRC_ALPHA,GL_ONE); glShadeModel(GL_SMOOTH); glEnable(GL_BLEND); draw_scene(); glFlush(); But i can't find the place to put it in the whole code, cos' i couldn't guess where AE defines it's own context. Can you help? Or do you have a working framework for PC? Thanx for your help! Francois
... View more
- « Previous
- Next »