• Global community
    • Language:
      • Deutsch
      • English
      • Español
      • Français
      • Português
  • 日本語コミュニティ
    Dedicated community for Japanese speakers
  • 한국 커뮤니티
    Dedicated community for Korean speakers
Exit
0

Create Custom Blending Mode Using SDK

Engaged ,
Apr 28, 2019 Apr 28, 2019

Copy link to clipboard

Copied

I'm brand new to using the AE SDK, and it's quite intimidating coming from the scripting side.

Let's say I want to create my own custom blend mode between layers.  For the sake of simplicity, suppose a is the base layer and b is the blend layer (b is on top of a).  For example, in After Effects, Overlay and Subtract should be implemented something like this:

static overlay(a, b) {

   if (a < 0.5) {

   return 2 * a * b;

   }

   else {

   return 1 - 2 * (1 - a) * (1 - b);

   }

  }

static subtract(a, b) {

   return max(a - b, 0.0)

  }

(these functions are applied to each RGB channel value separately (with pixel channel values that are normalized to be between 0 and 1))

Suppose I want to implement my own custom blend function between two layers, one that After Effects does not provide, such as:

static grain_merge(a, b) {

   return min(max(a + b - 0.5, 0.0), 1.0)

  }

Is this possible with the SDK?  I imagine it would have to be applied as a custom effect, and that's no problem; any way is fine as long as it works.  I know that the base layer (a) would have to be the composite of all the pixels underneath the layer the effect is applied to, and (b) would have to be the source pixels of the layer that the effect is applied to.  But I really don't know how I can actually make this happen.  If this is possible, can you provide an example?

TOPICS
SDK

Views

701

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Apr 28, 2019 Apr 28, 2019

Copy link to clipboard

Copied

yes, it's possible, and yes, it would have to be an effect, as there's no

API for adding a new layer transfer mode to the existing list.

take a look at the "Shifter" sample project in the SDK. it iterates over

pixels and allows making such calculation with very little hassle.

On Sun, Apr 28, 2019 at 9:32 PM johnt53984649 <forums_noreply@adobe.com>

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Engaged ,
Apr 28, 2019 Apr 28, 2019

Copy link to clipboard

Copied

That example helps a little, but I don't understand how I would go about getting the pixels of composite of the layers beneath the layer the effect is applied to.  How would I do that?

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Apr 28, 2019 Apr 28, 2019

Copy link to clipboard

Copied

there's no API for getting all lower layers composited together. your user

can apply that effect on an adjustment layer to achieve this result.

On Mon, Apr 29, 2019 at 12:01 AM johnt53984649 <forums_noreply@adobe.com>

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Engaged ,
Apr 28, 2019 Apr 28, 2019

Copy link to clipboard

Copied

I'm still not sure how that would work.  I need to know the pixel values of all the layers underneath in order to perform the calculation.  If there's no way to obtain that information, then I don't understand how an adjustment layer would help.  I need both the pixel values of the source layer as well as the values of the composite of all the layers underneath in order to do the calculation.

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Apr 28, 2019 Apr 28, 2019

Copy link to clipboard

Copied

every effect can get it's "default" input pixel buffer. for regular layer

effects it's either the layer's source (if the effect is the first in the

layer's stack) or the previous effect's output buffer.

in the case of an adjustment layer, the "default" input buffer is the

composite of all underlying layers.

as a secondary input, an effect can get the source of any comp layer

pointed to by a "Layer selector" param. on new AE versions, it can even get

that layer post effects, masks and transformations.

On Mon, Apr 29, 2019 at 12:27 AM johnt53984649 <forums_noreply@adobe.com>

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Adobe Employee ,
May 13, 2019 May 13, 2019

Copy link to clipboard

Copied

To get pre-composited layers as input (instead of the 'naked' layer), the user would need to pre-compose.

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Participant ,
May 17, 2021 May 17, 2021

Copy link to clipboard

Copied

LATEST

John, did you ever find a solution for this? I'm trying to do someting similar.

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines