Jump to Navigation

Продолжение перевода технической документации по Juggling Lab

Предыдущая часть касалась особенностей ввода паттернов в нотации сайтсвопа. Но сайтcвоп не единственный параметр, определяющий трюк. Рассмотрим же ещё несколько ключевых особенностей, доступных в Juggling Lab.
Оригинал документации расположен по адресу https://jugglinglab.org/html/sspanel.html.

Использование панели ввода паттерна

Панель ввода паттернов — место для ввода паттерна жонглирования, а также, по желанию, для регулировки движений рук по времени. Внешний вид показан ниже.

Состоит из:

  • Pattern. Поле для ввода паттерна жонглирования с использованием нотации сайтсвопа.
  • Beats per second (число тактов в секунду). Положительное число (т. е. больше 0.0), соответствующее количеству тактов, приходящихся на каждую секунду. Как правило, в среднем получается один бросок на такт. Если оставить это поле пустым, Juggling Lab вычислит значение самостоятельно, исходя из введённого паттерна. Как правило, значение лежит между 3.0 и 5.5 тактов в секунду.
  • Dwell beats (такты удерживания). Число между 0.0 и 2.0, равное числу тактов, которое пройдет от кетча до последующего броска. Значение по умолчанию равно 1.3.
  • Hand movement (движение рук). Движение рук задаётся текстовой строкой в формате, описанном ниже. Выпадающий список позволяет выбрать из нескольких встроенных шаблонов движений рук. По умолчанию, Juggling Lab определяет движение рук основываясь на введённом паттерне.
  • Body movement (перемещение тела). Перемещение тел жонглёров задается текстовой строкой в формате, описанном ниже. Выпадающий список позволяет выбрать из нескольких встроенных шаблонов движений тела. По умолчанию, Juggling Lab определяет положение тела исходя из количества жонглёров.
  • Prop type (Вид реквизита). В выпадающем списке можно выбрать используемый реквизит.
  • Manual settings (ручные настройки). Ручные настройки для конфигурации паттерна; смотреть описание ниже.
  • Defaults button (кнопка По умолчанию). Нажмите, чтобы восстановить исходные настройки.
  • Juggle button (кнопка Жонглировать). Нажмите, чтобы увидеть анимацию паттерна.

Формат движений рук

Текстовая строка, описывающая движение рук, позволяет определить пространственное расположение рук как для времени каждого броска и кетча, так и для временных точек между ними. Juggling Lab использует сплайновый интерполяционный алгоритм, вычисляющий расположение руки в любой момент времени на основании координат, определённых для дискретных временных точек. Формат довольно гибкий и позволяет определить движения рук произвольной сложности.

Представьте себя на месте жонглёра, и определите систему координат с осью x, идущей перед вами слева направо (положительное направление справа), осью y, проходящей сзади наперед (положительное направление спереди), и осью z, идущей снизу вверх (положительное направление сверху). Точка (x, y, z) = (0,0,0) лежит посередине вашего тела, в "обычной" плоскости жонглирования перед вами, и на высоте, соответствующей положению предплечий над землей. В дальнейшем, движение руки будет определяться в координатах этой системы.

В простейшем случае имеем дело с одним жонглёром, у которого определены только позиции броска и кетча. В этом случае текстовая строка состоит из ряда пар координат в формате "(throwx,throwz,throwy)(catchx,catchz,catchy)." (здесь и далее: throw — бросок, catch — ловля). Пары записаны в порядке привязки к броскам паттерна сайтсвопа. Все размеры указываются в сантиметрах. Обратите внимание, что координаты y и z поменялись местами; это сделано из соображений удобства, так как компоненты, не указанные в конце, будут по умолчанию принимать значение 0. Например, (30,10) сокращенная форма записи (x=30,z=10,y=0). Другие факты:

  • Если пара координат привязывается к броскам или кетчам с левой руки, то значения throwx и catchx автоматически меняются на противоположные по знаку
  • Указанное число пар не обязательно должно быть равно количеству бросков в сайтсвопе — когда броски доходят до конца, просто делается петля обратно к началу. Подобным образом, движение руки может иметь больше тактов, чем паттерн.
  • При применении к синхронному сайтсвопу, координаты связываются с бросками в порядке, в котором они были записаны. Например, для паттерна (4x,6x) первая координата руки будет привязана к леворучной '4x', следующая пара к праворучной '6x', и т. д.

В качестве примера, стандартный стиль внутренних бросков "(10)(32.5)." соответсвует броскам, совершаемым на расстоянии в 10 см от центральной линии (без перепада высот) с последующим кетчем на расстоянии в 32.5 см от центральной линии (также без перепада высот). Стандартный стиль для миллс месса "(-30)(2.5).(30)(-2.5).(-30)(0).", если вдруг захочется разобраться в этой головоломке.

Разделители '.', в приведенных выше примерах, соответствуют тактам в паттерне сайтсвопа. Например, при 5 бросках в секунду в асинхронном паттерне, броски будут выполняться в 0.0 секунды, 0.2 секунды, 0.4 секунды, и т. д. Время кетчей определяется исходя из настроек времени удерживания. (Единственные броски, которые не соответствуют тактам в точности, это '1', которые бросаются чуть раньше и ловятся чуть позже.)

Положение руки в остальное время (кроме точек броска и кетча) также может быть определено путем введения дополнительных координат в каждый такт. Например, движение руки "t(10)c(32.5)(0,45,-25)." соответствует "поеданию яблока на каждом такте". В этом случае рука по-прежнему бросает и ловит внутренними бросками, но также определено положение руки (0,45,-25) во время, в точности соответствующем половине пути между каждым кетчем и последующим броском. Отметьте использование 't' и 'c' для индикации того, какие именно координаты относятся к позициям броска и кетча. Несколько правил:

  • Спецификаторы 't' и 'c' не являются обязательными; если они не определены, первая координата считается броском, а последняя координата — кетчем.
  • Спецификатор 't' всегда должен присоединяться к первой координате.
  • Если указано несколько дополнительных позиций (т. е., кроме позиций броска/кетча), то они привязываются к равномерно распределенным временным интервалам между бросками и кетчами. Представьте себе линию времени нарисованную на резиновом листе, и представьте как этот лист растягивается по времени, чтобы соответствовать известным временам бросков и кетчей; другие координаты после этого будут располагаться равномерно между этим определёнными временами.
  • Вы можете располжить '-' вместо координат, если хотите занять временную точку, но не хотите определять координаты руки. В качестве примера рассмотрим стиль "t(10)(0)-(50)c(32.5).". В этом случае паттерн таков, что первый бросок и кетч делаются во времена t=0.00 и t=0.20 секунды соответственно. Затем, в представленом примере, заданное положение руки (0) соответствует t=0.05, (50) привязывается к t=0.15, а положение руки для t=0.10 остаётся неопределённым.
  • Позиции бросков и кетчей не могут быть привязаны к значению '-', т. е., эти положения всегда должны быть определены.

Наконец, если имеем дело с несколькими жонглёрами, по умолчанию считается, что к ним применяется один стиль движений рук. Чтобы определить различные движения рук для каждого жонглёра используется формат "<(движения для жонглёра 1)|(движения для жонглёра 2)| ... >". Например, использование "<t(10)c(32.5)(0,45,-25).|(-30)(2.5).(30)(-2.5).(-30)(0).>" для паттерна <3|5> даст двух жонглёров, один из которых "поедает яблоко", а другой делает миллс месс 5-ю мячами.

Формат перемещения тела

Текстовая строка, определяющая перемещение тела, позволяет определить угол поворота и положение тела каждого жонглёра, как функцию от времени. Формат похож на формат движений рук, но с некоторыми отличиями:

  • Отличается формат координат: (angle, bodyx, body, bodyz), где "angle" угол поворота относительно оси z. Другие координаты "bodyx", "bodyy", и "bodyz" записываются в глобальной системе координат, в отличие от координат руки, которые определяются в локальной системе координат центрированной относительно каждого жонглёра. Для одного жонглёра координаты по умолчанию (angle,bodyx,bodyy,bodyz)=(0,0,0,100). bodyz=0 соответствует высоте пола.
  • Координаты не привязаны к броскам и кетчам, но расположены равномерно по времени внутри каждого такта паттерна. Спецификаторы 't' и 'c' не используются.
  • Нет необходимости определять кооординаты на каждом такте. Например, строка "(0)....(90)....(180)....(270)...." определяет жонглёра, медленно вращающегося в фиксированной позиции, с общим периодом в 16 тактов.
  • Одно и то же перемещение тела не может быть применено к более чем одному жонглёру. При перекидках, положение тела должно быть указано отдельно для каждого жонглёра, с использованием формата разделителей '<|>' аналогично движению рук. (Если количество жонглёров в перемещении тела больше их количества в паттерне, то данные по перемещениям лишних жонглёров игнорируются)

Примеры перемещений тела:

  • "<(90).|(270,-125).|(90,125).|(270,-250).|(90,250).|(270,-375).>" = 6 жонглёров, стоящих в одну линию.
  • "(0,75,0)...(90,0,75)...(180,-75,0)...(270,0,-75)..." = один жонглёр медленно прогуливается по кругу с общим периодом в 12 тактов.
  • "(0)(90)(180)(270)." = несколько дурацкий пример, определяющий одного жонглёра, делающего пируэт против часовой стрелки на каждом такте. (Заметьте, что как и с настройками движений рук, на одном такте могут быть определены несколько координат. Заполнители '-' также могут быть использованы.)
  • "(0).(0).(0).(0).(0).(0,0,0,150)." = один жонглёр прыгает вверх и вниз.

Ручные настройки для конфигурации паттерна

Данный метод ввода обеспечивает ручной контроль паттерна сайтсвопа. Всё, что может быть определено в других частях панели ввода также может быть введено вручную в этом поле. Ручные настройки переопределяют настройки, сделанные в других частях панели ввода.

Формат записи представляет из себя текстовую строку, состоящую из настроечных параметров, разделенных точкой с запятой. Например "pattern=(4x,4x);bps=6.0;hands=(32.5)(10).". Перечень доступных параметров:

  • pattern – анимируемый паттерн, записанный в нотации сайствопа. По умолчанию не определён.
  • bps – число тактов в секунду (beats per second) в формате числа с плавающей точкой. По умолчанию автоматически вычисляется исходя из паттерна.
  • dwell – количество тактов, проходящее от кетча до следующего броска. Значение — число с плавающей запятой между 0.0 и 2.0; по умолчанию 1.3.
  • hands – последовательность пространственных координат движений руки в формате, описанном выше.
  • body – последовательность углов поворота и пространственных координат в формате, описанном выше.
  • colors – определяет окраску реквизита. Каждый цвет может быть определён по названию или по его красным/зеленым/синим (red/green/blue) составляющим по шкале от 0 до 255. Таким образом, если настройки будут {red} или {255,0,0}, на анимации будет использован красный реквизит. Если определено несколько цветов, то они будут привязаны к мячам в циклической манере. Например, {255,0,0}{0,255,0} будет означать, что мяч 1 красный, мяч 2 зеленый, мяч 3 красный, мяч 4 зелёный, и т. д. Распознаются следующие имена цветов: black, blue, cyan, gray, green, magenta, orange, pink, red, yellow. Использование значения mixed (без скобок) будет соответвовать предопределённому смешению цветов. По умолчанию цвет красный.
  • propdiam – диаметр реквизита в сантиметрах. Число с плавающей точкой больше чем 0.0; по умолчанию равно 10.0.
  • prop – вид используемого реквизита. Распознаются следующие виды реквизита: ball, image, и ring; по умолчанию ball.
  • gravity – ускорение свободного падения, в см/с2. Число с плавающей точкой; по умолчанию равно 980.0 (стандартная земная гравитация).
  • bouncefrac – часть энергии мяча, сохраняющейся после отскока от пола (на какую долю от высоты сброса он вернется?). Значение является положительным числом с плавающей точкой; по умолчанию 0.9.

В дополнение к этим настройкам, в поле ввода ручных настроек также можно ввести любой из следующих параметров настройки анимации .

Повторение записи

Juggling Lab позволяет сократить ввод текста, который имеет повторяющиеся разделы. Для этого надо выделить повторяющуюся часть в скобки, а затем приписать к ней '^' и количество повторений. Например, следущие две записи эквивалентны:

  • <3|3|3|3|3>
  • <3(|3)^4>

Подобная форма записи повторений может быть использована для задания значений pattern, hands, body, и colors.

прим. переводчика — отмечу, что подобное сокращение повторяющихся разделов доступно только для версий Juggling Lab'a начиная с 1.2. В более ранних версиях данный формат недоступен.


by www.jugglers.ru