Skip to main content
dkt0
Inspiring
March 26, 2025
Question

Motion Blur - Accessing Layer's Transforms

  • March 26, 2025
  • 2 replies
  • 6974 views

Yo

 

I've been trying for quite some time to make Motion Blur as a normal effect plug-in and I want to ask if it is even possible. Can I access the layer's transforms through a normal effect plug-in? What do I need to use?

 

I wanna make sure if it is possible or not. The only other way is making it an AEGP, right? I would like to avoid that.

2 replies

Warren Heaton
Community Expert
Community Expert
March 26, 2025

I don't know if this will help with what you are trying to achive or not, but the third-party plugin ReelSmart Motion Blur by RE:Vision Effects is well known for applying a natural-looking motion blur via an effect as an alternative to the built-in Motion Blur Switch.

dkt0
dkt0Author
Inspiring
March 26, 2025

I know about RSMB, but I want to code my own Motion Blur plugin. Thanks anyway.

Community Expert
March 26, 2025

either AEGP_GetLayerToWorldXform or AEGP_GetLayerToWorldXformFromView will get you tra transformation for a given time, which you can use to calc motion blur.

however, as for the rest of your question, it's a bit too broad. can you explain what you're trying to do in more detail?

dkt0
dkt0Author
Inspiring
March 26, 2025

Thanks. 

 

At least now I know I can make it. Any simple example of how to use those to access the transforms? Would be helpful tbh.

 

And for the rest of the question, I was talking about making Motion Blur as an AEGP (Artisan ig) if making it a normal effect plugin was not an option.

 

Also, for a tiles effect, I use the same stuff, right? I need to access the layer's transforms for that one too.

Community Expert
March 27, 2025

Oh btw btw, what do I use to detect 32bit depth? Like for 16bit I use PF_WORLD_IS_DEEP, what do I use for 32bit?


this is how i check it out, in a rather generalized apporach (fitting for extnetion to premier where other pixel formats are used as well). pass the input or output buffer as an arg to PF_GetPixelFormat (after checking them out, of course).

PF_PixelFormat	pixelFormat;
AEGP_WorldType	worldType;

PF_WorldSuite2 *wsP = NULL;
ERR(suites.Pica()->AcquireSuite(kPFWorldSuite, kPFWorldSuiteVersion2, (const void**)&wsP));
ERR(wsP->PF_GetPixelFormat(output, &pixelFormat));
ERR(suites.Pica()->ReleaseSuite(kPFWorldSuite, kPFWorldSuiteVersion2));

switch (AEInf.renderInf.pixelFormat)
{
case PF_PixelFormat_ARGB128:
	worldType = AEGP_WorldType_32;
	break;
case PF_PixelFormat_ARGB64:
	worldType = AEGP_WorldType_16;
	break;
case PF_PixelFormat_ARGB32:
	worldType = AEGP_WorldType_8;
	break;
}