Сцена
Pixor показывает вашу модель как сцену: модель с ее частями и скелетом, камеры, создающие спрайт-листы, и свет. Ее можно обойти в 3D, переключить любой вид в пиксель-арт и заглянуть внутрь каждого этапа пиксельного конвейера.
Четыре шага и рабочие пространства сверху
Четыре шага — это этапы от модели до готового листа, слева направо: Сцена, Действие, Стиль и Ассет. Клавиши с 1 по 4 (или с Ctrl+1 по Ctrl+4) переключают между ними. Пиксель-арт впервые появляется на шаге «Стиль», а спрайты существуют только начиная с шага «Ассет»: движение сначала решается в 3D.
Каждый шаг — отдельная работа, и Инспектор справа содержит только параметры этой работы:
| Шаг | Для чего это | Что содержит Инспектор |
|---|---|---|
| Сцена | собрать сцену: модель, добавленные фигуры, расположение объектов, камеры, свет | все, что выделено |
| Действие | создать действия: графы узлов (клипы, вращения, ключи, заданные вручную), с плавным воспроизведением в 3D | как движется выбранное действие: root motion, опорные ступни, величина, тайминг клипа с ключами |
| Стиль | решить, как создаются пиксели | пресет, цвета, материалы, линии, затенение, очистка и облик в виде узлов |
| Ассет | нарезать каждое действие на кадры спрайтов, а также листы и файлы, которые они записывают | выбранный узел графа ассета: кадры в секунду или выбранные кадры, диапазоны кадров, удержания, раскладка, файлы, варианты |
Вкладки вверху — это рабочие пространства, и они ваши. Рабочее пространство — это имя, шаг, с которым оно работает («Сцена», «Действие», «Стиль» или «Ассет»), и собственная раскладка панелей. Pixor начинает с одного пространства на каждый шаг. Щелкните вкладку правой кнопкой, чтобы управлять ею так же, как панелью: «Дублировать», переименовать, «Переместить» влево или вправо, удалить («Удалить NAME», сразу), создать новое рабочее пространство любого шага («Новое рабочее пространство Стиль»…) или «Новое пользовательское рабочее пространство»: одна пустая область, которую можно делить и заполнять по своему вкусу; + в конце полосы тоже добавляет его, а вкладку можно перетащить вдоль полосы, чтобы изменить порядок. Два рабочих пространства «Стиля» — одно с высоким графом рядом со спрайтом, другое для настройки цветов — это две вкладки, каждая со своими запомненными панелями. «Показать рядом» в меню другой вкладки делит окно: текущее рабочее пространство слева, то — справа, каждое со своим шагом и панелями, например граф стиля рядом с графом ассета. «Убрать показ рядом» в его меню возвращает все обратно.
Панель принадлежит одному шагу. Шаг рабочего пространства, в котором вы находитесь, решает, какие панели в нем есть, а меню Панели (Панели этого рабочего пространства) предлагает только те, что относятся к этому шагу:
| Шаг | Его панели |
|---|---|
| Сцена | Структура, 3D-вид, Граф сцены, Инспектор, История |
| Действие | Структура, Действия, 3D-вид, Таймлайн, Граф действия, Редактор клипа, Инспектор, История |
| Стиль | Стили, 2D-вид, Граф стиля, Инспектор, История |
| Ассет | Ассеты, 2D-вид, Граф ассета, Таймлайн, Инспектор, История |
В меню Панели есть также Сбросить панели — возвращает показанное рабочее пространство к виду, в каком его шаг поставляется, — и Сохранить рабочее пространство… и Использовать рабочее пространство…: файл .pixorlayout хранит рабочее пространство целиком — его имя, шаг и панели, — а Использовать рабочее пространство… добавляет его как отдельное рабочее пространство рядом с показанным. Файл рабочего пространства (и сценарий --ui-test) называет панель по ее заголовку строчными буквами, с дефисами между словами: outliner, 3d-view, 2d-view, scene-graph, style-graph, asset-graph, clip-editor, empty-area.
Заголовок окна содержит меню «Проект» («Новый проект» (Ctrl+N), «Открыть проект…» (Ctrl+O), «Сохранить проект» (Ctrl+S), «Сохранить проект как…», «Сохранить как шаблон проекта…», «Дублировать сцену», недавние проекты и «Выход» (Ctrl+Q)), «Импорт…» (Ctrl+I) — он принимает все форматы, которые читает Pixor, — и сразу после него «Экспорт» (Ctrl+E) слева, имя проекта посередине, а справа отмену, повтор, «Историю» и меню «Панели», затем размер интерфейса, настройки и справку. Интерфейс доступен на десяти языках: английском, французском, испанском, немецком, бразильском португальском, итальянском, русском, упрощенном китайском, японском и корейском — сначала на языке системы, любой другой выбирается в «Настройки › Язык». Файлы, которые записывает Pixor, имена того, что вы создаете, и командная строка остаются как есть. Под ним ряд вкладок рабочих пространств заканчивается справа кнопкой «Воспроизвести/Пауза» и четырьмя списками, общими для всех шагов (а при нескольких сценах перед ними стоит еще список «Сцена»): «Камера», «Действие», «Стиль» и «Ассет» — у каждого иконка и выбранное значение. «Действие», «Стиль» и «Ассет» — независимые конвейеры; первые два берут выбор из заголовка как свои входы: шаг «Действие» воспроизводит выбранное действие, видимое выбранной камерой, шаг «Стиль» рисует его выбранным Стилем. Шаг «Ассет» им не следует: узлы «Спрайты» графа ассета называют собственные камеру, действие, Стиль, набор частей и нарезку, а окно «Экспорт» открывается с конвейером ассета, выбранным в списке «Ассет» (см. граф ассета и окно экспорта).
Имя проекта находится посередине заголовка и в заголовке окна: «Проект без названия» у нового проекта — созданного пустым, из импортированной модели, образца, шаблона проекта или с экрана первого запуска, — а потом то имя, которое вы ему дадите. После сохранения за ним в скобках следует файл, в котором он хранится, — Crown jewels (crowns.pixor); импортированная в него модель там никогда не называется. Щелкните имя, чтобы переименовать проект: оно становится полем с выделенным именем, Enter или щелчок в другом месте сохраняет введенное, Escape оставляет старое имя, а пустое имя отклоняется. Переименование — один шаг Истории и несохраненное изменение. «Сохранить проект как…» предлагает файл, названный по проекту; сохранение сохраняет имя, а переименование никогда не переименовывает файл. Скрипты задают его через pxr project set P --name NAME.
О несохраненных изменениях спрашивают до того, как они будут потеряны. Закрытие окна (его кнопка закрытия, «Выход» или Ctrl+Q) и все, что ставит на место этого проекта другой, — «Новый проект», «Открыть проект…», недавний проект, файл, брошенный на окно или открытый из файлового менеджера, пока работает Pixor, предмет библиотеки, выбор на экране первого запуска, — сначала спрашивает «Сохранить изменения в NAME?»: «Сохранить» (Enter), «Не сохранять» или «Отмена» (Escape). «Сохранить» для ни разу не сохранявшегося проекта сначала спрашивает куда, и ничего не продолжается, пока он не сохранен; при неудачном сохранении проект остается открытым с ошибкой. «Не сохранять» также удаляет автосохранение, поэтому в следующий раз эти изменения не будут предложены. Несохраненный означает отличающийся от того, что было сохранено или открыто последним (имя посередине заголовка заканчивается на *): только что импортированная модель, образец или проект из шаблона, оставленные такими, какими были созданы, ни о чем не спрашивают, ведь их можно создать снова; проект, восстановленный из автосохранения, никогда не сохранялся и спрашивает, пока не будет сохранен.
Середина окна — это вид, и только вид. У «Сцены» и «Действия» — 3D-вид. У «Стиля» и «Ассета» — 2D-вид, который показывает то, что создает выбранный узел графа этого шага:
- на шаге Стиль — изображение, которое передает дальше выбранный узел, или, если выбран узел «Выход» или ничего не выбрано, готовый спрайт с его инструментами (сетка, калька, превью освещения);
- на шаге Ассет — список спрайтов, который выдает узел «Спрайты», «Диапазон кадров» или «Удержание», воспроизводимый, нарезанный, разрезанный и разложенный по слоям так, как он будет записан; то, что передает дальше промежуточный узел, файл, который запишет выходной узел (PNG, воспроизводимая анимация, JSON как текст), или лист, который создает узел «Лист» (или весь лист, если ничего не выбрано). Слой над ним выбирает, какой слой листа рисуется, или Все, стопкой: слои листа, сложенные стопкой так, как их складывает движок, с переключателем для каждого, вживую или прочитанные обратно из экспортированных файлов. Список выбирает, какой список спрайтов показан, а Лист для — какую камеру (какую сторону) из того, что рендерит выбранный узел «Спрайты».
Нет панели «Лист», «Слои» или списков спрайтов: список спрайтов — входной узел графа ассета, а все остальное, что они делали, — это способы смотреть в 2D-виде.
Все, что показывает 2D-вид, перемещается одинаково — спрайт, удержанный рендер рядом с ним, панель, изображение узла, экран CRT, лист, сложенные слои, записанное изображение, JSON или любой другой текст:
| Делайте | Куда |
|---|---|
| Прокрутка (или щипок) | масштаб относительно указателя, одно деление — тот же шаг, что в 3D-виде и графах |
| Перетаскивайте средней кнопкой (или с Alt левой) | переместить его |
| Домой | снова вписать: наибольший целый масштаб, при котором помещается (текст — в натуральную величину) |
| - и + на панели спрайта | отдалить или приблизить на одно деление |
Сначала каждое изображение показывается целиком. Зум — в правом нижнем углу (для спрайта — на панели спрайта), в процентах. Между целыми шагами пиксель-арт остается пиксель-артом: каждый пиксель рисуется целыми экранными пикселями, и два соседа различаются не более чем на один экранный пиксель. Текст масштабирует свои буквы.
Рабочее пространство каждого шага изначально устроено одинаково: список слева, вид посередине, Инспектор справа и граф внизу —
| Шаг | Слева | Середина | Вправо | Низ |
|---|---|---|---|---|
| Сцена | Структура на всю высоту | 3D-вид | Инспектор во всю высоту | граф сцены, только под 3D-видом |
| Действие | действия | 3D-вид, воспроизводится действие | Инспектор | граф действия на всю ширину (таймлайн и редактор клипа за ним) |
| Стиль | стили (все Стили) | 2D-вид | Инспектор | граф стиля на всю ширину (библиотека узлов вдоль левого края, как у каждого графа) |
| Ассет | ассеты (все конвейеры ассета) | 2D-вид | Инспектор | граф ассета на всю ширину (за ним таймлайн; каждый параметр экспорта находится на одном из его узлов) |
Щелчок в списке показывает этот Стиль или конвейер ассета в графе и 2D-виде шага — тот же выбор, что и в соответствующем списке заголовка, и строка состояния об этом сообщает («Показан конвейер ассета icons»). Кнопка под списком — «Новый Стиль», «Новый конвейер ассета» — создает копию показанного, названную по нему (Pixel Art 2, Main 2), а контекстное меню строки переименовывает его, «Дублировать» создает копию, удаление («Удалить NAME…», с подтверждением; удалить можно любой, и первый тоже, если остается другой), а «Сохранить набор…» и «Использовать набор…» позволяют делиться им как набором. Перетаскивайте строки вверх и вниз, чтобы изменить порядок (одно перетаскивание — один шаг отмены).
Инспектор есть на всех четырех шагах и показывает предмет работы этого шага; Историю можно открыть на любом из них. Все остальное находится там, где делается его работа: Структура перечисляет содержимое 3D-сцены, поэтому она есть на шагах «Сцена» и «Действие» (чтобы выбирать, что двигать); граф ассета записывает файлы, поэтому он есть только на шаге «Ассет». История — вкладка за Инспектором.
Перетащите любую панель за ее вкладку, чтобы переместить: на строку заголовка другой области, чтобы присоединить к ее вкладкам, в середину области — с тем же результатом, или к одному из ее краев, чтобы разделить ее, — в том числе в рабочее пространство чужого шага, если вам так удобнее. Щелкните правой кнопкой по строке заголовка (или нажмите стрелку на ее правом конце), чтобы открыть меню области: разделить ее, закрыть панель, добавить сюда другую. Кнопки закрытия нет; меню Панели возвращает закрытую панель. Значок слева в строке заголовка обозначает тип области (каждая панель графа показывает значок своего шага; у таймлайна — линейка, у списка действий — значок Действия, у редактора клипа — значок ключей), как в Blender: щелкните его и выберите другую панель шага, и область покажет ее (панель, уже открытая в другом месте, поменяется с ней местами). Панели всегда следуют за окном: при изменении его размера каждая область растет или сжимается вместе с ним, ни одна не сворачивается. Сбросить панели в меню «Панели» возвращает рабочее пространство к тому виду, в котором шаг поставляется.
- Структура («Сцена» и «Действие», слева): все содержимое сцены в виде дерева. Щелкните строку, чтобы выбрать ее, Ctrl+щелчок или Shift+щелчок — чтобы выбрать несколько (см. Выбор нескольких); ее + добавляет в сцену. Все, что он добавляет, — еще одна модель (предмет), реквизит на кости, фигура, изображение, слова, объем, лампа, эффект, часть мира, — это узел графа сцены, а строка и узел — одно и то же: выбор любого из них выбирает другой, а удаление любого удаляет оба. Меню +, как и меню «Добавить» любого графа, раскладывается на столько колонок, сколько нужно окну, чтобы показать его целиком; если не помещаются даже колонки (маленькое окно, крупный текст или просторные отступы), каждая группа становится подменю.
- Инспектор (справа): параметры того, чему посвящен шаг.
- История (вкладка за Инспектором): все сделанные вами изменения по порядку. См. Отмена и история.
- 3D-вид: Tab разворачивает его на все окно и обратно.
- Действия («Действие», слева): действия проекта и под ними его процедуры.
- «Стили», «Ассеты» (слева на шагах «Стиль» и «Ассет»): Стили и конвейеры ассетов проекта.
- «Таймлайн» и «Редактор клипа» («Действие», вкладки рядом с графом действия): кадры показанного действия, а также ключи и кривые выбранного узла «Клип» или «Ключевые кадры». На шаге «Ассет» таймлайн находится за графом ассета — для ручного выбора кадров узла «Спрайты».
Выбор работает везде одинаково: строка на панели «Структура», часть, камера или свет в 3D-сцене либо действие в списке действий. Выбор объекта на панели «Структура» или в 3D-сцене переводит на шаг «Сцена», где находятся его свойства (на шаге «Действие» вы остаетесь, чтобы ставить ключи); щелчок на таймлайне или листе оставляет вас там, где вы были.
Выбор нескольких
Выделение может включать несколько объектов, один из которых — основной: тот, по которому щелкнули последним. На нем стоит гизмо, основная камера — та, которую показывает 3D-вид, а ее узел граф сцены показывает крупно.
| В Структуре | Операция |
|---|---|
| Щелчок | выбирает только эту строку |
| Ctrl+щелчок | выбирает его дополнительно или снова снимает выбор |
| Shift+щелчок | выбирает все строки от последней, по которой щелкнули, до этой |
| Ctrl+Shift+щелчок | добавляет этот диапазон к выбранному |
| Ctrl+A, Escape (указатель над панелью «Структура») | выбирает все показанные строки / ничего |
| Ctrl+D (указатель над панелью «Структура») | дублирует выбранное |
| Удалить | удаляет выбранное: один вопрос, одна отмена |
Диапазон через Shift+щелчок идет по строкам в том порядке, в каком они на экране, сверху вниз, через заголовки (фигура, камеры и лампа могут быть одним диапазоном), но только по видимым строкам: то, что скрыто свернутым заголовком, в него не попадает. В 3D-виде Ctrl+щелчок добавляет или снимает выбор, как в Структуре, а Shift+щелчок добавляет (у пространства нет порядка, по которому мог бы идти диапазон); гизмо, а также G, R и S затем перемещают, поворачивают или масштабируют все выбранное вместе, каждое на столько же, на сколько основное (масштаб — во столько же раз). Граф сцены — тот же выбор: выбранные строки — это выбранные в нем узлы, а рамка или Shift+щелчок там выбирают их строки. Перетаскивание строки выбранной камеры перемещает вместе с ней все выбранные камеры, по одной позиции за раз.
Инспектор при выборе нескольких объектов сообщает, что выбрано («Камер: 3», «Объектов: 4», если они разных типов), и показывает то, что у них общее:
- Все одного вида: каждый параметр этого вида — для камер игра, вид, наклон, проекция, поле зрения, поворот, размер, ширина, высота и зум; для фигур, ламп, объемов и изображений — параметры их узлов.
- Разных типов: только параметры, которые есть у каждого из них, с тем же именем и диапазоном. У фигуры, объема и модели общие положение («В точке») и поворот («Поворот»); у фигуры и части — «Показано». У камеры и фигуры нет ничего общего, и Инспектор так и говорит.
- Имена никогда не повторяются: два предмета с одним именем рисовали бы каждый оба.
Параметр, в котором все согласны, показывает свое значение. Параметр, в котором они различаются, — смешанный: длинное тире (—) в числовом, текстовом или цветовом поле, «Смешанный» в выпадающем списке, черточка во флажке. Правка абсолютна: все, что вы задаете, задается каждому из них, поэтому, если выбраны все камеры, ввод 48 в «Ширина» и 48 в «Высота» делает холст каждой камеры 48x48. Перетаскиваемое число начинается со значения основного объекта и дает всем показанное число. Каждая правка — один шаг истории, сколько бы объектов она ни изменила. У камеры без собственного холста (с размером по пикселям на метр) нет ширины: сначала выберите для всех «Размер». Ни одна камера не владеет Стилем (Стиль, который берется, называет узел «Спрайты»), поэтому задавать Стиль по камерам здесь нечего.
Перемещение
Заголовок 3D-панели выбирает, как рисуется сцена. Откуда смотреть, выбирать не нужно: потяните — и вы в свободном виде; C над 3D-видом (или кнопка Смотреть через в заголовке) смотрит через камеру, выбранную в заголовке.
| Делайте | Куда |
|---|---|
| Перетаскивание | орбита |
| Перетаскивание правой кнопкой, средней кнопкой или с Shift | кастрюля |
| Прокрутка (или щипок) | приближение к опорной точке; одно деление — тот же шаг (около 1.22x), что в 2D-виде и графах |
| W A S D, Q E | лететь вперед, вбок, вниз и вверх (Shift — быстрее) |
| F или двойной щелчок | показать модель |
| Z | перебирать режимы затенения |
| Tab | панель под указателем во весь экран и обратно (или кнопка справа в заголовке любой панели) |
| C (над 3D-видом) | смотреть через показанную камеру или вернуться в свободный вид |
| P | перспективная или ортографическая |
| Shift+G | сетка земли в 3D, пиксельная сетка поверх спрайта |
| C, D, A (над 2D-видом) | цвета, которые использует этот кадр; что изменилось с предыдущего кадра; зафиксируйте рендер и переключайтесь между ним и новым |
| G, R, S | переместить, повернуть или масштабировать выбранное (затем X, Y или Z — ограничить осью, цифры — точное значение, Enter — применить, Escape — вернуть) |
| Shift+D, X | дублировать, удалить (все выбранное) |
| Ctrl+щелчок, Shift+щелчок | выбрать дополнительно (повторный Ctrl снимает выбор) |
| . , Home | кадрировать выбранное, кадрировать все |
Навигационный гизмо в правом верхнем углу — это оси сцены: три коротких отрезка с квадратным наконечником на каждом. Щелкните наконечник, чтобы посмотреть прямо вдоль этой оси, и еще раз — чтобы посмотреть с другой стороны; перетащите гизмо, чтобы повернуть вид. Он называет ось, пока указатель над ее наконечником, и тускнеет, пока вид поворачивается. Под ним — масштаб, проекция и камера.
Гизмо трансформации находится на выбранном — модели, фигуре, объеме, излучателе; при выборе нескольких — на основном, и двигает их все, — а в панели инструментов 3D-вида пять инструментов для того, что он делает: «Выбрать» (без гизмо), «Переместить», «Вращение», «Масштаб» и «Трансформация» (все три сразу); G, R и S работают при любом выбранном. Перетащите ось, чтобы изменить ее значение. Перемещение идет по целым пикселям спрайта, поворот — шагами по 15 градусов, масштаб — по целым пикселям размера; удерживайте Shift, чтобы менять их свободно. Те же числа есть в блоке «Трансформация» («Положение», «Поворот», «Масштаб») в верхней части Инспектора.
Режимы затенения
Справа в заголовке 3D-панели, опять как в Blender:
| Режим | Шоу |
|---|---|
| Каркас | только ребра меша, задние скрыты. Удобно, чтобы проверить, как построена форма, и чтобы выровнять модель по пиксельной сетке |
| Сплошной | просто затененные поверхности: повседневный вид для перемещения |
| Рендер | настоящий конвейер пиксель-арта, вживую с этого вида, так что вы видите спрайт, который дал бы этот ракурс |
«Рендер» создается точно так же, как снимки листа (G-буфер на GPU, все проходы на CPU), только с той точки, откуда вы смотрите. Ctrl+прокрутка увеличивает или уменьшает его пиксели на тот же шаг за щелчок колеса, в целых пикселях экрана; они такого же размера, как пиксели спрайта в 2D-виде.
Камеры
Камера — это одна сторона спрайта: восемь сторон — это восемь камер. Камеры с одинаковыми видом, наклоном и размером кадрируются вместе и записывают один лист, по строке на камеру; группа первой камеры (Юг в новом проекте) пишет по пути экспорта, а любая другая группа добавляет к нему имя своей камеры (hero.png, hero_platformer.png). pxr render hero.pixor записывает их все. Перетащите камеру вверх или вниз в структуре, чтобы изменить порядок (одно перетаскивание — один шаг отмены); с первой камерой сравниваются размеры остальных.
Добавьте камеру через + в Структуре: «Камера для…» настраивает ее под тип игры. Жанр с одной стороной добавляет одну камеру, названную по нему; жанр с несколькими — по камере на каждую сторону, названную по стороне, которую она видит («Юг», «Юго-восток»…).
| Игра | Вид | Стороны | Размер |
|---|---|---|---|
| Платформер | сбоку, смотрит вправо | 1 (отражение для левой) | 32 px |
| Файтинг | почти сбоку | 1 | 128 px |
| Beat 'em up | сбоку, 18° вниз | 1 | 64 px |
| Point-and-click | 10° вниз | 8 | 96 px |
| RPG с видом сверху | три четверти, 35° | 4 | 32 px |
| Экшен-приключение | три четверти, 50° | 8 | 48 px |
| Изометрия (2:1) | 30° вниз, 45° вокруг | 8 | 64 px |
| Тактика | изометрия | диагонали: 4 | 48 px |
| Стратегия / RTS | 40° вниз, 45° вокруг | 16 | 32 px |
| Гонки | 12° вниз | 16 | 64 px |
| Шутер с видом сверху | прямо вниз | 16 | 32 px |
| Шмап | прямо вниз, смотрит вверх | 1 | 32 px |
| Предметы и иконки | 25° вниз, поворот 30° | 1 | 32 px |
Все остается свободным и потом: Игра, Вид, Наклон (отрицательный — взгляд снизу вверх), Проекция, Поворот и Размер. Кольцо вокруг модели добавляет 4, 8, 16 или 32 таких камер, по одной на сторону. В командной строке то же делает --camera platformer.
Чтобы навести камеру на глаз: перейдите в свободном виде к нужному ракурсу и нажмите Камера по виду в заголовке 3D-вида. Или перетащите камеру в 3D-виде вокруг модели; Shift привязывает к шагу 15°.
Камера ортографическая, если ее «Проекция» не указывает перспективу, и с размером «По размеру модели» она кадрирует саму модель (поэтому персонаж никогда не «плывет»): тогда важны только ее ракурс и размер, а не место, где она стоит. «Холст и зум» и «Пикселей на метр» вместо этого фиксируют кадр.
Несколько сцен
Сцена — это одна расстановка объектов: модель и место, где она стоит, граф сцены со всем остальным в нем, камеры, скрытое, наборы частей и земля. Проект начинается с одной сцены, и, пока она одна, здесь ничего не показывается. Действия, Стили и конвейеры ассетов принадлежат проекту и общие для всех сцен: действие называет предметы по именам, поэтому оно воспроизводится в любой сцене, где у предметов такие имена.
Дублировать сцену — вверху Инспектора на шаге «Сцена» или в меню «Проект» — создает вторую сцену, копию показанной, и показывает ее: например, того же героя как жетон 16 px с видом сверху или промо-кадр с землей и лампами. Меняйте ее камеры и объекты; первая остается как была. Начиная с двух сцен:
- селектор Сцена в заголовке, перед селектором камеры, выбирает сцену, которую показывает каждый шаг (показ другой сцены — не изменение: его нет в Истории, и он не требует сохранения);
- раздел Сцена в Инспекторе называет показанную сцену (ее листы называются по ней) и удаляет ее;
- у узла Спрайты графа ассета есть параметр Сцена: все сцены или одна. Выбор узла «Спрайты» другой сцены на шаге «Ассет» показывает ту сцену.
Один экспорт записывает листы всех сцен: листы первой сцены — под именами, которые дает граф, а остальных — с добавленным именем сцены (hero.png, hero_map.png).
Из скрипта:
pxr project set hero.pixor --add-scene map --view top-down --size 16 # a copy, then edited
pxr project set hero.pixor --scene map --hide Cape # edits that scene
pxr project set hero.pixor --rename-scene map:token
pxr graph list hero.pixor --which scene --scene token
pxr graph set hero.pixor --which asset --node sprites --set scene=token
pxr project set hero.pixor --remove-scene token
pxr render hero.pixor # every scene's sheets
Свет
Ключевой свет выбирает полосу света для каждого пикселя и отбрасывает тени. Заполняющий свет высветляет теневую сторону (при силе 0 он выключен). Контровой свет подсвечивает края, которые отворачиваются от вас. Перетаскивайте ключевой и заполняющий свет в 3D-сцене или настраивайте их в Инспекторе.
Эти три — направления, одинаковые для каждой стороны спрайта, поэтому они относятся к облику: часть Стиля, перечисленная в разделе Свет в Структуре, чтобы их можно было перетаскивать там, где вы их видите. Лампа — другое дело: она стоит где-то в сцене, поэтому это узел графа сцены, как фигура (см. Части, кости, реквизит и эффекты).
Следует за камерой (ключевой свет, по умолчанию включено) держит свет с одной и той же стороны для каждой камеры, как обычно и нужно спрайтам. Если выключено, свет остается на месте в сцене: разверните персонажа — и его спина окажется в тени.
Фигуры
Фигуры строятся в Pixor из параметров — для подбираемых предметов, реквизита, частей тайлов и болванок, с которых начинается сцена. Пункт + на панели «Структура» предлагает в разделе Фигура: коробку, сферу, цилиндр, конус, тор, плоскость, капсулу, клин, пирамиду, призму, лестницу, арку и буквы. Арка — это блок со сквозным проемом со скругленным верхом — дверной проем, ворота, мост, — а ее Грани кривых задают, насколько скруглен верх.
Новая фигура ставится рядом с тем, что уже есть, кадрируется в 3D-сцене и получает гизмо перемещения: стрелка на каждую ось, X — красная, Y — зеленая, Z — синяя. Перетаскивание стрелки перемещает фигуру по целым пикселям листа, чтобы край никогда не попадал между двумя пикселями; удерживайте Shift, чтобы двигать ее свободно.
В Инспекторе:
- «Размер фигуры» — насколько фигура простирается по каждой оси («Ширина», «Высота», «Глубина»), в метрах, а под ним показан размер в пикселях листа. «Сегменты» — из скольких граней строится круглая фигура («Стороны» у призмы, «Шаги» у лестницы): малые значения дают граненый вид, который хорошо читается в малом размере.
- «Трансформация» размещает и поворачивает его, а «Вкл.» в разделе «Куда» может повесить его на кость, где он следует за движением, как реквизит.
- Цвет проходит через палитру, как и любая другая поверхность.
- Дублировать и Удалить находятся вверху, а Ctrl+Z возвращает удаленную фигуру.
Каждая фигура — это узел Фигура графа сцены: ее параметры находятся на узле, и там же она названа по имени; кольцо или ряд после нее ее повторяют. Фигуры сохраняются как параметры, а не как меши, поэтому проекты остаются маленькими, а каждая пересборка дает те же вершины. В командной строке: pxr project set x.pixor --add-shape box:1,0.5,1:0,0.25,0:#c86432 или --shape при рендере.
Экспортировать все как glTF… вверху Инспектора фигуры записывает каждую фигуру сцены в .glb, по узлу на фигуру с ее цветом. Фигуры живут в проекте как параметры и обычно покидают Pixor в виде пикселей; это путь обратно к геометрии — чтобы продолжить в редакторе моделей или перенести в движок. В командной строке: pxr shapes project.pixor -o shapes.glb, который также принимает описания --shape без проекта.
Pixor — не программа для моделирования: в нем нет редактирования вершин, булевых операций и скульптинга. Это умеет Blender: экспортируйте результат в glTF и откройте в Pixor.
Удаление
Все, что можно добавить, можно и удалить, двумя способами: щелкните правой кнопкой и выберите «Удалить NAME…» (строка Структуры, действие, процедура, строка списка, ключ, узел или заметка графа, вкладка рабочего пространства, набор частей, вариант) или выберите объект и нажмите Delete. Delete удаляет то, что выбрано в панели под указателем: выделение Структуры (все целиком, если выбрано несколько: один вопрос, «Удалить фигуры (3)?», и одно Ctrl+Z), строку списка «Стили», «Спрайты» или «Ассеты», выбранные ключи редактора клипа, выбранный узел графа, показанную вкладку рабочего пространства. Pixor сначала спрашивает («Удалить NAME?», Enter означает «Удалить»), а Ctrl+Z возвращает удаленное; собственный пункт вкладки рабочего пространства «Удалить NAME» срабатывает сразу. То, что пришло с импортированной моделью, — ее части и кости — принадлежит модели и здесь не удаляется.
Отмена и история
Каждое изменение — это шаг. Кнопка История рядом с «Отменить» и «Повторить» в заголовке окна выводит на передний план панель История — вкладку за Инспектором; повторное нажатие возвращает Инспектор. В ней шаги перечислены по порядку, а текущий отмечен. Щелкните шаг, чтобы сразу вернуться к нему. Отмененные шаги остаются в списке бледными, потому что их еще можно повторить.
Кнопки отмены и повтора называют то, что они отменят или вернут («Отменить Added the shape crate»), а строка состояния сообщает, что они сделали. Одно перетаскивание ползунка — один шаг.
Части, кости, реквизит и эффекты
- Части: глаз скрывает часть во всех листах. Выбор части задает ее хитбокс или хертбокс (записываемые в экспорт JSON) и называет материал, из которого она сделана; что облик делает с этим материалом, задается на шаге «Стиль» в разделе «Материалы», потому что это относится ко всем частям, которые его используют.
- Скелет: выбор кости делает ее точкой крепления (ее положение попадает в JSON), позволяет ей качаться вместе с движением (пружинные кости для волос, плащей и хвостов) или прикрепляет к ней реквизит. Пока показан клип с ключами, G, R и S над 3D-сценой задают позу выбранной кости — или выбранной части, если ее не двигает ни одна кость (колесо), — и все изменения становятся ключом в показанном кадре («Ключи задаются здесь»); если выбрана модель, движется сама модель. Ключевой поворот продолжает счет после полукруга, поэтому колесо с ключами от 0 до -360 крутится.
- Реквизит, эффекты, лампы и объемы добавляются через +. Ромб эффекта можно перетаскивать в 3D-виде; размер и положение объема вводятся в его «Трансформация» (Объемы). Лампа освещает то, что рядом с ней, собственными ступенями палитры: ее положение задается в «Трансформация», а ее Инспектор показывает, какая кость ее несет («Крепится к»: факел в руке), как далеко она светит («Охват»), насколько она сильна («Сила»), как она затухает («Спад») и является ли она конусом, направленным в точку («Угол конуса», 0 — без конуса, и «Цель»): это те же строки, что ее узел показывает в графе сцены, под теми же словами, как и у объема. Эффекты, лампы и объемы — узлы графа сцены: «Ряд» после лампы — это ряд ламп, а лампа, ни к чему не подключенная, в сцену не попадает. Реквизит и пружина тоже его узлы — «Реквизит» и «Пружина», — но они меняют модель, а не стоят рядом с ней: каждая копия импорта держит реквизит в руке и качается с пружиной, где бы ни находился узел в графе.
Реквизит на костях
Реквизит — это другая модель, которую держит кость: меч, щит, факел, флаг. Он приходит целиком — со своими узлами, скинами и клипами, а не только с треугольниками:
- Держится за рукоять. Узел реквизита с именем
grip(илиattach,socket,hold) — то, что держит кость, повернутое так же, как кость; В руке у называет другой узел, а без него держится начало координат реквизита. Пустышки у рукояти, поставленной в редакторе моделей, мечу достаточно, чтобы лечь в любую руку. - Двуручный хват. Вторая пустышка с именем
grip2(илиforegrip,offhand,support) — место для другой руки: навершие двуручного меча, цевье винтовки, дальний конец посоха. В каждом кадре, что бы клип ни делал с этой рукой, плечо и предплечье поворачиваются так, чтобы кисть легла на нее; локоть сохраняет сторону сгиба, а на недосягаемую рукоять рука лишь указывает. - «Смещение», «Вращение X/Y/Z» и «Масштаб» сдвигают его оттуда по собственным осям кости, в метрах и градусах; реквизит сохраняет свой размер в метрах даже на риге в сантиметрах.
- Его собственное движение проигрывается. Клип реквизита с тем же именем играет под каждым клипом модели; иначе — его первый клип, снова и снова, так что флаг развевается, пока знаменосец идет. Так двигаются только его собственные части: клип, который поворачивает весь реквизит (поворот подбираемого предмета), отдается руке. Неподвижная модель принимает клипы реквизита как свои.
- Его узлы могут быть точками крепления. Они называются
prop/node, так что--socket sword/tipпомещает острие меча в JSON, кадр за кадром. - Кость с другим именем находится, как и клипы: проект, который держит меч в
hand.R, держит его и на риге Mixamo (mixamorig:RightHand).
В командной строке: --prop sword.glb:hand.R@at=0,0.05,0@turn=0,0,90, а pxr project set P.pixor --add-prop … принимает то же самое и добавляет узел Prop (pxr graph add P.pixor --which scene --node prop --set model=sword.glb --set bone=hand.R — тот же узел, по одному параметру).
Действия
Действие — это движение всей сцены: ходьба, атака, поворотный стол, свет, проходящий по кругу, — то, что играет на каждом объекте на протяжении его кадров. В сцене столько действий, сколько ей нужно, и каждое становится спрайтами на шаге «Ассет».
У объектов есть собственное движение: клипы модели и созданные здесь клипы с ключами, каждый из которых состоит из каналов — поворот кости, положение части, показанный набор частей, — заданных ключами во времени. Действие воспроизводит их: тот, что называет клип модели, или клип с ключами, который задает ключи многим объектам сразу. Процедура — это каналы, созданные один раз и воспроизводимые внутри любого действия узлом «Процедура»; сама по себе она никогда не экспортируется.
Список Действия содержит действия проекта: его клипы, а также поворотный стол, проход света, цветовой цикл, циклы движения и эффекты, а затем процедуры проекта в разделе Процедуры. Что попадет в листы, здесь не задается: узлы Спрайты графа ассета берут названные в них действия, а вариант Все, кроме Статики (так у нового узла) берет все действия этого списка, кроме Статики (см. граф ассета). Клип модели, которого нет в проекте (удаленный из списка или отсутствовавший при создании проекта), возвращается через Добавить действие › Клип модели: NAME. Перетащите строку вверх или вниз, чтобы изменить порядок: клипы перемещаются среди клипов (это порядок строк листа), действия — среди действий, одно перетаскивание — один шаг отмены. Добавить действие под списком предлагает Новое действие, Новая процедура, Клипы из файла…, клипы модели, которых нет в проекте (Клип модели: Sway…), клипы библиотеки движений (Клип библиотеки: walk…), Действие с ключами и готовые действия: Поворотный стол, Проход света, Цветовой цикл, Вращение, Покачивание, Качание, Пульсация, Сжатие, Мерцание. Цикл создается точно так же, как его создает --motion, на выбранном объекте (Мерцание — на источнике света). Выбор действия показывает его параметры в Инспекторе: как оно движется (root motion, ключи клипа с ключами, за сколько секунд поворотный стол делает оборот). Как оно нарезается на кадры (частота кадров, умные кадры, кадры, выбранные вручную), задает узел «Спрайты» графа ассета, который его берет.
Действия создаются здесь, и только здесь. Граф сцены расставляет предметы; действий он не создает. Копия, которой узел Воспроизвести графа сцены дал собственный клип, проигрывает его поверх кадров любого действия: мельница, вращающаяся рядом с неподвижным домом, — это Новое действие из нужного числа кадров (сколько — говорит его узел «Выход») и узел «Воспроизвести» на мельнице. Из скрипта: pxr project set game.pixor --add-action windmill, затем pxr graph set game.pixor --which action --pipeline windmill --node output --set frames=8.
Поворотный стол вращает модель, а не камеры: каждая камера видит, как одна и та же модель поворачивается под неподвижным светом, как на настоящем поворотном столе, а камера с ключами по-прежнему движется поверх этого.
Удержание одного кадра дольше. На шаге «Ассет» при выбранном узле «Спрайты» рядом со счетчиком кадров под таймлайном есть Удержание (ms) — удержание показанного кадра в миллисекундах. Измените его, и этот кадр клипа будет удерживаться столько во всех листах, JSON, GIF и .aseprite — замах атаки удерживается, завершение проходит быстро, — а остальные кадры сохранят то, что им дает нарезка; Сбросить удержание вернет прежнее. Удержание принадлежит действию и отсчитывается в его собственных кадрах до «Диапазона кадров» и до узла «Удержание», так что его сохраняет каждый узел «Спрайты», который берет клип. В остальных местах таймлайн показывает удержание, не меняя его. pxr project set game.pixor --hold attack:2:300 делает то же самое.
Этапы конвейера
Pixor превращает каждый кадр в пиксель-арт поэтапно: G-буфер с GPU, разрешение в пиксели, затенение, линии и очистка. Каждый этап — узел графа стиля, и выбор узла показывает в 2D-виде, что он делает; отдельного выбора этапов нет. Рендер камеры — группа Послойный рендер с одним выходом на слой; откройте ее (стрелка справа от заголовка), и каждый слой внутри будет узлом Слой:
| Слой | Шоу |
|---|---|
| Альбедо, Нормали, Глубина, ID части, ID материала | что GPU нарисовал для каждого пикселя |
| Охват | какую долю каждого пикселя покрывает модель |
| Ключевой свет, Тень | свет до разбиения на полосы, отбрасываемые тени |
За ним идут группа «Свет и тень» (откройте ее: «Полосы света», «Блики»…), группа «Линейный рисунок» («Силуэт», «Ребра», «Чистые линии»…), «Объединить», группа «Очистка» и «Палитра»: каждый узел внутри тоже показывает свое изображение.
На шаге «Стиль» строка состояния объясняет пиксель под указателем: его часть, материал, цвет, нормаль, глубину, покрытие, N.L, тень, полосу и то, насколько он близок к порогу глубины и углу сгиба. Раздел «Отчет» Инспектора перечисляет, что нашли проверки (толстые линии, углы, сироты, пиксели вне палитры).
Параметры чувствительности (Чувствительность линий и подобные) показывают свой этап, пока вы их перетаскиваете: угол складки и шаг глубины показывают ребра, края полос — полосы, покрытие — покрытие. Отпустите — и вернется готовый спрайт.
В командной строке pxr stages model.glb -o stages/ записывает изображение каждого этапа (см. Командная строка).
Ключи, заданные здесь
Файл модели приносит свои клипы. Все, что вы создаете в Pixor, — фигура, группа, сама импортированная модель — анимируется вместо этого ключами («Добавить действие» › «Действие с ключами» под списком «Действия»).
Клип с ключами и есть клип: стороны, выбор кадров, удержания, root motion и экспорт работают с ним точно так же, как с импортированным. Его корень для root motion — самая верхняя кость, которой он задает ключи положения: ходьба, запеченная из перемещающегося клипа Mixamo (pxr project bake), закрепляется на месте, а JSON дает смещение каждого кадра, на которое игра сдвигает спрайт.
Клипы из другого файла подключаются через --anim FILE (pxr project new и set, так же как его принимает pxr render): клип Mixamo на риге с другими именами находит свои кости по их назначению, а клипы библиотеки движений lib:walk, lib:run … проект может перечислять так же, как собственные клипы модели.
| Делайте | Куда |
|---|---|
| I над 3D-сценой | поставить ключ на всю трансформацию выбранного в показанном кадре |
| Alt+I | вернуть эти ключи |
| ромбик рядом с полем | поставить ключ этому одному числу; закрашенный ромб означает, что ключ здесь есть, тусклый — что у канала есть ключи в других местах |
| щелкните строку ключей | выбрать ключ, ближайший к месту щелчка, и перейти к его кадру |
| перетащить ключ | переместить его на другой кадр (Shift — оставить копию); все выбранные ключи перемещаются вместе с ним |
| протянуть по строке там, где нет ключа | рамка: выбираются все ключи, которые она охватывает |
| Shift+щелчок по ключу | добавить к выбранным ключам или исключить из них |
| Переход к следующему | как этот ключ переходит к следующему: Шаг удерживает его (по умолчанию, потому что пиксель-арт в основном ступенчатый), Линейная идет равномерно, а сглаживания плавно начинают или заканчивают |
| «Новые ключи доходят до следующего», в действии клипа | кривая, которую получает новый ключ там, где в его строке еще нет ключа, за которым следовать: шаг, пока ее не задали, — так клип, состоящий только из вращений и полетов, делается линейным один раз, а не ключ за ключом |
| Позы | скопировать позу в этом кадре, вставить ее сюда, вставить ее отраженной слева направо (половина шага становится целым шагом), обратить клип или сделать так, чтобы последний кадр вел обратно в первый |
Собственный клип модели — из ее файла, файла клипов или библиотеки движений — берется целиком. «Превратить в ключи» в его действии создает из него клип Pixor: каждая кость, которую он двигает, с ключами в каждом кадре, чтобы править ключ за ключом; сам клип остается прежним (pxr project bake game.pixor walk).
Ключи ставятся на целые кадры с собственной частотой клипа. Времени между кадрами нет, поэтому клип везде дает одни и те же кадры, а файл проекта остается маленьким и читаемым.
Поворот задается ключами как три угла. Между двумя ключами, которые задают его углы вместе — в одних и тех же кадрах, приходя к следующему одинаково, — поворот сразу вокруг двух или трех осей идет как один поворот, так, как шел клип, из которого он мог взяться; поворот вокруг одной оси идет по своему углу, поэтому от 0 до 720 вокруг Y — это два оборота, а вращение вокруг одной оси, пока другая наклоняется, по-прежнему идет так, как говорят его углы.
Из скрипта: pxr project key game.pixor shape:coin "turn y" --frame 4 --value 180 --how linear --clip spin --frames 8 (в файле каналы Position X, Rotation Y и Scale Y называются x, turn y и size y). Без --how ключ берет кривую своей строки или клипа: --curve linear задает кривую клипа.
Наборы частей
Выражения лица, снаряжение и состояния повреждений — это геометрия, которую показывают или скрывают, а этого вариантами палитры не выразить. Скройте ненужные части на панели «Структура», затем выберите Сохранить скрытое как набор частей в разделе Наборы частей Инспектора модели. Щелкните набор, чтобы показать его; поставьте на него ключ ромбиком рядом, и клип сможет моргать, менять оружие или получать урон кадр за кадром.
Набор частей — это индекс, поэтому его ключи всегда ступенчатые: половина одного набора и половина другого — это ничто.
Набор частей может быть и целым листом: назовите его в «Набор частей» узла «Спрайты» в графе ассета, и каждый клип будет отрендерен заново с этим набором, включенным в каждом кадре, — та же ходьба без шлема, на отдельном листе или рядом с первым. Эти строки показываются в списке действий как walk · no helmet.
Из скрипта набору частей ставится ключ по его имени: pxr project key hero.pixor model "part set" --clip blink --frame 1 --value closed. --hide PART,… и --show PART,… исключают части из каждого листа, как это делает глазок.
В сцене из нескольких предметов набор может скрыть целый предмет по имени его файла (turret для turret.obj) или по его месту (item 2). Из скрипта --part-set NAME:PART,PART (можно повторять) создает набор, а --no-part-sets удаляет их. Танк, башня которого поворачивается сама по себе в тридцати двух ракурсах над корпусом в восьми, — это два предмета, по камере и по набору на каждый:
pxr project new tank.pixor --item hull.obj@0,0 --item turret.obj@0,0 --size 48 \
--ring 8 --add-camera "turret:three-quarter:48" --ring-of turret:32 \
--part-set hull:turret --part-set turret:hull
pxr graph set tank.pixor --which asset --node 0 --set 'camera=turret*' --set part_set=turret
pxr graph add tank.pixor --which asset --node sprites --alone --set camera=South,Southeast,East,Northeast,North,Northwest,West,Southwest --set part_set=hull
pxr graph add tank.pixor --which asset --node merge --alone --in 0=0 --in 1=4
pxr graph wire tank.pixor --which asset --from 5 --to 1 --slot 0
Проекту только из предметов не нужен --model.
Каждый --item — это узел Item в графе сцены, добавленный в конец его цепочки. В приложении пункт + › Предмет › Из файла модели… на панели «Структура» добавляет его рядом с имеющимся; он указан в разделе Предметы по имени файла, его части называются item N: … (N — номер узла Item в порядке, в котором их держит граф), и именно так их называет набор частей, а его Инспектор размещает, поворачивает и масштабирует его, назначает ему собственный клип (Собственный клип) или Удалить удаляет его. Импорт… (Ctrl+I) в заголовке окна работает иначе: он заменяет модель и сохраняет облик.
Что можно анимировать ключами
| Цель | Записано | Каналы |
|---|---|---|
| импортированная модель | модель |
Положение, вращение, масштаб |
| кость его рига | bone:NAME |
Положение, Поворот, Масштаб — позируются клавишами G, R и S в 3D-виде, каждое изменение — ключ (R, X, 9, Enter поворачивает на девять градусов вокруг X); значение, на которое в клипе нет ключа, — поза покоя кости |
| часть импорта, которую не сгибает ни одна кость | part:NAME |
Положение, Поворот, Масштаб относительно середины части — позируются клавишами G, R и S, как кость (R, Z, -, 3, 1, 5, Enter на последнем кадре колеса в клипе с линейными новыми ключами раскручивает его) |
| фигура, построенная здесь | shape:NAME |
Положение, вращение, масштаб |
| объем | volume:NAME |
Положение |
| изображение или текстовая карточка | picture:NAME |
Положение, Поворот, Масштаб (относительно основания) |
| излучатель эффекта | effect:N (1 — первый) |
Положение, пока под этим клипом проигрывается эффект |
| камера | camera:NAME |
поворот и наклон, прибавленные к собственным; остальные камеры остаются на месте |
| ключевой свет | свет |
поворот (азимут) и наклон (высота), а также intensity (1 — собственная у облика, 0 — как будто каждая поверхность отвернута) |
| материал | material:NAME |
glow (от 0 до 1, для светящегося материала) и сдвиг рампы (целыми ступенями по рампе) |
| изображение, составленное из кадров | picture:NAME, кадр |
какой кадр полосы показывается, начиная с 0 |
| набор частей | модель, набор частей |
какой набор показан |
Ключи облика — это то, что пиксель-художник анимирует, ничего не двигая: факел, чье свечение мерцает, руна, пульсирующая на ступень вверх по рампе и обратно, свет, тускнеющий за цикл, флаг, нарисованный четырьмя кадрами. Сдвиги рампы и кадры — целые числа, поэтому их ключи всегда ступенчатые.
pxr project key hall.pixor light intensity --frame 0 --value 1 --clip dusk --frames 8 --how linear
pxr project key hall.pixor light intensity --frame 7 --value 0.3 --clip dusk
pxr project key hall.pixor material:rune "ramp shift" --frame 4 --value 1 --clip dusk
Часть — это фрагмент импортированной модели с его именем, как его показывает Структура: колесо машины, крышка сундука, ствол башни. Модель без рига можно анимировать так без похода в Blender и обратно: часть поворачивается вокруг собственной середины, как колесо на оси, и каждый фрагмент с этим именем поворачивается вместе с ней (шина и колпак). Выберите часть, и ее ключи будут в разделе «Ключи этой части» («Поворот», «Положение»); в командной строке:
pxr project key car.pixor part:wheel_fl "turn z" --clip drive --frames 8 --loop yes --frame 0 --value 0 --how linear
pxr project key car.pixor part:wheel_fl "turn z" --clip drive --frame 8 --value -360
Часть, которую изгибает скин, двигает ее риг, поэтому задать ей ключи отдельно нельзя.
Ключи излучателя читаются, когда его эффект воспроизводится под клипом с ключами («Клип» эффекта): огонь огненного шара летит вместе с ним, дым факела следует за факелом, которым размахивает клип.
Ключ камеры поворачивает одну камеру вокруг модели — ту, которую он называет, ведь камера — это одна сторона спрайта, — поэтому орбита с ключами на камере top оставляет кольцо из восьми сторон неподвижным. Переименование камеры переносит ее ключи. Ключ света нацеливает ключевой свет: качающийся факел, восход солнца в цикле.
Попробуйте то, что описано на этой странице, на своей модели — бесплатно в браузере.
Попробовать в браузере Получить Pixor
