Типы данных в патчах Spark AR Studio

Почему не получается соединить патчи в Spark AR Studio? Типы данных: если при соединении патчей возникает ошибка.

Патчи в Spark AR Studio имеют один или несколько портов: «входов» и «выходов». Именно с помощью соединения данных портов у патчей разработчик создает логику работы своего проекта — механику работы эффекта и его взаимодействия с пользователем.

Начинающие разработчики нередко сталкиваются с тем, что не могут соединить два патча: Spark AR Studio перечеркивает созданную связь красным цветом и сообщает об ошибке. Подобное происходит потому, что один порт, «выхода» первого патча, передает один тип данных, а другой порт , «входа» второго патча, ожидает получить совсем другой тип данных. Это что-то вроде того, если бы ваш кот ждал от вас мяса, а вы бы пытались накормить его огурцами. И в том, и в другом случае ничего не получится — возникнет явное непонимание и ошибка.

Пример подобной ошибки

Поэтому при составлении логики эффекта очень важно учитывать типы данных, с которыми работает тот или иной патч. Иначе вы не только получите сообщение об ошибке, но и ваш визуальный код не будет выполняться. Да-да, патчи в Spark AR Studio — это ничто иное, как визуальное программирование, поэтому необходимо иметь четкое представление о том, с какими типами данных вы имеете дело. Тем более, что в некоторых патчах нужно менять тип данных, чтобы вся схема работала корректно (или хотя бы просто работала — логические ошибки никто не отменял).

Поэтому предлагаю познакомиться с типами данных у патчей Spark AR Studio немного ближе.

Boolean

Boolean (логический тип данных) представлен всего двумя значениями: true (правда) и false (ложь).

Так, например, патч мимики smile имеет всего один «выход» с типом данных boolean: пользователь либо улыбается (true), либо не улыбается (false).

Также «выход» с таким типом данных имеют патчи сравнения equals (равно) , less than (меньше, чем), greater than (больше, чем) и другие: их результат всегда равен true или false. То есть одно число либо равно/больше/меньше, чем другое, либо нет (третьего варианта не дано).

Pulse

Импульс — это особый тип данных, который, фактически, не содержит никаких данных, а только передает импульс в конкретный момент времени при определенном событии.

«Выход» pulse имеет неактивное значение, пока не произойдет указанное событие. При его наступлении он передает активное значение, «включение», а далее снова становится неактивным. Этот тип данных отличается от типа boolean, который постоянно имеет какое-то из двух своих значений (true или false).

Тип pulse используется в таких патчах, как animation, задавая импульсами управление анимацией: запуск, перезапуск, реверс или остановку. Также «выход» типа pulse имеют патчи, характеризующие события: head nod (кивок головы) и другие.

Scalar

Скалярный тип данных представляет собой одномерное значение. В Spark AR Studio, так же, как и в других средах программирования, существует несколько категорий скалярных типов данных.

Number — включает целые и дробные числа.

Text — нечисловой (текстовый) тип данных, представляет собой один или несколько символов.

Progress — числовой сигнал, представляющий собой числа от 0 до 1 включительно. Так, например, «выходы» патчей animation и loop animation имеют тип данных progress. И передаваемое на эти «выходы» числовое значение означает степень выполнения цикла анимации, где 0 — ее начало, а 1 — завершение.

Отдельно стоит сказать о втором «выходе» патча mouth open (открытие рта). Он передает числа от 0 до 1, в зависимости от того, насколько сильно открыт рот пользователя (где 0 — рот закрыт, 1 — открыт). В какой-то степени это схоже с типом progress, но, все же, это несколько разные сигналы.

Color

Тип данных, который передает значения RGBA каналов, то есть, значение цвета.

Напомню, что в цветовой модели RGB каждый цвет представлен комбинацией трех основных цветов: red (красный), blue (синий), green (зеленый). А каждый основной цвет имеет свой уровень от 0 до 255. В схеме RGBA A — это дополнительный компонент, альфа канал, с помощью которого задается уровень прозрачности.

VectorN

Это многомерное значение, состоящее из N скалярных величин.

Vector2 состоит из двух скалярных величин. Данный тип данных используется при работе с объектами в двухмерной системе координат, а также с сигналами 2D point, представляющими положение, размер и вращение таких объектов, как rectangle.

Vector3 состоит из трех скалярных величин. Данный тип данных используется при работе с объектами в трехмерной системе координат, с сигналами 3D point, представляющими положение, размер и вращение таких объектов, как plane или face mesh, а также с трехканальными RGB текстурами типа Texture2D_3ch.

Vector4 состоит из четырех скалярных величин. Данный тип данных используется при работе с объектами в четырехмерной системе координат, а также с четырехканальными RGBA текстурами типа Texture2D_4ch.

Отдельно стоит упомянуть значения точек в 3D и 2D пространстве (Point 3D и Point 2D), так как это не просто переменные, а сигналы, передающие значение свойств transformations объекта в определенный момент времени. Но этим патчам (position, rotation, scale) вы можете передавать значения вектора с соответствующим количеством скалярных величин.

MatrixN

Представляет собой матрицу из N на N скалярных величин.

Matrix2 состоит из 2х2 скалярных величин. Используется, чтобы представить преобразование вращения для 2D векторов.

Matrix3 состоит из 3х3 скалярных величин. Используется, чтобы представить преобразование вращения для 3D векторов или аффинное преобразование для 2D векторов с дополнительной координатой (с помощью добавления дополнительной координаты 2D величина преобразуется в 3D).

Matrix4 состоит из 4х4 скалярных величин. Используется, чтобы представить аффинное преобразование для 3D векторов с дополнительной координатой(с помощью добавления дополнительной координаты 3D величина преобразуется в 4D).

Texture2D

Этот тип данных представляет изображение и может иметь от 1 до 4 каналов:

Texture2D_1ch — изображение с градациями серого (черно-белое).
Texture2D_3ch — цветное изображение в системе RGB.
Texture2D_4ch — цветное изображение в системе RGBA (то есть с дополнительным каналом A для управления прозрачностью).

Spark AR Studio data types

Некоторые типы данных в Spark AR Studio специфичны для него и не встречаются в других редакторах и средах разработки.

Так, например, патч Face Tracker имеет «выход» типа Face, на который передает данные о местоположении лица пользователя и определенных точек на нем, а также о его мимике. Подключить к этому порту можно только те «входы» других патчей, которые принимают именно этот тип данных. Например, это патчи групп face landmark и interaction.

5 комментариев

Ответить