Clear
Back

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, select the patch and click the cog symbol that appears.

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.

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.

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.

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.

Color

This type represents the RGBA channels - Red, Green, Blue and Alpha. It's indicated by a square 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 outputs data on the position of the face. It can only be connected to another Face port - for example in a face landmark patch or an interaction patch.

Join the Spark AR Creator's community

Find inspiration, see examples, get support, and share your work with a network of creators.

Join Community

Join the Spark AR Creator's community

Find inspiration, see examples, get support, and share your work with a network of creators.

Join Community

Frequently asked questions

Have a specific question? Maybe it's been answered.


Read FAQs
Was this document helpful?