Matt Tillman
Explorer
Matt Tillman
Explorer
Activity
‎Sep 28, 2022
03:31 AM
The fact that AE still can't natively import FBX camera data is astounding to me. Regarding a 3d engine, I completely agree. The ability to pull in 3d models for simple tasks like plate reprojection or light projection templates is incredibly useful. Both Fusion and Nuke have supported this for years. No one is saying AE should be able to handle 3d in a way that rivals an actual dedicated 3d package, however there are so many compositing tasks that can be trivialised by the ability to import some cameras and meshes and do a simple openGL render.
... View more
‎Jun 09, 2022
05:42 PM
I did look into manually altering the shortcuts file however that looks like a dead end. My aim was to call my versioning scripts to replicate the Nuke functionality of alt+up/down and alt+shift+up/down to increment, decrement, get latest and get first footage versions respectively. As it stands those shortcuts are applied to the tracker, layer and character and paragraph panels but not to the project panel. So an application wide shortcut would cause issues when trying to use the original shortcuts but a project panel specific one would work fine alongside them. I could easily write up a dockable panel to run the scripts (and someone has clearly done something similar here: https://aescripts.com/versionup/) but that's a much less elegant solution to something that is solved so easily in other software.
... View more
‎Jun 02, 2022
07:29 AM
I'm pretty sure the answer to this is "No" but just checking anyway. Is there a way to set a keyboard shortcut to run a script but not in the "Application" context. I want to be able to have a script run only when the Project Panel is active and I am aware that there is no way of determining panel focus in a script. The fact that the keyboard shortcuts window shows you all of the possible contexts in which functions can run feels like a tease if you can't add custom functions/scripts to them.
... View more
‎Sep 14, 2021
02:22 AM
Thanks so much, that is exactly what I needed! For reference to anyone else out there with a similar problem, I replaced this line: PF_EffectWorld tmpWrld = params[0]->u.ld; With this: AEGP_WorldH tmpWrldH;
PF_EffectWorld tmpWrld;
ERR(wsp->AEGP_New( NULL,
AEGP_WorldType_8,
params[0]->u.ld.width,
params[0]->u.ld.height,
&tmpWrldH));
ERR(wsp->AEGP_FillOutPFEffectWorld(tmpWrldH, &tmpWrld));
... View more
‎Sep 14, 2021
12:37 AM
Thanks Shachar, I suspected I might be doing that. I'm guessing that's coming from this line: PF_EffectWorld tmpWrld = params[0]->u.ld; How would I make tmpWrld be a copy of the input buffer rather than a reference to the buffer itself? I've tried using PF_COPY to fill it like I'm doing in the previous line with the output buffer, but I think that doesn't work due to tmpWrld not being a pointer.
... View more
‎Sep 13, 2021
09:51 PM
I should clarify what I mean by the blur increasing every time the interation amount is changed. Default is 10 - yeilds original image blurred for 10 iterations. Change to 1 - yeilds original image blurred for 11 iterations. Change to 0 - yeilds original image blurred for 11 iterations. Change to 2 - yeilds original image blurred for 13 iterations. Hopefully that makes sense.
... View more
‎Sep 13, 2021
09:46 PM
I have a test plugin that currently just doing a horizontal blur by averaging each pixel with its neighbours. When I put this into a for loop to iterate the blur multiple times the blur will continually increase every time the iteration value is changed. My theory is that the layer data isn't being cleared but I'm not sure where/how to do that in my code. If anyone could steer me in the right direction I'd be really grateful. static PF_Err
Render (
PF_InData *in_data,
PF_OutData *out_data,
PF_ParamDef *params[],
PF_LayerDef *output )
{
PF_Err err = PF_Err_NONE;
AEGP_SuiteHandler suites(in_data->pica_basicP);
PF_COPY(¶ms[0]->u.ld, output, NULL, NULL); //Fill output with layer
PF_EffectWorld tmpWrld = params[0]->u.ld; //Fill tmpWrld with layer
facetRefcon facetRefcon;
AEFX_CLR_STRUCT(facetRefcon);
facetRefcon.input = *output;
facetRefcon.output = tmpWrld;
for (int i = 0; i < params[SKELETON_GAIN]->u.fs_d.value; i++)
{
ERR(suites.IterateSuite1()->AEGP_IterateGeneric(output->height, &facetRefcon, facet8)); //Reads from output, writes to tmpWrld
PF_COPY(&tmpWrld, output, NULL, NULL); //copy tmpWorld to output
}
return err;
}
... View more
‎Feb 21, 2020
03:56 PM
My current approach is to override the error fail limit. After a couple of hours the render is still going, but has racked up over 400 errors and failed tasks. It's slower than usual, but still faster than only being able to render through gui. Thanks for the suggestion. Unfortunately cloud rendering would be slightly prohibitive due to the scale of the output. 16000 frames, 8k. Render time isn't too bad, but the filesizes are massive.
... View more
‎Feb 21, 2020
02:09 PM
Hi, I've been having serious issues rendering After Effects through deadline/commandline for the last few weeks. Sometimes it works fine for an hour or so, and then jobs start failing all over the place. My theory is that it's to do with running multiple instances or the render simultaneously, but I've never had issues with this before. This is the main error message: CryptVerifySignature failed Error: 0xc000a000 (-1073700864) Occasionally it's this one: CryptVerifySignature failed Error: 0xc000a000 (-1073700864) Using DXGI: Device: "NVIDIA GeForce RTX 2080" has dedicated video RAM (MB): 7920 ERROR *** IVCAutoReleasePool: Object 0000000024277A20 of class vcfoundation::data::DataWrapper autoreleased with no pool in place - just leaking ERROR *** IVCAutoReleasePool: Object 0000000024278350 of class vcfoundation::data::DataWrapper autoreleased with no pool in place - just leaking Tested with gpu enabled and disabled, and tested with render only mode and without. The error still occurs regardless. I'm running on just the one machine. 2x RTX2080, 2950x, 64gb ram. 2 slaves, each with 1 gpu and 16 threads
... View more
‎Oct 23, 2017
06:01 PM
So I've come across an issue with a script I'm currently writing. Basically if you undo after using 'copyToComp' on a layer with effects on it it will crash AE (at least it does on 14.2.1). Has anyone else encountered this issue?
... View more
‎Aug 26, 2016
06:21 AM
Ah, I thought I was missing a step. I was multiplying by PF_RAD_PER_DEGREE, but that obviously didn't work. Thanks again!
... View more
‎Aug 25, 2016
09:29 PM
Anyone know if there's some special way to handle an AngleParam? Currently I'm having to divide the value by some ridiculous number (about 3753600) to make it usable as degrees. Here's the function I'm feeding it into (as "rot"): static PF_PixelFloat rotateY(PF_FpLong rot, PF_PixelFloat inVec){ PF_FpLong tmpX = inVec.red; PF_FpLong tmpZ = inVec.blue; inVec.red = tmpX*cosf(rot) + tmpZ*sinf(rot); inVec.blue = tmpZ*cosf(rot) - tmpX*sinf(rot); return inVec; } I figured it would just be a matter of converting degrees to radians, but apparently not.
... View more
‎Aug 24, 2016
06:54 AM
You're amazing! Thanks again. It's working perfectly. After I had a few crashes and realised I needed to check that the layer wasn't null, and that the coordinates were valid haha. Studying up on pointers and references now
... View more
‎Aug 23, 2016
05:05 PM
Hey again. I tried your function out, but replacing PF_EffectWorld with PF_LayerDef, as that is what my PF_CHECKOUT_PARAM() returns. However in trying this: PF_PixelFloat testPixel = getPixel(id->layer, 10, 10); I get the following error: No suitable conversion function from PF_LayerDef to PF_LayerDef* exists. I tried removing the star from the function, but that throws more errors, saying that it needs to be a pointer type. Sorry if this is a dumb question. I really don't know the fundamentals of C++ (I'll have to fix that). I've only ever really used C#, python and extendscript.
... View more
‎Aug 23, 2016
06:42 AM
Thanks so much for that Francois. That looks like exactly the explanation I was looking for.
... View more
‎Aug 23, 2016
04:05 AM
Thanks Shachar, I've got the layer checked out, and have access to data and rowbytes. I'm just not certain of how to actually extract a pixel out of it. Using "data"; how do I get a PF_PixelFloat out of a PF_PixelPtr? Also, what would the use in returning the first pixel? And with regards to "rowbytes", what would an example of using that look like? As an example, say I wanted the pixel at [10,10] in the layer? I'm assuming it's not as simple as rowbytes[10,10] or rowbytes[width*10+10].
... View more
‎Aug 22, 2016
08:57 PM
So this is driving me crazy. I've searched the forums and found a few promising leads, but nothing seems to work. I am inside a float iterator for the current layer (suites.IterateFloatSuite1()->iterate_origin()). I have passed my layer parameter into it, as a PF_LayerDef. How do I get a pixel value from it? What I want to do is something like this: out = getPixelValue(id->layer.data, xCoord, yCoord); Am I simply approaching this in the wrong way? Any help would be amazingly appreciated. Thanks.
... View more
‎Jul 02, 2015
05:46 AM
You are amazing! Such a silly mistake. I've been combing through my whole plugin for hours and I can't believe I missed that. Thanks so much!
... View more
‎Jul 02, 2015
03:24 AM
Hey guys, So I've added a PF_Cmd_DO_DIALOGUE to my plugin thusly: case PF_Cmd_DO_DIALOG: err = Register(in_data, out_data); break; The problem is that the Register() command runs constantly instead of only when clicking the "Register" button. It opens a dialogue box and that box, when closed, will reopen when clicking anywhere at all in the After Effects window. Anyone else had this issue?
... View more
‎Jun 27, 2015
04:57 PM
Perfect! Thanks so much. I didn't realise that the documentation for the PF_GetFloatingPointColorFromColorDef function was in suites. So that line ended up being: suites.ColorParamSuite1()->PF_GetFloatingPointColorFromColorDef( in_data->effect_ref, params[MATTE_PICKER], &fp_colorP); And with that my plugin is complete! (for now anyway). Thanks again.
... View more
‎Jun 27, 2015
01:01 AM
I've managed to hack my way through to a functional 32bit plugin but have hit a stumbling block. I need to query a colour picker parameter and apply its values to a 3d point parameter. However the value always returns as 16pbc (0-255 range). In After Effects the colour is being stored correctly, it's obviously just reading back as 16pbc in my code. Here's how I'm approaching it currently (inside UserChangedParam()): if (which_hitP->param_index == MATTE_PICKER){ params[MATTE_POINT]->u.point3d_d.x_value = params[MATTE_PICKER]->u.cd.value.red; params[MATTE_POINT]->u.point3d_d.y_value = params[MATTE_PICKER]->u.cd.value.green; params[MATTE_POINT]->u.point3d_d.z_value = params[MATTE_PICKER]->u.cd.value.blue; params[MATTE_POINT]->uu.change_flags = PF_ChangeFlag_CHANGED_VALUE; } In this thread (Re: CCU Render Example 16bit / 32bit) I saw reference to PF_GetFloatingPointColorFromColorDef(), however I can't seem to find any documentation on that particular function. Any help would be amazing. Thanks.
... View more