Улучшаем UI/UX Substance Painter #1: Кастомные хоткеи
Всем привет!
Adobe Substance 3D Painter в особом представлении не нуждается. В наше время это, по сути, индустриальный стандарт в текстурировании трёхмерных моделей, серьёзных альтернатив которому не так уж и много.
На ум приходят разве что Mari и 3D Coat. Хотя... если подумать получше, ещё у нас есть постоянно развивающийся Blender, Marmoset Toolbag, в котором тоже пытаются развивать направление текстурирования, и InsaMAT Studio, который грозится стать серьёзной альтернативой линейке Substance. Для любителей сложностей и непопулярных/полумёртвых решений есть ZBrush polypaint, Mudbox, Quixel Mixer, Armor Paint или Quixel Suite в связке с Photoshop. Также не стоит забывать и про Houdini, который обилием своих процедурных возможностей способен вогнать неподготовленных тридешников в ступор. Но сейчас не об этом.
Стать индустриальным стандартом — это ещё не значит стать идеальным приложением, лишённым недостатков. И вот именно о недостатках Substance Painter (а точнее, недостатках его UI и UX) мы сегодня и поговорим.
Сразу хочу оговориться: у меня нет желания беспочвенно поливать программу грязью — здесь не будет хейта ради хейта. Просто хочется поднять ряд наболевших вопросов, касающихся юзабилити, и заодно показать, что может быть иначе.
Горячие клавиши
Начнём, пожалуй, с горячих клавиш. Горячие клавиши (или хоткеи) — это краеугольный камень, лежащий в основе быстрого и эффективного взаимодействия с любой программой.
«Из коробки» реализованы они могут быть абсолютно по-разному. В каких-то программах на горячие клавиши можно повесить практически любую команду (Max, Maya, Blender), а в каких-то часть клавиш пользователю недоступна (как, например, в Illustrator). Где-то все клавиши заранее предопределены разработчиками и вообще не настраиваются (как это было в Marmoset Toolbag до версии 5.2). Вот, например, в Fusion 360 вообще нормального Hotkey Editor нет, и все серьёзные настройки лучше делать через .json-конфиг.
Substance Painter в этом плане где-то посередине. Тут у нас есть редактор хоткеев — без изысков. В нём доступно 90 команд (19 из которых связаны с мышкой/пером) + ещё 13 заводских хоткеев, которые поменять нельзя.
Что интересно — стандартных кнопок для сохранения/загрузки пресетов с хоткеями тут нет. Все изменения автоматически пишутся в реестр и загружаются обратно при запуске программы:
Computer\HKEY_CURRENT_USER\SOFTWARE\Adobe\AdobeSubstance3DPainter\Shortcuts
Так что тут два варианта: либо бэкапить настройки вручную, либо через скрипты.
И вот если посмотреть на количество команд, реально используемых в работе, то выяснится, что около сотни хоткеев разработчики нам не доложили. Больше половины функций из Main Menu Bar недоступны для назначения на клавиши.
Например, вы не можете быстро открывать и закрывать нужные панели, зайти в настройки проекта и т.д. Всё, что связано с созданием слоёв, масок, эффектов и т.п., доступно только через графический интерфейс.
Напомню, у нас тут приложение для рисования (обычно стилусом), и клацнуть на привычную кнопку намного проще, чем искать мелкую кнопку в UI, а потом выцеливать её стилусом или прорываться через кучу менюшек, иногда с несколькими уровнями вложенности. А вот эти тоненькие скролбары — вообще отдельная песня. Я, конечно, могу допустить, что когда ты рисуешь на топовом Wacom Cintiq с диагональю под 30 дюймов, тыкать пером в элементы UI намного приятнее...
Но, смысл хорошего интерфейса в том, что он должен легко адаптироваться под разные сценарии работы и на разном железе.
Вы только вдумайтесь: программа, первая версия которой релизнулась 15 октября 2014 года и обкатывалась на таких топовых проектах, как Uncharted 4, смогла пережить релиз 11 версий — и в итоге не имеет такого базового функционала, как создание слоёв через хоткеи. Это же натуральный бред.
Причём обычные люди уже не первый год пишут об этом. Вот пример из последнего:
Короче, можно ещё лет десять прождать, пока товарищи из Adobe разродятся обновой, нацеленной на всевозможные улучшения в области юзабилити.
Лично я ждать не стал и запилил свой вариант хоткеев. Как завещал Бендер Родригес: с блэкджеком и шлюхами.
Вот пример кастомных хоткеев для открытия различных настроек — ряд диалоговых окон разворачивается на полный экран, чтобы не тратить время на скролинг или изменение размера вручную.
Кастомные хоткеи также позволяют управлять панелями. Да, у нас есть панель Docking, и к её кнопкам также можно привязать хоткеи. Но что мне не нравится в этой панели — это то, что она выравнивает верхние границы окон по уровню кнопок. В результате, если кнопка какой-нибудь большой панели (например, Shader Settings) находится в середине панели (а порядок мы поменять не можем), то верхняя часть пустует, а сама панель уходит вниз, и её содержимое тоже нужно скролить.
Я слегка переделал логику поведения панелей, и теперь основные панели типа Texture Set List, Texture Set Settings, Display Settings, Shader Settings, History появляются в строго заданном месте (с возможностью управления положением и размером), а titlebar скрывается, чтобы больше полезной информации помещалось на экране.
Само-собой, самую важную панель Assets можно автоматизированно гонять по всему экрану
Оптимизация имеющихся кнопок, режимов и панелей
Следующее, на что хотелось бы обратить внимание — это избыточность дефолтных хоткеев.
Простой пример. У камеры есть:
- Camera projection: Perspective view — F5
- Camera projection: Orthographic view — F6
Для каждого режима — отдельная клавиша. Зачем? Это избыточно. Достаточно добавить логический переключатель, чтобы переключение происходило туда-сюда. Мало того что вы сэкономите одну кнопку — вы ещё и избавите пользователя от необходимости запоминать, какой режим на какой кнопке.
То же самое касается переключения основных режимов:
- Switch to baking mode — F8
- Switch to edition mode — F9
- Switch to visualisation mode (Iray) — F10
Наш основной режим — это рисование (edition mode), режим рендеринга (visualisation mode) — дополнительный. Делаем переключение между ними с помощью F1, например. Если мы находимся в режиме запекания (baking) и жмём F1 — возвращаемся в основной режим рисования. Таким образом, используем 2 клавиши вместо 3 — без потери функционала.
- Viewers layout: 3D|2D — F1
- Viewers layout: 3D only — F2
- Viewers layout: 2D only — F3
- Viewers layout: Swap 3D|2D — F4
Режимы переключения видов тоже реализованы избыточно. Достаточно добавить переключатель 3D only ↔ 3D|2D. Для остального уже есть команда Swap 3D|2D. Итого — экономим сразу 2 клавиши.
Вместо 9 клавиш — используем всего 5. Без потери функционала и с улучшением эргономики.
Дополнительно добавляем функцию активации плавающего вьюпорта и его закрытия. Из коробки этот функционал отсутствует. На видео плавающий вьюпорт висит в правом верънему углу исключительно в целях демонстрации (на одном мониторе) в обычном режиме вьюпорт автоматически разворачивается на втором экране в полноэкранном режиме (без titlebar). Быстрый swap мониторов тоже реализован.
Также добавляем функцию переключения режима вращения камеры Free ↔ Constrained, которая в оригинале тоже отсутствует.
Подобные дополнения позволяют нам вообще забыть о существовании правой части верхней панели и пользоваться только хоткеями. Чтобы во время переключения не путаться в режимах — выводим название команд в HUD.
Лично я не понимаю, почему большинство разработчиков пренебрегают этим способом отображения информации. Очень удобно и информативно.
Вот специально приведу пример на Pressure Profile . Это меню из трёх пунктов. В нашем случае пришлось бы тыкать в каждый пункт, а тут у нас одна кнопка и внятная подпись. Сравните как на фоне HUDа блёкло смотрится меняющаяся иконка. Стоит отметить что размер шрифта в Painter при 100% масштабировании ультрамелкий (около 8pt) и по большому счёту сломан нахрен.
В дополнение переключение режима курсора
Отдельного упоминания стоит всплывающая панель Symmetry. Проблема в том, что стоит вам повернуть вьюпорт и она тут же исчезает. Не сказать бы что это прям проблема планетарного масштаб, но всё же приятней когда панель открывается и закрывается когда надо тебе. Именно по этому я её отвязал, с возможностью появления под курсором мышки или в строго заданном месте.
Или например выбор режима проецирования. Один пользователь в дискорде жаловался что тратит по пол дня чтобы выставить нужным слоям режим трипланарной проекции. Так что...
После добавления хоткеев для главного меню и основной панели логично перейти к следующему шагу — созданию полноэкранного режима. У нас тут приложение для рисования, поэтому приоритет мы отдаём чистому вьюпорту. Такие элементы интерфейса, как title bar, menu bar или task bar, в процессе текстурирования вам не понадобятся в 90% случаев.
Если вы, допустим, забыли, над каким файлом/проектом работаете — проще вывести эту информацию в HUD и даже скопировать в буфер обмена, если надо.
Для открытия меню Recent Files тоже предусмотрен хоткей.
Кроме того, добавлена плавающая версия Main Menu Bar, которая появляется под курсором по нажатию.
Если жаль тратить ценные кнопки всегда можно собрать кастомное всплывающее меню из любимых команд.
Layerstack
Ну и как вишенка на торте — возможность создания слоёв, эффектов, генераторов и всех элементов стека слоёв с помощью хоткеев (или всплывающих меню).
Что касатеся работы со слоями, то тут огромное пространство для всевозможных доработок так что оставлю эту тему на следующий раз.
Заключение
Очевидно, что понятие удобства использования у каждого своё и формируется на основе личного опыта и целого ряда физических и психологических факторов. То, что удобно одному человеку, может оказаться невыносимым для другого. Так что не стесняйтесь делиться своими мыслями на эту тему.
Какой UI вы считаете идеальным?
Какие UI/UX-решения вам нравятся, а какие раздражают?
Что бы вы хотели изменить для повышения комфорта и эффективности работы в том же Substance Painter?
Что думаете о внесённых изменениях?
P.S. Разработка ещё в процессе, так что продолжение следует... Спасибо за внимание и до скорых встреч.