# ScaleBy Action

## Overview

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

The **ScaleBy Action Node** continuously scales an [**Object**](/incari-studio/2023.1/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/2023.1/toolbox/actions.md) page for a general introduction to these **Nodes**, and [**Scale**](/incari-studio/2023.1/objects-and-types/attributes/common-attributes/transformation.md#scale) for more detail about the `Scale` **Attribute**.

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

## Attributes

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

| 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/2023.1/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/2023.1/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/2023.1/objects-and-types/project-objects/scene.md) with two [**Objects**](/incari-studio/2023.1/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/2023.1/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/ZuYVsMNnBUyjl4VEuq3w)

### Logic

We then need to configure the **Logic**. This is done in the [**Logic Editor**](/incari-studio/2023.1/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/2023.1/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/YrWrpSX3Ryl9xLmpyVoI)

### Final result

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

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

## See Also

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

## External Links

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


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.incari.com/incari-studio/2023.1/toolbox/actions/scalebyaction.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
