> For the complete documentation index, see [llms.txt](https://docs.incari.com/incari-studio/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.incari.com/incari-studio/2022.2/toolbox/actions/scalebyaction.md).

# ScaleBy Action

## Overview

![The ScaleBy Action Node.](/files/wtrOAYIEiRbOy6GMqtJ1)

The **ScaleBy Action Node** continuously scales an [**Object**](/incari-studio/2022.2/objects-and-types/scene-objects.md), thus creating an **Animation**. The final values of the `Scale` **Attribute** are determined by multiplying the initial ones with the values specified by the user in either the **Attribute** or **Input Socket** `By` of the **Node**. Find an [example](#example) of how to use this **Node** and its effect over an **Object** at the end of this page.

The following table shows several examples of how the `Scale` values of an **Object** change for different `By` values:

| Initial `Scale`    | `By`               | Final `Scale`      |
| ------------------ | ------------------ | ------------------ |
| $$(1,1,1)$$        | $$(3,3,3)$$        | $$(3,3,3)$$        |
| $$(0.5, 0.75, 4)$$ | $$(0.5, 2, 0.25)$$ | $$(0.25, 1.5, 1)$$ |
| $$(2, 10, 2.5)$$   | $$(1, 0.1, 0)$$    | $$(2, 1, 0)$$      |

Furthermore, visit the [**Actions Nodes**](/incari-studio/2022.2/toolbox/actions.md) page for a general introduction to these **Nodes**, and [**Scale**](/incari-studio/2022.2/objects-and-types/attributes/common-attributes/transformation.md#scale) for more detail about the `Scale` **Attribute**.

[**Scope**](/incari-studio/2022.2/toolbox/overview.md#scopes): **Scene**, **Function**, **Prefab**.

## Attributes

![The ScaleBy Action Node Attributes.](/files/arHGT2hZn4ACxMxRw557)

| Attribute        | Type          | Description                                                                                                                                                                                                                                                                                                                              |
| ---------------- | ------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `By`             | **Vector3**   | The number by which the `Scale` **Attribute** values will be multiplied, if none is received in the `By` **Input Socket**.                                                                                                                                                                                                               |
| `Duration (sec)` | **Float**     | The total time of the **Action**, if none is given in the `Duration` **Input Socket**.                                                                                                                                                                                                                                                   |
| `Interpolation`  | **Drop-down** | The `Interpolation` method to use for calculating the intermediate values of the `Scale`. It can be [*Linear*](https://en.wikipedia.org/wiki/Linear_interpolation), [*Sine Ease In*](https://easings.net/#easeInSine), [*Sine Ease In Out*](https://easings.net/#easeInOutSine), or [*Sine Ease Out*](https://easings.net/#easeOutSine). |

## Inputs

| Input         | Type           | Description                                                                                                                                                                        |
| ------------- | -------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `Instance ID` | **InstanceID** | The assigned [**Instance ID**](/incari-studio/2022.2/toolbox/actions.md#instance-id) of the **Action**. If nothing is received, it automatically assigns 0 as the **Instance ID**. |
| (►) `Start`   | **Pulse**      | A standard **Input Pulse**, to trigger the execution of the **Node**.                                                                                                              |
| `Object ID`   | **ObjectID**   | The ID of the target **Object**.                                                                                                                                                   |
| `Duration`    | **Float**      | The total time (in seconds).                                                                                                                                                       |
| `By`          | **Vector3**    | The number by which the `Scale` **Attribute** values will be multiplied, along the X, Y, Z axes.                                                                                   |

## Outputs

| Output        | Type           | Description                                                                                             |
| ------------- | -------------- | ------------------------------------------------------------------------------------------------------- |
| `Instance ID` | **InstanceID** | The assigned [**Instance ID**](/incari-studio/2022.2/toolbox/actions.md#instance-id) of the **Action**. |
| `OnStart` (►) | **Pulse**      | Flows to the next **Node** following **ScaleBy Action** when the **Action** starts.                     |
| `OnEnd` (►)   | **Pulse**      | Flows to the next **Node** following **ScaleBy Action** when the **Action** stops.                      |

## Example

This section shows a simple example of how to use the **ScaleBy Action** **Node** and the effect it has on an **Object**. We start by [configuring the **Scene**](#scene-configuration), then [build the **Logic**](#logic), and finally show the [result](#final-result).

### Scene Configuration

We consider a [**Scene**](/incari-studio/2022.2/objects-and-types/project-objects/scene.md) with two [**Objects**](/incari-studio/2022.2/objects-and-types/scene-objects.md): a red ellipse over a black background, both of which can be easily created in the [**Scene Outliner**](/incari-studio/2022.2/modules/scene-outliner.md). Then, we set the `Size` **Attribute** of the ellipse to $$(1000, 1000, 0)$$ and its `Scale` **Attribute** to $$(0.1, 0.1, 0)$$. See this configuration in the following image:

![Scene configuration.](/files/ec3XdMkFq7HRIIj9Bh4o)

### Logic

We then need to configure the **Logic**. This is done in the [**Logic Editor**](/incari-studio/2022.2/modules/logic-editor.md).

We use the **ScaleBy Action** **Node** with the following **Attributes**:

* `By`: $$(4, 4, 0)$$
* `Duration (sec)`: $$4$$
* `Interpolation`: `Linear`

And we connect to it the [**Object Node**](/incari-studio/2022.2/objects-and-types/scene-objects.md#objects-in-the-logic) of the red ellipse and a **Pulse** to the `Start` **Input Socket**. Thus, having the following **Logic** configuration:

![Logic configuration.](/files/rwO0WJNIYzuB9Iq7yLoz)

### Final result

Finally, the effect of the **ScaleBy Action** **Node** when triggered is the following:

![Final result.](/files/KIZPNbeyU64QpLmI8zYS)

## See Also

* [**ScaleTo Action**](/incari-studio/2022.2/toolbox/actions/scaletoaction.md)

## External Links

* [*Scaling (geometry)*](https://en.wikipedia.org/wiki/Scaling_%28geometry%29) on Wikipedia.
