Pseudo Effect Maker | User Guide

The Psuedo Effect Maker makes it simple to create custom effect controls, also known as 'pseudo effects'. These controls can then be used to drive expressions and layers within your After Effects Project and be saved as presets so that others can use the tools you create.

It is important to remember that Pseudo Effects are not real effects. They do not have any control over a composition without being linked to another property through expressions. You can use your pseudo effect to drive real effects, however you cannot hide the real effects, they will/must always be visible along with your custom control.

Installing

To install the Pseudo Effect Maker, you must be running After Effects CC or higher.

The Pseudo Effect Maker is an extension, not a script or a plugin. When you download the Pseudo Effect Maker, you will see a file that has the .zxp file type. This is the extension file.

Extensions are not installed as simply as some other After Effects tools, so to take care of everything for you, head over to aescripts.com and download the free ZXP Installer. The ZXP Installer helps you manage all of you extensions.

Once the ZXP Installer is running, simply open the Pseudo Effect Maker zxp file and it will install the extension for all compatible versions of After Effects on your system

After the Pseudo Effect Maker has been added, open After Effects and go to Window > Extensions. You will see 'Pseudo Effect Maker' in the list which you can click to open the panel

The Interface

Effect Panel

The 'Effect Panel' is on the left side of the interface. This gives you an approximate visual representation of how your pseudo effect will look once its in the actual After Effects 'Effects Panel'. The 'Effect Panel' also allows you to set some of the default settings of your control by interacting with the values just as you would in After Effects. You can also visually drag and drop your controls to rearrange them and bring them in or out of groups.

Selecting Controls

Once you have controls added to the effect (explained below) can select any of the controls simply by clicking anywhere within the control's area. Once you click on a control, you will see the 'Control Options' section change to match the details of the selected control.

Moving Controls in the Effect Panel

You can visually rearrange your controls using the 'Effect Panel'. When you hover over any control, a 'handle' will appear on the left side of the control. (If the control is within a group, the handle for the current control and any parent groups will be shown.)

To move a control, click and drag on the handle for the desired control. You can then move the control to anywhere in the pseudo effect.

Deleting Multiple Controls

The 'Effect Panel' also gives you the ability to delete multiple controls at once. To do this, double click on the dotted 'handle' for the desired control. When you do this, the control will be highlighted and the control panel will disappear, leaving you with two options, 'Delete Selected' and 'Cancel'. At this point, you can simply click one any other controls to add them to the group of controls to be deleted. Click a control a second time to remove it from the selection. Once you are done, you can either delete all the controls you've selected, or you can cancel the operation.

Reset

At the top of the 'Effect Panel' there is a blue reset button. In After Effects, this button will reset all of your controls to their default values. In the Pseudo Effect Maker, it will clear out the current effect so you can start creating from scratch.

Control Panel

The 'Control Panel' is on the left side of the interface. It is divided into four sections. The first section contains buttons for creating and saving pseudo effects as well as licensing information.

Apply

The apply button will take the control you've created in the Pseudo Effect Maker and add it to the currently selected layer in After Effects. The matchname of the effect will be randomly generated. If you would like to specify a matchname, use the 'Save' option. Also, keep in mind that controls that are directly applied cannot be re-opened later, so if you need to make changes in the future, make sure you also save a copy.

Save

The save button will allow you to save your control as an After Effects preset file (.ffx) which can then be loaded and applied to a layer through the 'Effects and Presets' panel. When you save a preset, you have the ability to use a custom matchname (discussed in more detail below), however you can also leave the matchname option blank to have a randomly generated matchname.

Open

The open button allows you to import a pseudo effect that has been created previously with the Pseudo Effect Maker. Only .ffx files that have been created by the Pseudo Effects Maker can be read. Opening a control will overwrite any controls that are currently in the 'Effect Panel'.

Purchase

The purchase button will only be visible if you are running a trial version of the Pseudo Effect Maker. Clicking this button allows you to buy or apply your license key to unlock the full capabilities of the Pseudo Effect Maker.

Copy XML

Creates an XML version of your control that is compatible with the PresetEffects.xml file in cause you need to have support for older versions of After Effects. It can also be used to save a 'human readable' version of your control rather then saving it as an FFX file.

Clicking 'Copy XML' will compile the XML for the current control and copy it into the clipboard. You can then paste the code into any text editor.

It is important to rememeber that there are some features when using the Pseudo Effect Maker that are not available when applying controls through the PresetEffects.xml file. For example, in the Pseudo Effect Maker you can set a secondary label for a 'Checkbox Control' that appears to the right of the checkbox. When you copy the XML, the <Checkbox /> node will contain a property 'label="xxxxx"'. This will not cause any issues if you decide to add it to the PresetEffects.xml file, however the property will be ignored. It can, however, be read by the Pseudo Effect Maker when using the Paste XML function (described below).

Here is a full list of features that are not supported in the PresetEffects.xml:

  • 'Force Hold Keyframes' will have no effect
  • Layer controls can never have keyframes
  • Checkbox controls cannot have a secondary label
  • Point and 3D Point controls do not have the Preset X, Preset Y and Preset Z options
  • There is currently an issue with 3D Point control default values. They are multiplied by 65536 (which might seem like a random number but it is the number of available colors in 16-bit). It is highly recommended that you set all default values to 0 (zero) when using a 3D Point control through the PresetEffects.xml file. If that is not an option, you will have to divide your percentages by 65536 which can lead to inaccurate results because of rounding.
  • Text controls will appear as empty group controls in the copied XML. Text controls do not actually exist in the PresetEffects.xml file, they are just a hack by creating a group that contains no controls.
  • 'Dim' Text controls are not available

Paste XML

If you prefer, rather then using the Pseudo Effect Maker GUI, you can choose to create your controls in XML and then simply use the Pseudo Effect Maker to apply them to a layer. The Paste XML function is also useful for importing controls that have been created for older versions of After Effects when it was necessary to edit the PresetEffects.xml file.

To use this feature, simply copy your xml (from <Effect... to </Effect>), open the Pseudo Effect Maker and click 'Paste XML'. Your control will be imported into the interface where you can either continue to edit your control, or simply apply or save it.

About

The about button will bring up the licensing information as well as a 'Contact Support' button if you have any comments, questions or need to report an issue.

Control Buttons

The control buttons are used to add controls to your effect. You have two different options for adding control. First, you can simply click on one of the buttons to add it to the bottom of the currently selected group. You can also click and drag on any of the buttons and then drop it into the 'Effect Panel' exactly where you need it. (Keep in mind that you can use either option as controls can always be repositioned later on.) At the top right hand corner of the Control Button section, you will see two small icons. Click on either of these to change the way the control buttons are displayed, either with or without the text labels.

Effect Info

This section allows you to set the Name and Match Name of your pseudo effect.

Name

The name of our pseudo effect is what the user will see at the top of the control in After Effects. You can also set the name by editing it directly in the 'Effect Panel'.

MatchName

The matchname is an optional parameter. If it is left blank, the Pseudo Effect Maker will generate a random set of letters and numbers to use as the matchname. Setting a custom matchname is not required and only needs to be used in special cases where more customizability is needed/wanted. Matchnames are never seen by the user and are only for use with things like scripts.

Keep in mind that the custom matchname will only be used when saving a pseudo effect. When using the 'Apply' button, the pseudo effect will always use a randomly generated matchname.

Another note: All pseudo effect matchnames will always have 'Pseudo/' added at the beginning. Without this prefix there would be errors when applying the pseudo effect. You do not need to maually add 'Pseudo/'. It will be added for you.

Control Options

This is the last section of the 'Control Panel'. This section will change depending on the control type that is currently selected, however there are some options that are common for all controls. The control options allow you to set every detail of your controls. Some of the options in the 'Control Options' section can also be set from the 'Effect Panel' however there are options in the control panel that are not visible in the effects panel. All of the options for each control type will be gone over at the end of the page.

On the right side of the 'Control Options' section you will see four small buttons.

'Move Control' Buttons (Up / Down)

The first two of these are up and down arrows. These two buttons allow you to rearrange the control's order by moving the currently selected control. Clicking the up arrow will move the control above the previous control, or if the previous control is a group, it will move into the group at the bottom of the list. The down arrow does the exact same thing, but moves controls downward.

You can also rearrange your controls visually using the handles in the 'Effect Panel'

Delete Selected Control

This will remove the currently selected control from the effect.

Help

The last button in this group has a '?' icon that will open this help file.

Common Options

Control Name

This sets the name of the control that is visible to the user in After Effects. It can be a maximum of 30 characters long.

Allow Keyframes:

If checked, the user can set keyframes on the current control.

Force Hold Keyframes:

The name says it all. If this is checked, the keyframes created will always be hold keyframes. This is really meant for checkboxes, layer and popup controls, but can be turned on or off for any control, depending on your needs.

If keyframes are not allowed, this option has no effect.

Angle

Total Angle:

The total number of degrees in the rotation. It is the combined value of the next two options, 'Full Rotations' and 'Degrees'

Full Rotations:

Each full rotation adds 360 degrees to the total angle. This value is displayed to the user

Degrees:

Additional degrees added to the full rotations. This value is displayed to the user and controls the angle of the rotation gizmo that the user sees

Checkbox

Checkbox Label:

This is different from the checkbox's name. This text will display just to the right of the checkbox control

Checkbox Default:

Sets whether the checkbox is checked or unchecked by default

Color

Color:

Shows the currently selected default color. Click on the color swatch to bring up a color picker, or use the Color Hex input

Color Hex:

Displays the hexidecimal value of the current color and allows you to directly edit the color using its hex value. (Hex values can only include the numbers 0-9 and the letters A-F)

Group

Groups do not have any options. They help you to organize complex controls by putting related controls in one place and giving the user the ability to hide/show them all together. Groups can be placed within groups, however it is not recommended to have too many nested groups as the interface will eventually become more difficult to navigate

Layer

Default Selection:

Sets the default selection of the drop-down to either 'none' or the layer to which the pseudo effect is applied.

In the Pseudo Effects Maker, these are the only two options, however in After Effects, the user can additionally select any layer in the current composition

Point / Point 3D

Default X/Y/Z Percent:

The Point and 3D Point controls get a little confusing. There are two sets of values, the first are the 'Percent' values. These should be set to decimals between 0 and 1 that represent percentages. For example .5 is 50%. The percent values are used only when the user resets the control. So for example, if the 'Default X Percent' is set to .5, and the layer with the control is 1920px wide, when the control is reset, the Point's X value will be set to 960 (1920 x .5 = 960). This means that the default of the point will be set dynamically with the size of the layer it is applied to. It is not possible to set the defaults as explicit values, they can only be set to percents.

Preset X/Y/Z:

These are explicit X. Y and Z values. Unlike the 'Default X/Y/Z Percent' values, these are not affected by the size of the layer and are not percentages. However, the values you put in here will only show when the pseudo effect is first applied. Once the control is changed or reset, there is no way to recall these values

Slider

Slider Default:

The when the Psuedo Effect is applied and the user hits the reset button, this is the value that the control will be set to.

Slider Min / Slider Max:

The min and max values are the lowest and highest values that the slider can scroll to. The output value can be lower or higher than these values by setting it manually, but these are the limits when the user drags the slider handle.

Valid Min / Valid Max:

The valid min and max are the lowest and highest possible values the control can output. Note: Valid Max cannot be less than the Slider Max and Valid Min cannot be more than Slider Min

Precision:

The number of digits after the decimal point

Show Percent Symbol:

Simply puts a percent symbol after the slider values. It does not affect the output values in any way, it only adds a visual element

Use BPC Values:

Modifies your slider properties based on the number of Bits Per Channel in the current project.

  • 8bpc: Values multiplied by 255.
  • 16bpc: Values multiplied by 32768
  • 32bpc: Values are not multiplied, but values always have a precision of 4

Text

Dim Text:

If this option is unchecked, the text is displayed at the same brightness/color as the other options. If the option is turned on, the text will be set to a dim / disabled look

Creating Controls from XML

The Pseudo Effect Maker allows you to paste XML data, instantly converting your code to a pseudo effect control. If you have old pseudo effect controls created in the PseudoEffects.xml file, you can easily copy and paste them into the Pseudo Effect Maker in order to edit, update or just convert them to controls that don't require PseudoEffects.xml editing.

The ability to paste XML code also means that if you'd prefer, you can create your controls by writing XML, rather then by using the GUI. If you are familiar with the nodes and attributes of the PresetEffects.xml file, you can write controls exactly as you would for that. There are a few additional attributes and attribute alternatives that are described below

You will notice that some of the attributes are grouped together. Using any of these options will do the same thing, they are just for different user preferences. For example, in the Color control, these will all do the same thing:

default_red="100", red="100", r="100"

Effect - Required

Attribute Description
name Required. (String) The name of the effect. Should not contain special characters. Maximum 30 characters
matchname Optional. (String) A custom matchname for the control. Matchnames on pseudo effects will always have the 'Pseudo/' prefix, however it will be automatically added by the Pseudo Effect Maker, so it is not necessary to include here. Maximum 24 characters NOT including the 'Pseudo/' prefix

Important: All pseudo effect XML controls must be wrapped in an Effect node. Only one effect can be imported at a time, so your control should only have a single Effect node and it must be the top level element

Example

<Effect name="The Pseudo Effect" matchname="BFRM Psuedo Effect" >
     <!-- More Controls Here -->
</Effect>

Angle

Attribute Description
name Required. (String) The name of the control. Should not contain special characters. Maximum 30 characters
default | value Required. (Float) The total number of degrees in the angle control.
CANNOT_TIME_VARY Optional. (Boolean) If set to true, this control will not be allowed to have keyframes.
keyframes Optional. (Boolean) This is the same as CANNOT_TIME_VARY except that setting keyframes="true" means that keyframes will be allowed, where as a 'true' value for the previous attribute means keyframes are not allowed. Do not use both 'keyframes' and 'CANNOT_TIME_VARY'. They both do the same thing, just different options depending on your preference.
hold Optional. (Boolean) If true, forces keyframes to be hold keyframes. If false, keyframes will be standard keyframes. If the 'hold' attribute is not included with your 'angle' control, the hold value will default to false.

Example

<Angle name="The Angle Control" value="180" keyframes="false" />

Checkbox

Attribute Description
name Required. (String) The name of the control. Should not contain special characters. Maximum 30 characters
default | checked Required. (Boolean) If true, the checkbox will be checked. If false, the checkbox will be unchecked.
label Optional. (String) If included, this text will be shown to the just to the right of the checkbox, separate from the control name.
CANNOT_TIME_VARY Optional. (Boolean) If set to true, this control will not be allowed to have keyframes.
keyframes Optional. (Boolean) This is the same as CANNOT_TIME_VARY except that setting keyframes="true" means that keyframes will be allowed, where as a 'true' value for the previous attribute means keyframes are not allowed. Do not use both 'keyframes' and 'CANNOT_TIME_VARY'. They both do the same thing, just different options depending on your preference.
hold Optional. (Boolean) If true, forces keyframes to be hold keyframes. If false, keyframes will be standard keyframes. If the 'hold' attribute is not included with your 'angle' control, the hold value will default to false.

Example

<Checkbox name="The Checkbox" checked="true" label="On / Off" CANNOT_TIME_VARY="true" />

Color

Attribute Description
name Required. (String) The name of the control. Should not contain special characters. Maximum 30 characters
default_red | red | r Required. (Integer) Value between 0 - 255 for the red channel
default_green | green | g Required. (Integer) Value between 0 - 255 for the green channel
default_blue | blue | b Required. (Integer) Value between 0 - 255 for the blue channel
CANNOT_TIME_VARY Optional. (Boolean) If set to true, this control will not be allowed to have keyframes.
keyframes Optional. (Boolean) This is the same as CANNOT_TIME_VARY except that setting keyframes="true" means that keyframes will be allowed, where as a 'true' value for the previous attribute means keyframes are not allowed. Do not use both 'keyframes' and 'CANNOT_TIME_VARY'. They both do the same thing, just different options depending on your preference.
hold Optional. (Boolean) If true, forces keyframes to be hold keyframes. If false, keyframes will be standard keyframes. If the 'hold' attribute is not included with your 'angle' control, the hold value will default to false.

Example

<Color name="The Color" default_red="100" green="50" b="20" keyframes="true" hold="true" />

Group

Attribute Description
name Required. (String) The name of the group. Should not contain special characters. Maximum 30 characters

Example

Note: The group control is the only element that will contain other elements. Any control nodes placed within the group tag will be included in the group.

<Group name="The Group" >
     <!-- More Controls Here -->
</Group>

Point / Point3D

Attribute Description
name Required. (String) The name of the control. Should not contain special characters. Maximum 30 characters
default_x | percent_x Required. (Float) Value between 0 - 1 representing a percentage of the layer width for the default X coordinate
default_y | percent_y Required. (Float) Value between 0 - 1 representing a percentage of the layer height for the default Y coordinate
default_z | percent_z Point3D Only. Required. (Float) Value between 0 - 1 representing a percentage of the layer height for the default Z coordinate
point_x Optional. (Float) X Coordinate of the point value when the control is first applied.
point_y Optional. (Float) Y Coordinate of the point value when the control is first applied.
point_z Point3D Only. Optional. (Float) Z Coordinate of the point value when the control is first applied.
CANNOT_TIME_VARY Optional. (Boolean) If set to true, this control will not be allowed to have keyframes.
keyframes Optional. (Boolean) This is the same as CANNOT_TIME_VARY except that setting keyframes="true" means that keyframes will be allowed, where as a 'true' value for the previous attribute means keyframes are not allowed. Do not use both 'keyframes' and 'CANNOT_TIME_VARY'. They both do the same thing, just different options depending on your preference.
hold Optional. (Boolean) If true, forces keyframes to be hold keyframes. If false, keyframes will be standard keyframes. If the 'hold' attribute is not included with your 'angle' control, the hold value will default to false.

Example

<Point name="The Point" default_x="0.5" default_y="0.2" point_x="960" point_y="200" /> <Point3D name="Three Dimensional Point" percent_x="0.2" percent_y="0.3" percent_z="0.4" />

Popup

Attribute Description
name Required. (String) The name of the control. Should not contain special characters. Maximum 30 characters
default | value Required. (Integer) 1 based index representing the default selection of the popup
popup_string | options Required. (String) A string that contains the selections for the popup. Separate each option with the | symbol
CANNOT_TIME_VARY Optional. (Boolean) If set to true, this control will not be allowed to have keyframes.
keyframes Optional. (Boolean) This is the same as CANNOT_TIME_VARY except that setting keyframes="true" means that keyframes will be allowed, where as a 'true' value for the previous attribute means keyframes are not allowed. Do not use both 'keyframes' and 'CANNOT_TIME_VARY'. They both do the same thing, just different options depending on your preference.
hold Optional. (Boolean) If true, forces keyframes to be hold keyframes. If false, keyframes will be standard keyframes. If the 'hold' attribute is not included with your 'angle' control, the hold value will default to false.

Example

<Popup name="The Popup" value="2" options="Option One|Option Two|Option 3|Option 4" keyframes="true" hold="false" />

Slider

Attribute Description
name Required. (String) The name of the control. Should not contain special characters. Maximum 30 characters
default | value Required. (Float) The default value for the slider. Must be greater than the valid minimum and less than the valid maximum
slider_min | smin Required. (Float) The lowest value the slider can be dragged to
slider_max | smax Required. (Float) The highest value the slider can be dragged to
valid_min | vmin Required. (Float) The lowest possible value the control can be set to. The slider will stop at the slider minimum, but the user can input values manually as low as the valid minimum
valid_max | vmax Required. (Float) The highest possible value the control can be set to. The slider will stop at the slider maximum, but the user can input values manually as high as the valid maximum
precision Optional. (Integer) Default is 2. Sets the number of digits after the decimal point. Can be anywhere from 0 - 6.
DISPLAY_PERCENT | percent Optional. (Boolean) Default is false. If set to true, a percent (%) symbol will be shown next to your values. This does not actually affect the output value in any way, it only adds a visual element to let the user know that the value is a percentage.
DISPLAY_PIXEL | pixel Optional. (Boolean) Default is false. If set to true, your values will be multiplied based on the current bits-per-channel settings.
CANNOT_TIME_VARY Optional. (Boolean) If set to true, this control will not be allowed to have keyframes.
keyframes Optional. (Boolean) This is the same as CANNOT_TIME_VARY except that setting keyframes="true" means that keyframes will be allowed, where as a 'true' value for the previous attribute means keyframes are not allowed. Do not use both 'keyframes' and 'CANNOT_TIME_VARY'. They both do the same thing, just different options depending on your preference.
hold Optional. (Boolean) If true, forces keyframes to be hold keyframes. If false, keyframes will be standard keyframes. If the 'hold' attribute is not included with your 'angle' control, the hold value will default to false.

Example

<Slider name="The Slider" default="1" smin="-10" smax="10" vmin="-100" vmax="100" precision="0" pixel="true" />

Text

Attribute Description
name | text Required. (String) The text that will be displayed. Maximum 30 Characters. Longer text must be broken up into multiple text controls
dim Optional. (Boolean) Default is false. If set to true, the text will be dimmed

Example

<Text text="This is some text" dim="true" />