CLEAR

Data Types

Every patch in Spark AR Studio has one or more ports. Connecting these ports to other patches will send and receive data.

You can change the data types of some ports. To do this, right-click the patch and select a type from the menu.

When you draw a connection from an output port, Spark AR Studio will suggest patches that can be connected. If you try to connect ports with incompatible data types, you'll see an error message.

Data types are indicated by symbols or values shown on the patch.

Boolean signal

At any point in time, a boolean signal is either true or false. For example, the Mouth Open port in the Mouth Open patch can tell whether a mouth is either open, or closed.

Ports with a boolean type have a small square next to them.

Scalar

A scalar is a one-dimensional value. The Mouth Openness port in the Mouth Open patch has a scalar value because it reflects how open the mouth is. If a mouth is wide open the value might be 1, if it's half open it might be 0.5.

Pulse

A pulse is an event that happens at some point in time. It's not a continuous signal like a boolean - which is always either true or false.

The Head Nod patch has a pulse type because a head nod is an event. Ports with a pulse type have a small square, with a circle in.

3D Point and 2D Point

A 3D point is a three-dimensional signal that can represent a rotation, scale or position.

For example, a patch representing the position of a 3D object has a 3D Position port. This port has a 3D Point data type, because the object is positioned in 3D space.

You can tell this is a 3D Point data type because it has X, Y and Z values. In this example, these values will reflect where the object is positioned in the scene.

A 2D point is a two-dimensional signal that can represent a rotation, scale or position. Patches with a 2D point type have X and Y values.

RGBA Color

This type represents the RGBA channels - Red, Green, Blue and Alpha. It's indicated by a circle with a color.

Progress

Progress is a scalar signal that's restricted to the 0-1 range. It could be used to drive an animation. Ports with progress types will be labelled Progress, like in the Animation patch.

Vector2, Vector3 and Vector4

VectorN is a multidimensional value consisting of N scalar components.

For example, you could use:

  • Vector2 for 2D points and 2D texture coordinates.
  • Vector3 for 3D points, 3D normals and 3-channel (RGB) color.
  • Vector4 for 4D position and 4-channel (RGBA) color.

Matrix2, Matrix3 and Matrix4

MatrixN represents a matrix of N by N scalar components.

For example, you could use:

  • Matrix2 to represent a rotation transformation for 2D vectors.
  • Matrix3 to represent a rotation transformation for 3D vectors or general affine transformation for 2D vectors with an additional homogeneous coordinate, which effectively makes them Vector3.
  • Matrix4 to represent a general affine transformation for 3D vectors with an additional homogeneous coordinate, which effectively makes them Vector4.

Texture2D

Texture2D typically represents an image and can have 1 to 4 channels.

There are 4 different Texture2D types depending on the number of channels. These are Texture2D_1ch, Texture2D_2ch, Texture2D_3ch and Texture2D_4ch.

Usually:

  • Texture2D_1ch corresponds to a gray-scale image.
  • Texture2D_3ch corresponds to a color image.
  • Texture2D_4ch corresponds to a color image with an additional alpha channel to control the transparency.

You can use a sampling patch to extract the pixel color within a texture, at a particular position.

Spark AR Studio Data Types

Some data types are specific to Spark AR Studio. These ports can only be connected to other ports of the same type. For example, the Face port in the face tracker patch can only be connected to another Face port.