Is it possible to retrieve the text justification of a text layer using AEGP suites ?
The jsx equivalent is
var just = layer.property("ADBE Text Properties").property("ADBE Text Document").value.justification;
Thanks
Is it possible to retrieve the text justification of a text layer using AEGP suites ?
The jsx equivalent is
var just = layer.property("ADBE Text Properties").property("ADBE Text Document").value.justification;
Thanks
Hi,
Is there a (safe) way to dynamically add or remove items
from a popup-menu type parameter for an effect plugin?
Thanks.
The windows version of my plug-in was built using SDK 7.0r2, and has AE_Effect_Spec_Version set to 12,12 for (AE 7.0).
It loads and works fine with AE CS3 and AE CS4 (12.13, and 12.14), but the Mac version doesn't.
I've also tried building the examples on a Mac using the 7.0 SDK and they won't load into AE CS4 either.
Is the Mac AE CS4 not loading older plug-ins? (That seems hard to believe).
Is there something else I'm missing on the Mac development side?
Thanks,
Mike
The GLator sample project compiles and runs without any problems on Windows (with or without using shaders). But on the mac(10.6.2) it crashes AE when I am using shaders. I figured "glCreateShaderObjectARB( GL_FRAGMENT_SHADER_ARB );" function call is responsible for the crash. I dont know why. My graphics card supports fragment shaders since it works fine in other programs and stuff. Can someone help me out ?
Thank you.
I continue to have trouble with the licensing software
I am using for my plug-in. Has anyone found a good solutiuon? for an Adobe plug-in?
Hi,
Is there anyway to add comment for layer? I know we can added comment to item using AEGP_SetItemComment.
Thanks,
Suma
Hi There,
As a preface to this question, I have excluded the possibility of solving this with AE scripting. My need is unique in that I do not wish to start an instance of AfterFX.exe with the -s switch just to change one text layer within a comp in a project file. In addition, I want to batch process many--and I mean many--AEP files in a multi-threaded fashion. As such, a script would cause the memory consumption on my system to sky rocket if I had to open a new instance of a AfterFX.exe for each AEP file I wanted to process. So, I am now thinking that I might be able to use the AE SDK and its API to create a program that takes an .aep file as input, change a text layer in that file, then saves that change. Nothing terribly hard, but probably not terribly simple to implement. Essentially, I want to create a command line program (similar to aerender.exe) that analyzes any .aep file, makes a simple change to a comp's text layer, then saves it. Is this possible to do with the API provided by Adobe? I am also willing to compensate an experienced programmer to help me make this simple command line program a reality.
Thank you for your time, help, and consideration!
Much like EMP plugin - it would be nice to register AE_Hooks::blit_hook_func from within an Effect.
Has anyone attempted this before?
I guess alternative is to check if for PF_InData::current_time during PF_Cmd_UPDATE_PARAMS_UI, which includes having the time slider moved, and re-render separately, but this undermines the whole idea of caching...
Any logs of the experiences would be welcome!
greets
mike
hi all,
if i have a effect and it has two properties with the same name, how can i recongnize them in export time?
it seems that i can only get stream name and value in that time but it's not enought for me to differentiate between them.
in this case, i can get each stream by index, but how do i know whitch "X" i got?
the AEGP_GetStreamName will get the same name from them.
Thanks.
I am trying to perform a simple operation:
Create a new world (mask), fill it with color and alpha, and then blend it with a selected composite mode to the footage.
I have made it working in After Effects perfectly. It uses WorldTransformSuite1 transfer_rect, which is not supported by Premiere. However, its counterpart, PF_TRANSFER_RECT is supposedly supported.
The results in Premiere, regardless of whether it's YUV or RGB, are really almost random depending on the color that I select. Sometimes I get a blue cast all over the picture regardless of alpha channel, sometimes I get the alpha channel transferred, even though I have the rgb_only flag set to true, sometimes seemingly nothing happens at all.
The mask is drawn correctly. If I simply copy it to the output world, everything is fine - at least in RGB, YUV is another matter for another post. Clearly it is the PF_TRANSFER_RECT that is to blame for improper transfer.
Can somebody help me? I tried to debug this thing, but I can't seem to find any sense in the behavior.
The callout of PF_TRANSFER_RECT is pretty generic:
ERR(PF_TRANSFER_RECT( in_data->quality, PF_MF_Alpha_STRAIGHT, in_data->field, &output->extent_hint, // rectangle &mask, // source world &composite_mode, // comp mode &mask_world, // mask world 0, // dest_x 0, // dest_y &temp) ); //dst world
temp is already populated with ¶ms[PLUGIN_LAYER]->u.ld
mask_world is defined as the mask world for mask and PF_MaskFlag_NONE flag.
I have been fighting with it for past week, and I am totally frustrated.
So, my After Effects is installed in "E:\Adobe\After Effects CS6",so the MediaCore folder's path is "E:\Adobe\Common\Plug-ins\CS6\MediaCore".
I just started to learn the SDK yesterday. When I was playing with the samples in the SDK, I set the output folder to the MediaCore folder, After Effects won't load the plugins in this folder. I have to copy the plugins to the plugin folder in After Effects support files folder.
If I set the output folder to the plugin folder of After Effects, After Effects keeps crash.
What should I do?
I'm using Windows 7 Ultimate sp1 64 bit, After Effects CS6 and Visual Studio 2010 Ultimate.
Greetings everyone,
I’ll be straight to the point. I striped down the GLator (Effect plugin example) to copy an OpenGL pixel buffer onto a solid like so:
static PF_Err Render(PF_InData *in_data, PF_OutData *out_data, PF_ParamDef *params[], PF_LayerDef *output)
{
/// Render OpenGL stuff here!
PF_Err err = PF_Err_NONE;
AEGP_SuiteHandler l_suites(in_data->pica_basicP);
PF_EffectWorld l_world;
A_long l_width(output->width);
A_long l_height(output->height);
AEFX_CLR_STRUCT(l_world);
ERR(l_suites.WorldSuite1()->new_world(in_data->effect_ref,
l_width, l_height, PF_NewWorldFlag_CLEAR_PIXELS, &l_world));
PF_Pixel8 *l_data = NULL;
in_data->utils->get_pixel_data8(&l_world, NULL, &l_data);
glReadPixels(0, 0, l_width, l_height, GL_RGBA, GL_UNSIGNED_BYTE, l_data);
ERR(l_suites.WorldTransformSuite1()->copy_hq(in_data->effect_ref, &l_world, output, NULL, NULL));
ERR(l_suites.WorldSuite1()->dispose_world(in_data->effect_ref, &l_world));
return err;
}
The frame is rendered but with 2 major hiccups:
1 – The Y of the resulting image is flipped upside-down.
2 – The Red and Alpha channels seem to be swap.
Now, I do have a good idea how to solve this manually but I would like to avoid extra memory allocation and/or swapping data unnecessarily to solve these issues.
1 – Is there any workaround that would flip the image without touching the layer transformations? (the solution must be transparent to users)
2 – Is there is any way to pass the pixel data as RGBA and/or BGRA to avoid manual swizzling?
Important: Since we’re so close to get this working properly, I’d like to find solutions that wouldn’t hit performance at all, if possible!
Thx,
Hi There,
I am encountering an issue related to my plugin and differing language versions of AE. When I apply my plugin to a layer within a project opened in an English version of AE, everything behaves as expected. However, when I apply the same plugin, in the same manner, on a non-English version of AE, I get an error message. I am dealing with this debug process on Windows 8 in Spanish. Here is the error I am receiving from the the Spanish version of CS6 on Windows8 (Spanish):
"After Effects error: no se pudo cargar el plugin "Debug.aex" (126).
( 48 :: 46 )
That basically says that the plugin could not be applied. Is there any reason why I might get this error in the Spanish version and not receive it in the English version? Do I need to setup VS2012 to build in release mode for it to work? Am I missing something?
Thanks,
Arie
After Effects CC 2014 is now publicly available for download!
You can grab the Plug-in SDK from its public location here:
http://www.adobe.com/devnet/aftereffects.html
It has updated docs and samples, along with the final headers.
The new Panel SDK is also available from the same location.
Cheers,
Zac
I noticed a strange behavior on part of After Effects: If a plug-in checks out the frame from a layer for a specific current_time, time_scale and time_step using checkout_layer_pixels(), After Effects does not always provide the same frame after you clear the image cache. For some values of current_time, After Effects will then return pixels with an offset of one or more frames. I can only reproduce this by using AVI and WMV files as video footage. My guess is, that After Effects' underlying frame decoder is not properly seeking through the video stream.
Does anyone experience this behavior as well? Is there any workaround? Could it be related to video codecs installed on my system? I am working on a plug-in that is required to iterate through video footage frame by frame and this iteration needs to be deterministic.
If you want to reproduce this, you need to a small effect plug-in that calculates a check sum (for eample CRC-32) of the checked out pixel data for each PF_Cmd_SMART_RENDER request and stores them together with the according current_time as key-value list. Then perform the following tests:
Results:
After Effects returns different frame content (different pixel data) when checking out a layer frame before and after clearing the image cache for the same current_time.
Expected results:
After Effects always returns the same frame content (equal pixel data) for the same current_time when checking out a layer frame.
Edited post to improve wording.
if any way to make a plugin using codeblocks?
how can i compile a cpp projects to a aex plugin?
Howdy folks!
I've run into an issue where my sequence data values are not correct when opening a project with an instance of my effect plugin.
The values look fine if I inspect them when they are flattened and written to a memory handle, and restore fine when AE sends PF_Cmd_SEQUENCE_RESETUP after the save completes. But when I open/load the saved project, the values are not correct. To put it another way, my flattening/unflattening logic works within the same session, but when loading a saved project, the flattened data is incomplete, or has bad values.
I'm writing multiple objects to the flat sequence data handle, and I'm wondering if this could be the cause.
The flattened sequence data handle memory looks like this:
[[struct type A] [struct type b] [struct type b] [struct type b] <...arbitrary number of struct type b's ... >]
The # of struct type B's varies, so when I ask AE for a memory handle, I do this:
size_t flatSequenceDataSize = sizeof(structTypeA) + (sizeof(structTypeB)* numberOfBStructsNeeded); PF_Handle flat_seq_dataH = suites.HandleSuite1()->host_new_handle(flatSequenceDataSize);
Then, to write the data to the handle:
structTypeA myDataA = <... populate struct values ...> std::vector<structTypeB> allStructB_V;<... populate vector ...> void *flat_seq_dataP = suites.HandleSuite1()->host_lock_handle(flat_seq_dataH); structTypeA *structA_P = reinterpret_cast<structTypeA*>(flat_seq_dataP); memcpy(flat_seq_dataP, &myDataA, sizeof(structTypeA)); structTypeB *structB_P = reinterpret_cast<structTypeB*>(flat_seq_dataP); //offset pointer by the size of the first struct in the handle structB_P += sizeof(structTypeA); for (A_long vectorIndex=0; vectorIndex < allStructB_V.size(); vectorIndex++) { *structB_P = allStructB_V.at(vectorIndex); structB_P+= sizeof(structTypeB); } out_data->sequence_data = flat_seq_dataH; suites.HandleSuite1()->host_unlock_handle(flat_seq_dataH);
When I access the sequence data handle when the scene is loading, the first struct in the flattened handle has correct values, but all the following structs have bogus values. I did check to see if the handle is still the proper size (I record the handle size inside the first struct) and it is indeed the correct size. I'm wondering if AE doesn't like how I'm writing the structB's to the handle.
Am I doing something wrong here? Is there a better way to store arbitrary sized data?
Thanks for your help!!!
-Andy
Hello everyone,
As suggested by the AE sdk, I start to create my plugin with sample project from the SDK.
However, I can not find an example with CUDA support for mac.
Now I have some troubles to setup an adobe plugin project with CUDA support for mac, as cuda files are compiled by nvcc.
Anybody can tell me where I can find an example to build an AE plugin with CUDA for mac?
Thanks for your help.