Quantcast
Channel: Adobe Community : Popular Discussions - After Effects SDK
Viewing all 73444 articles
Browse latest View live

Calculations that work in After Effects but not in Premiere Pro

$
0
0

I'm developing another Premiere Pro plugin based on AE effects SDK.

 

The plugin manipulates pixels in a very simple way - based on lift/gamma/gain controls it changes the values as such:

 

colorRGB->blue = PF_POW( colorRGB->blue , gamma) * gain + lift

 

And so on for the red, and green. All in floating point, PF_FpShort. I even tried doing calculations in PF_FpLong, but the results were the same.

 

Later the values can be clipped using MAX and MIN macros.

 

In After Effects everything works perfectly. In Premiere Pro, once certain gamma treshold (less than about 0.5, more than about 1.4) is reached, I start getting weird artifacts. Either green pixels or black squares in random patterns, usually, but not always, corresponding to the darker parts of the image.

 

I have no idea why, and how to correct it.

 

Please help.

 

EDIT: Actually any gamma that is different than 1 results in these weird artifacts, and only in the BGRA_32f mode. BGRA_8u works fine.


Can't load plugins in the MediaCore folder

$
0
0

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.

AE SDK wrapper

$
0
0

Hi

I've just been working on a project writing AE plugins - mostly fairly basic things like drawing and animating geometric shapes. This has been my first foray into After Effects plugins. However in doing so I must confess to finding the API painful and the documentation impenetrable. It has taken me the best part of a year working on-and-off on this project to feel comfortable writing basic plugins - and I never even got as far as smart plugins.

 

Anyway, along the way I've begun to write a series of C++ wrappers around the API to manage resources, things like an multi-d array class to correctly handle AE memory management, some transformation code using the after effect matrix structure and the beginnings of a World class for managing AE_Worlds and doing drawing etc. I was wondering if there was any demand for this kind of thing in the community and if it was worth me developing further? The kind of thing I'm imagining is a more object oriented and easier to use interface to the SDK, with better resource management - to save the memory leaks. I know the code I've written already has massively speeded up my plugin development and reduced bugs. Maybe it would be some help to others.

 

In the end though, I'm self employed so it boils down to would anyone be interested enough in a "nice" API interface to buy it and make it worth my time developing. I wondered if anyone here had any thoughts or even might be interested in a finshed product?

 

Phil

How to edit AF files without open After Effects application

$
0
0

Hello, guys.

 

I am trying to edit aep files without opening After Effects application? ,by CMD command or SDK whatever...

My concern is that I open aep files without opening After Effects application.

and then run some jsx scripts then save and close the files. And after that, I render them out.

The whole process what I need is not to open the application.

Is there anyone knows this task?

 

Thanks.

Building my first AE plugin using the example checkout - layer unvisible

$
0
0

Hi,

 

I am trying to learn how to build after effects CS6 plugin using Microsoft visual studio.

I managed to make a test plug using the "checkout" example from the SDK but whenever i apply it to a layer (solid or anything)

My layer which i applied it makes the solid disappear (attached JPG)

This is the code i used to compile.

 

#include "Checkout.h"

 

 

static PF_Err

GlobalSetup (

  PF_InData *in_data,

  PF_OutData *out_data,

  PF_ParamDef *params[],

  PF_LayerDef *output )

{

  PF_Err err = PF_Err_NONE;

 

 

  DuckSuite1* dsP = NULL;

 

 

  if (AEFX_AcquireSuite( in_data,

  out_data,

  kDuckSuite1,

  kDuckSuiteVersion1,

  "Couldn't load suite.",

  (void**)&dsP)) {

  PF_STRCPY(out_data->return_msg, "plugin loaded successfully");

  } else {

  if (dsP) {

  dsP->Quack(2);

  ERR(AEFX_ReleaseSuite( in_data,

  out_data,

  kDuckSuite1,

  kDuckSuiteVersion1,

  "Couldn't release suite."));

  }

  }

 

  // We do very little here.

  out_data->my_version = PF_VERSION( MAJOR_VERSION,

  MINOR_VERSION,

  BUG_VERSION,

  STAGE_VERSION,

  BUILD_VERSION);

 

 

  out_data->out_flags = PF_OutFlag_WIDE_TIME_INPUT |

  PF_OutFlag_I_DO_DIALOG;

 

 

  out_data->out_flags |= PF_OutFlag_PIX_INDEPENDENT |

  PF_OutFlag_USE_OUTPUT_EXTENT;

 

  out_data->out_flags2 = PF_OutFlag2_PARAM_GROUP_START_COLLAPSED_FLAG |

  PF_OutFlag2_SUPPORTS_SMART_RENDER |

  PF_OutFlag2_FLOAT_COLOR_AWARE |

  PF_OutFlag2_SUPPORTS_QUERY_DYNAMIC_FLAGS;

 

  return err;

}

 

 

 

 

/*static PF_Err

PreRender(

  PF_InData *in_data,

  PF_OutData *out_data,

  PF_PreRenderExtra *extra)

{

  /*PF_Err err = PF_Err_NONE;

  PF_ParamDef channel_param;

  PF_RenderRequest req = extra->input->output_request;

  PF_CheckoutResult in_result;

 

 

  AEFX_CLR_STRUCT(channel_param);

 

  // In order to know whether we care about alpha

  // or not, we check out our channel pull-down

  // (the old-fashioned way); if it's set to alpha,

  // we care. -bbb 10/4/05.

 

  /*ERR(PF_CHECKOUT_PARAM( in_data,

  SMARTY_CHANNEL,

  in_data->current_time,

  in_data->time_step,

  in_data->time_scale,

  &channel_param));

 

 

  if (channel_param.u.pd.value == Channel_ALPHA){

  req.channel_mask |=  PF_ChannelMask_ALPHA;

  }

 

 

  req.preserve_rgb_of_zero_alpha = TRUE; // Hey, we care.

 

 

  ERR(extra->cb->checkout_layer( in_data->effect_ref,

  SMARTY_INPUT,

  SMARTY_INPUT,

  &req,

  in_data->current_time,

  in_data->time_step,

  in_data->time_scale,

  &in_result));

 

 

 

 

  UnionLRect(&in_result.result_rect, &extra->output->result_rect);

  UnionLRect(&in_result.max_result_rect, &extra->output->max_result_rect);

 

  // Notice something missing, namely the PF_CHECKIN_PARAM to balance

  // the old-fashioned PF_CHECKOUT_PARAM, above?

 

  // For SmartFX, AE automagically checks in any params checked out

  // during PF_Cmd_SMART_PRE_RENDER, new or old-fashioned.

 

  //return err;

  return 0;

}*/

 

 

 

 

static PF_Err

ParamsSetup (

  PF_InData *in_data,

  PF_OutData *out_data,

  PF_ParamDef *params[],

  PF_LayerDef *output )

{

  PF_Err err = PF_Err_NONE;

  PF_ParamDef def;

  PF_EffectUISuite1 *effect_ui_suiteP = NULL;

 

 

  AEFX_CLR_STRUCT(def);

 

  PF_ADD_SLIDER( NAME,

  CHECK_FRAME_MIN,

  CHECK_FRAME_MAX,

  CHECK_FRAME_MIN,

  CHECK_FRAME_MAX,

  CHECK_FRAME_DFLT,

  CHECK_FRAME_DISK_ID);

 

 

  AEFX_CLR_STRUCT(def);

 

 

 

  //define the add layer dropdown menu name

  PF_ADD_LAYER("Layer to checkout",

  PF_LayerDefault_MYSELF,

  CHECK_LAYER_DISK_ID);

 

 

  out_data->num_params = CHECK_NUM_PARAMS;

 

 

 

 

  // Premiere Pro/Elements does not support this suite

  if (in_data->appl_id != 'PrMr')

  {

  ERR(AEFX_AcquireSuite( in_data,

  out_data,

  kPFEffectUISuite,

  kPFEffectUISuiteVersion1,

  NULL,

  (void**)&effect_ui_suiteP));

 

  ERR(effect_ui_suiteP->PF_SetOptionsButtonName(in_data->effect_ref, "Test Button"));

 

 

  (void)AEFX_ReleaseSuite(in_data,

  out_data,

  kPFEffectUISuite,

  kPFEffectUISuiteVersion1,

  NULL);

  }

 

  return err;

}

 

 

 

 

static PF_Err

Render(

  PF_InData *in_data,

  PF_OutData *out_data,

  PF_ParamDef *params[],

  PF_LayerDef *output )

{

  PF_Err err = PF_Err_NONE,

  err2 = PF_Err_NONE;

  int32_t num_channelsL = 0;

  PF_Rect halfsies = {0,0,0,0};

  PF_ParamDef checkout;

  PF_ChannelSuite1 *csP = NULL;

  PF_ChannelDesc desc;

  PF_ChannelRef ref;

  PF_ChannelChunk chunk;

  PF_Boolean found_depthPB;

 

  AEFX_CLR_STRUCT(checkout);

 

  // Premiere Pro/Elements does not support this suite

  if (in_data->appl_id != 'PrMr')

  {

  ERR(AEFX_AcquireSuite( in_data,

  out_data,

  kPFChannelSuite1,

  kPFChannelSuiteVersion1,

  "Couldn't load suite.",

  (void**)&csP));

 

  ERR(csP->PF_GetLayerChannelCount( in_data->effect_ref,

  0,

  &num_channelsL));

  

 

 

  if(num_channelsL) {

  ERR(csP->PF_GetLayerChannelTypedRefAndDesc( in_data->effect_ref,

  0,

  PF_ChannelType_DEPTH,

  &found_depthPB,

  &ref,

  &desc));

 

 

  ERR(csP->PF_CheckoutLayerChannel( in_data->effect_ref,

  &ref,

  in_data->current_time,

  in_data->time_step,

  in_data->time_scale,

  desc.data_type,

  &chunk));

 

  // do interesting 3d stuff here;

 

  ERR(csP->PF_CheckinLayerChannel(in_data->effect_ref,

  &ref,

  &chunk));

  }

 

 

  ERR2(AEFX_ReleaseSuite( in_data,

  out_data,

  kPFChannelSuite1,

  kPFChannelSuiteVersion1,

  "Couldn't release suite."));

  }

 

 

  // set the checked-out rect to be the top half of the layer

 

  halfsies.top = halfsies.left = 0;

  halfsies.right = (short)output->width;

  halfsies.bottom = (short)(output->height / 2);

 

  ERR(PF_CHECKOUT_PARAM( in_data,

  CHECK_LAYER,

  (in_data->current_time + params[CHECK_FRAME]->u.sd.value * in_data->time_step),

  in_data->time_step,

  in_data->time_scale,

  &checkout));

 

  if (!err) {

  if (checkout.u.ld.data)  {

  ERR(PF_COPY(&checkout.u.ld,

  output,

  NULL,

  &halfsies));

  }  else  {

  // no layer? Zero-alpha black.

  ERR(PF_FILL(NULL, &halfsies, output));

  }

 

  if (!err)  {

  halfsies.top = halfsies.bottom; //reset rect, copy.

  halfsies.bottom = (short)output->height;

 

 

  ERR(PF_COPY(&params[CHECK_INPUT]->u.ld,

  output,

  NULL,

  &halfsies));

  }

  }

 

 

  ERR2(PF_CHECKIN_PARAM(in_data, &checkout)); // ALWAYS check in,

  // even if invalid param.

  return err;

}

 

 

static PF_Err

About (

  PF_InData *in_data,

  PF_OutData *out_data,

  PF_ParamDef *params[],

  PF_LayerDef *output )

{

 

 

  PF_SPRINTF(out_data->return_msg,"Name: %s, Description: %s ", NAME, DESCRIPTION);

 

 

  /*PF_SPRINTF( out_data->return_msg,

  "%s, v%d.%d\r%s",

  NAME,

  MAJOR_VERSION,

  MINOR_VERSION,

  DESCRIPTION);*/

 

  return PF_Err_NONE;

}

 

 

static PF_Err

PopDialog (

  PF_InData *in_data,

  PF_OutData *out_data,

  PF_ParamDef *params[],

  PF_LayerDef *output )

{

  PF_Err err = PF_Err_NONE;

 

 

  PF_SPRINTF( out_data->return_msg,

  "Dudy Bin Message1");

 

 

  out_data->out_flags |= PF_OutFlag_DISPLAY_ERROR_MESSAGE;

 

  return err;

}

 

 

DllExport

PF_Err

EntryPointFunc (

  PF_Cmd cmd,

  PF_InData *in_data,

  PF_OutData *out_data,

  PF_ParamDef *params[],

  PF_LayerDef *output,

  void *extra)

{

  PF_Err err = PF_Err_NONE;

 

 

  switch (cmd) {

  case PF_Cmd_ABOUT:

  err = About(in_data,out_data,params,output);

  break;

  case PF_Cmd_GLOBAL_SETUP:

  err = GlobalSetup(in_data,out_data,params,output);

  break;

  case PF_Cmd_PARAMS_SETUP:

  err = ParamsSetup(in_data,out_data,params,output);

  break;

  case PF_Cmd_RENDER:

  err = Render(in_data,out_data,params,output);

  break;

  case PF_Cmd_DO_DIALOG:

  err = PopDialog(in_data,out_data,params,output);

  break;

  default:

  break;

  }

  return err;

}

example.jpg

 

Thanks,

 

Dudy.

Supersampling

$
0
0

Hey everyone,

 

I'm trying to implement something like RE:Map and I pretty much have it working close to perfect.

The issue no is that even using 16 bit UV pass edges stay jagged and I'd like to do some supersampling, but I have no clue on what the best way forward is.

 

The code was clean and readable until I started hacking away at giving supersampling a go. :/

This is the mess I've currently going. (Note this is my first time playing around with the SDK.)

 

static PF_Err
RemapFunc16(  void *refcon,  A_long xL,  A_long yL,  PF_Pixel16 *in,  PF_Pixel16 *out)
{  PF_Err err = PF_Err_NONE;  double tmp_u, tmp_v;  PF_Fixed sample_u, sample_v;  RemapInfo *contextP = reinterpret_cast<RemapInfo*>(refcon);  if (contextP)  {  // Define `in_data` (required for PF_SUBPIXEL_SAMPLE)  PF_InData *in_data = contextP->in_data;  AEGP_SuiteHandler suites(in_data->pica_basicP);  if (contextP->supersamplingMode != 1) // Supersampling!?  {  int ss;  if (contextP->supersamplingMode == 2) ss = 2; // 2x Supersampling!  else if (contextP->supersamplingMode == 3) ss = 4; // 4x Supersampling!  else if (contextP->supersamplingMode == 4) ss = 8; // 8x Supersampling!  double divisor = 1 / ((double)ss + 2.0);  int half = ss / 2;  double src_u, src_v;  int totalSamples = ss * ss;  double sampleWeight = 1.0 / (double)totalSamples;  A_u_short red = 0;  A_u_short green = 0;  A_u_short blue = 0;  A_u_short alpha = 0;  A_long xLF = ((A_long)xL << 16);  A_long yLF = ((A_long)yL << 16);  PF_Fixed sample_src_u, sample_src_v;  //PF_Fixed sample_u, sample_v;  for (int x = -half; x <= half; x++)  {  // Get supersampled u source  src_u = (double)x * divisor;  //src_u += xLF;  sample_src_u = xLF + LONG2FIX(src_u);  for (int y = -half; y <= half; y++)  {  // Get supersampled v source  src_v = (double)y * divisor;  //src_v += yLF;  sample_src_v = yLF + LONG2FIX(src_v);  // Set source point to `sourceLayer`  contextP->samp_pb.src = contextP->sourceLayerData;  // Sample src color  suites.Sampling16Suite1()->subpixel_sample16(in_data->effect_ref,  sample_src_u,  sample_src_v,  &contextP->samp_pb,  out);  // Get UV based on Red/Green from input pixel  tmp_u = ((double)out->red / (double)PF_MAX_CHAN16);  tmp_v = ((double)out->green / (double)PF_MAX_CHAN16);  tmp_u *= (double)contextP->textureLayer->u.ld.width;  tmp_v *= (double)contextP->textureLayer->u.ld.height;  sample_u = LONG2FIX(tmp_u);  sample_v = LONG2FIX(tmp_v);  // Set source point to `textureLayer`  contextP->samp_pb.src = &contextP->textureLayer->u.ld;  // Sample from `map` at UV and set `out` pixel.  suites.Sampling16Suite1()->subpixel_sample16(in_data->effect_ref,  sample_u,  sample_v,  &contextP->samp_pb,  out);  /*  red += (A_u_short)(out->red * sampleWeight);  green += (A_u_short)(out->green * sampleWeight);  blue += (A_u_short)(out->blue * sampleWeight);  alpha += (A_u_short)(out->alpha * sampleWeight);  */  }  }  //out->red = (A_u_short)red;  //out->green = (A_u_short)green;  //out->blue = (A_u_short)blue;  //out->alpha = (A_u_short)alpha;  }  else { // No Supersampling!  // Get UV based on Red/Green from input pixel  tmp_u = ((double)in->red / (double)PF_MAX_CHAN16);  tmp_v = ((double)in->green / (double)PF_MAX_CHAN16);  tmp_u *= (double)contextP->textureLayer->u.ld.width;  tmp_v *= (double)contextP->textureLayer->u.ld.height;  sample_u = LONG2FIX(tmp_u);  sample_v = LONG2FIX(tmp_v);  // Set source point to `textureLayer`  contextP->samp_pb.src = &contextP->textureLayer->u.ld;  // Sample from `map` at UV and set `out` pixel.  suites.Sampling16Suite1()->subpixel_sample16(in_data->effect_ref,  sample_u,  sample_v,  &contextP->samp_pb,  out);  }  if (contextP->preserveAlpha == TRUE)  {  out->alpha *= (in->alpha / PF_MAX_CHAN16);  }  }  return err;
}

Create Puppet Pin programmatically

$
0
0

Hi all,

 

I'd like to ask whether is it possible to create puppet pins programmatically...

 

I have tried to copy stream structure ("ADBE FreePin3", "ADBE FreePin3 Mesh", "ADBE FreePin3 PosPin Position", ...) of manually created pins with

corresponding values, but when I create streams this way they are disabled (AEGP_DynStreamFlag_DISABLED - and greyed out in UI).

 

I suppose that the vertex index "ADBE FreePin3 PosPin Vtx Index" is just an index to the array stored internally as arbitrary data so the mesh and pins must be created somehow before setting these values.

 

I've found this thread where they try to do the same thing using scripting (also without success  )Create Puppet Pin on existing mesh via scripting

 

I have some ideas about how this could be done using SDK, but all of them involve diving in very dark waters..

- call the EffectSuite::AEGP_EffectCallGeneric method with fake mouse click events (PF_Cmd_EVENT) or some direct PF_Cmd_COMPLETELY_GENERAL commands if the FreePin effect supports it

- use "FreePin Suite" - which is not a part of public SDK but can be aquired using AquireSuite... - but as it's not public I suppose it operates with memory which is not so safe to touch even if I managed to get/create proper header file for this suite

 

Maybe there is a simple elegant way of creating these pins which I completely overlooked, so I would be really thankful for any suggestions

 

Thanks a lot!

 

Martin

sequence data issue, help

$
0
0

hi all,

I develop a AE plugin using opengl, and there is a class named "ParticleSystem" in my code.

but there is some problem when copy/paste effect

I have read the post by Tobias http://reduxfx.com/ae_seqdata.pdf

it seems I should use sequence_data to handle this


My question is whether I can save my "ParticleSystem" class in sequence_data.

then how to set sequence_resetup to load the same data when copy effect

thx for your help


Building error: cannot open Skeleton.aex

$
0
0

Hello, I am a very junior programmer so probably my mistake is very dumb, but I could not find and fix it.

I have: Adobe AE CC 2017 Win SDK, Visual Studio 2015.

Problem: when I try to build Skeleton project (or Build All solution) I get this error:

skeleton error.png

Is my Visual Studio failing to work with .aex files? Or it can be that I need to set some paths differently (I haven't changed anything in SDK solution)?

Multi-machine rendering from command line

$
0
0

Hi,

We are planning to use After Effects for automatic rendering and thus run it from command line.

In order to render the content faster we use multi-machine mode ( as described here: Automated rendering and network rendering in After Effects ).

Now we need to make it automatically - run it from command line by a script (without UI).

 

How can we do it?

Any method or tip helps

 

Thanks

AEGP communicate with CEP/ScriptUI?

$
0
0

I am building a "Properties Panel" plugin, which would be a panel that displays property info about the selected layer, also enabling the user to adjust these values directly from the panel.

 

I've been reading here in the forums and it seems the recommended method of doing anything with panels is the CEP/ScriptUI route. However, I will need AEGP functionality, so how do I get the AEGP and the CEP/ScriptUI to talk to one another?

 

For example, I will need the AEGP to listen for layer selection events, which is not possible with CEP/ScriptUI. Upon layer selection, the panel should populate with UI elements corresponding to layer properties (much like the Effects Control Panel, but for layer properties).

 

I know AEGPs can execute scripts, but can they can actually pass information back and forth (or even in just one direction)?

 

Any advice at all would be greatly appreciated.

 

Thanks,

Tom

About PreRender and SmartRender ( PF_Cmd_SMART_PRE_RENDER and PF_Cmd_SMART_RENDER)

$
0
0

Hi, everyone!

 

I'd like to understand about PreRender and SmartRender correctly.

when and what I can use the PreRender and SmartRender for?

Would you explain me with simple example about that?

 

I can see they on Shifter sample plugin. But I am not sure why it is needed.

 

Looking forward to hearing back.

 

Regards,

Anthonie.

PF_Rect, Extent_Hint, Origin Coordinates and Layer Dimension

$
0
0

Hello guys. Can anyone assist me with a bit of explanation about how the PF_Rect and all the dimension variables work in the the after effects SDK. Before I was using on the 8 bit and 16 bit API and didn't need to really understand this. all I knew was there was in_data->width/height and out_data->width/height.

However I have started using the SmartFX API and now I can't get anything on the screen.

 

My preRender function is the same as the SmartyPants example and in my smartRender function all I am attempting to do is use the PF_COPY(or PF_FILL for that matter) macro to fill the output with something(anything). I am using the world suite to check the format of the layer and only applying an effects if its 8bpc just to get some result even on the 8 bpc. No matter what I do the layer with my effects stays black. I've played with the UnionLRect funciton(even using my on custom values).

 

so basically my problem comes with understand what all the parameters are in the in_data and out_data.

OutData has a width,height and origin variables.

InData has a width, height, output_origin_x/y, pre_effect_source_origin_x/y and extent_hint.

output(PF_EffectWorld) has (yet again) origin_x/y and (offcourse) width, height and an extend_hint.

 

Is there something more I should be doing to tell after effects what area I want rendered?

 

In the SmartyPants Example they use this process to get a PF_Rect that is then used on the PF_COPY macro

     src_rect.left = -in_data->output_origin_x;

     src_rect.top = -in_data->output_origin_y;

     src_rect.bottom = src_rect.top + output->height;

     src_rect.right = src_rect.left + output->width;

 

-Why is there a negative sign for in_data->origin_x?

-Why are we initializing src_rect.left using information from in_data but taking src_rect.right from output.

 

this src_rect(PF_RECT) is only used for the PF_COPY macro.

 

For the iterate function things are done differently. these is how the iterate function looks in SmartyPants.

suites.IterateFloatSuite1()->iterate_origin(

     in_data,                   (PF_InData*)

     0,                             (A_long progress_base)         

     output->height,     (A_long progress_final)

     input,                      (PF_EffectWorld*)

     &areaR,                  (PF_Rect*)

     &origin,                  (PF_Point*)

     (void*)(&idp),           (void*)

     InvertPixelFloat,      ("the iterator function")

     output));                  (PF_EffectWorld)

 

-"AreaR" is another PF_Rect that is generated like this.

     areaR.top =

     areaR.left = 0;

     areaR.right = 1;

     areaR.bottom = output->height;

Don't quite understand why the rectangle would be 1 x height instead of width x height. I'm sure it has something to do with the progress_base and progress_final(which is output->height)

 

-"origin" is generated like this.

     origin.h = in_data->output_origin_x;

     origin.v = in_data->output_origin_y;

 

Why is output->origin_x/y not used to initialize the origin variable but instead the in_data->output_origin_x/y that is used in the iterate function? How are they different?

 

I feel like there clear reason why this is structured like this, I'm just not seeing the picture quite clearly right now.

 

 

 

EDIT:

I managed to fix some mistakes and made the iterate function work. So I can manipulate the pixels individually but I'm still confused about the layer dimensions, and PF_Rects.

how to adjust level of motion blur?

$
0
0

Hi, everyone.

I am implementing motion blur by transform_world.

I am going to adjust level of motion blur between some values (for example: 0 ~ 100)

Is it possible? if so, how can I implement it?

 

Regards,

Anthonie.

Command ID for the equivalent of Numpad+0

$
0
0

Anyone knows the ID for Numpad+0 (play preview from the start)?

Since there is no menu for this, the "app.findMenuCommandId" command doesn't help.


Is there any entry command that can be called by scripts?

$
0
0

Hi,

I am now working on a PF plugin. There is a button which trigers a script window run by ExecuteScript. And there is also a button in my script window. What I want is that when I click the "Apply" button in script window, my plugin should recieve a command that can send my data from script window back to my arbitrary data in my PF plugin. (Like what adobe have done with Color Parameter, when you change color in Color Picker window, the color param can get the color data real time)

PF_PixelFormat Help

$
0
0

Hi gang;

 

I believe I am using the PF_Pixelformat function correctly, yet I am getting incorrect results.

 

My plugin should use 8 and 16 bits per channel color depths only.

 

So in the GlobalSetup I use the flag:

 

PF_OutFlag_DEEP_COLOR_AWARE;

 

Then, in my render function I declare the following:

 

AEGP_SuiteHandler suites(in_data->pica_basicP);

PF_WorldSuite2      *wsP  = NULL;

PF_PixelFormat      format = PF_PixelFormat_INVALID;

ERR(suites.Pica()->AcquireSuite(kPFWorldSuite, kPFWorldSuiteVersion2, (const void**)&wsP));

ERR(wsP->PF_GetPixelFormat(output, &format));

 

And finally, I can check my color depth mode by using:

 

if (format == PF_PixelFormat_ARGB32) // 8 bit

if (format == PF_PixelFormat_ARGB64) // 16 bit

if (format == PF_PixelFormat_ARGB128) // 32 bit (I am not using this color depth)

 

The problem is that when I test this in After Effects, it does not differentiate between 16 bit and 32 bit color mode. It tries to the generate the effect even if I switch to 32 bit color mode, and then crashes. Between 8 and 16, it certainly differentiates.

 

I should mention I am checking out another layer with this plugin but I don't think that could be the issue. What could I be doing wrong here?

 

Thanks in advance,

-Rich

Newbie can't get plugin to show up in Effects menu

$
0
0
I really am an experienced software engineer, but this plugin stuff is baffling me. I've built a couple of the sample projects in the SDK and moved their .AEX and .R files (and .RC files, out of superstition) under the After Effects application folder, but none of the expected plugins show up in the Effects menu. Anyone have any ideas on what detail I'm overlooking like a rookie?

Reload plugin after building...

$
0
0

Would like to enquire about "SLICK DEBUGGING TRICKS" in After Effects SDK Guide (in pdf) for AE CS5 (version 10). Perhaps somebody is successful following the steps!?

I see a few problems as follows:

 

1) AE application keeps a file lock on Filter plugins (or plug-ins)

 

even if one could overwrite an effect plugin when AE process is running...

 

2) Purge All (in menu Purge -> All or Ctrl - Alt - key '/' on the numpad) does not reload the plugin; in fact this is being called in the following order:

    PF_Cmd_FRAME_SETUP,
    PF_Cmd_RENDER,
    PF_Cmd_FRAME_SETDOWN,

no request for PF_Cmd_GLOBAL_SETUP or PF_Cmd_GLOBAL_SETDOWN is made. also this thread already mentions it: http://forums.adobe.com/click.jspa?searchID=3907456&objectType=2&objectID=1798812

 

 

3) VS does not allow Edit & Continue or x64, and CS5 seems to be x64 only - how could you make use of this functionality? or documentation does not seem to be updated completely for SDK for CS5?

 

Greetings

 

mike

Error on exit: Leaked effect refs

$
0
0

Hello,

I have error message "After Effects: AEGP Plugin    Updater: Leaked effect refs (5027::12)"

when exit AfterEffects with saved project. The error appears only if there are two or more instanses of my effect. One instance is ok.

After effects ends it's work correctly. Except this annoying message.

What does it mean? Does anybody know how to fix it?

dp_info.jpg

Viewing all 73444 articles
Browse latest View live


Latest Images

<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>