Netshards SyncДокументация
Инструмент пайплайна Maya

Netshards Sync

Открывайте, референсите и синхронизируйте анимационные шоты прямо из проекта Film_Baiterek на Google Drive — без жёстко прописанных букв дисков, имён проектов и ручной правки путей.

Инструмент под контролем студии

Netshards Sync доверяет папке Film_Baiterek на Drive — он запускает и устанавливает всё, что лежит в папке Updates, и правит ваш userSetup.py. Это сделано намеренно для Drive под контролем студии. Оставьте право записи в эту папку только за владельцем пайплайна.

Интерактивно — кликайте по секвенциям, шотам и кнопкам ниже
Netshards Sync ?
Sequences
Все сцены
НазваниеДата изменения
Предпросмотр сцены
00:4201:40
Режим видеоряда

Точная копия оформленного 3-панельного окна PySide — Segoe UI, скруглённые панели #0e0e0e, кнопки-таблетки Открыть / Отмена. Выберите секвенцию, затем шот — кнопка Открыть станет активной.

Что это

Netshards Sync (внутри — drivelink) — это Maya-надстройка для продакшена на Google Drive. Он сканирует подключённый проект, находит нужную версию сцены для шота, подтягивает зависимости с Drive, ведёт лёгкие блокировки шотов, переназначает ссылки и пути к текстурам/кэшу/USD на вашу локальную папку Drive и проигрывает видеоряд шота синхронно с таймлайном Maya.

Окно — чистый фронт-энд: каждое действие вызывает тот же движок, что и раньше, поэтому вся логика (подключение, поиск, блокировки, ссылки, ремапы) общая и проверенная. Работает на PySide2/Qt5 (Maya 2022–2024) и PySide6/Qt6 (Maya 2025–2026); если Qt-биндинга нет, откатывается на исходное окно maya.cmds, так что открывается всегда.

Версия 1.0.1 Сборка v101+1 Maya 2022 – 2026 Qt PySide2 / PySide6 Drive Film_Baiterek Интерфейс Segoe UI · RU

Начало работы

Установка #

Положите папку drivelink в любое место в Python-пути Maya и выполните install() в Script Editor (вкладка Python). Это добавит меню Netshards Sync в главное окно Maya и кнопку на активную полку.

Windows
macOS / Linux
Один файл
Установщик в один клик
Maya · Script Editor (Python)
import sys
sys.path.append(r"C:\Users\you\Documents\Maya-ui")   # raw-строка — обратные слэши остаются как есть

from drivelink import install
install()

Используйте raw-строку (r"…") или прямые слэши, чтобы обратные слэши Windows не воспринимались как экранирование.

Maya · Script Editor (Python)
import sys
sys.path.append("/Users/you/Documents/Maya-ui")

from drivelink import install
install()

Хотите один файл? Скопируйте только drivelink_standalone.py в папку скриптов Maya. Это сгенерированная, побайтно точная копия пакета (отличается лишь лаунчер).

Maya · Script Editor (Python)
import sys
sys.path.append(r"C:\Users\you\Documents\Maya-ui")

import drivelink_standalone
drivelink_standalone.install()   # или .show() для разового запуска

Правьте пакет, а не standalone. Пересоберите один файл командой python build_standalone.py; юнит-тест падает, если они разойдутся.

В репозитории есть install_drivelink.py — запустите его один раз в Script Editor. Он добавит папку в путь, установит меню и кнопку на полке, допишет идемпотентный блок автозагрузки в ваш userSetup.py и тихо установит ffmpeg для проигрывания видеоряда.

install_drivelink.py — один раз
# Поменяйте DRIVELINK_DIR, если папка лежит в другом месте, затем запустите файл.
DRIVELINK_DIR = r"C:\Users\you\Documents\Maya-ui"

Ручной запуск

Python
import drivelink
drivelink.toggle()   # открыть, если закрыто; закрыть, если открыто
drivelink.show()     # открыть
drivelink.close()    # закрыть

Начало работы

Подключение проекта #

При первом запуске экран подключения (Подключение проекта) просит указать локальный корень проекта. Выберите недавний проект или перетащите папку со всеми секвенциями. Структуру Netshards Sync определит сам — без жёстко прописанных дисков и имён — а в следующий раз откроется сразу на том шоте, где вы остановились.

Три раскладки, определяются автоматически

Корень проекта

Папка с подпапкой 03_sequences или Sequences — классическая студийная раскладка.

Папка секвенций

Укажите прямо папку, дети которой и есть секвенции — выберите нужную.

Плоские шоты

Одна папка шотов, собранная под одной синтетической секвенцией Root Shots.

Настройки для Baiterek

На Google Drive Desktop (диск G:) кнопка Drive открывает ярлык Film_Baiterek, а свежая установка подключается к Film_Baiterek/03_sequences, чтобы были видны все секвенции. На любой другой машине это мягко деградирует — поменяйте константы сайта, чтобы нацелиться на другой Drive.

Ремапы путей

В Advanced ▸ Layout сопоставьте старые студийные или Windows-корни с локальной папкой Drive каждого художника. Ремапы записываются как Старый корень => Локальный корень и применяются до загрузки сцены, чтобы ссылки разрешались везде:

Advanced ▸ Layout ▸ Path Remaps
E:/NETSHARDS/BAITEREK => /Users/name/Library/CloudStorage/GoogleDrive-acct/My Drive/NETSHARDS/BAITEREK

Запустите Advanced ▸ Check, чтобы проверить подключённый проект до того, как художники начнут грузить шоты.


Работа с инструментом

Scene Assembler #

Главное окно — оформленный безрамочный браузер PySide с тремя скруглёнными панелями и одним основным действием. Прокрутите к живой копии выше — каждый блок ниже соответствует ей, пиксель в пиксель.

ПанельЧто показывает
Sequences
слева · 252 px
Все секвенции; у каждой значок офлайн-статуса Drive — зелёная для загружено / доступно офлайн, красный ! для есть файлы только в облаке. Кнопка Drive 32×32 открывает папку проекта в проводнике ОС.
Все сцены
центр · гибкая
Таблица шотов — Название / Дата изменения с ленивыми превью из фото в папке шота. помечает избранное, поиск фильтрует, а тумблер 32×32 Только со сценой Maya (подсвечен = включён) прячет шоты без файла сцены.
Предпросмотр сцены
справа · 326 px
Превью выбранной сцены плюс встроенный плеер (кнопка 66×66) для видеоряда — нажмите ▶, и кадры идут синхронно с таймлайном Maya. Плашка показывает, кто держит шот.

Режимы видеоряда

Режим видеоряда — трёхпозиционный переключатель; срабатывает только при нажатии Открыть:

В Maya — проиграть внутри Maya, синхронно с таймлайном Отдельно — открыть в системном плеере ни то, ни другое — ничего не делать
Открыть видеоряд

Отдельная кнопка Открыть видеоряд (в колонке превью) открывает видео выбранного шота без перезагрузки сцены — удобно, если плеер закрылся, а в открытой сцене есть несохранённые правки. Ваши правки в безопасности.

Плашки блокировки

Загрузка шота создаёт атомарную блокировку. Зелёная плашка — держите вы; красная — называет, кто ещё. Устаревшие блокировки (по умолчанию 12 ч) снимаются сами. Выберите первый шот SEQ_020 в копии выше, чтобы увидеть красное состояние.


Работа с инструментом

Интерактивный гид #

При первом запуске Scene Assembler открывается пошаговый гид из 12 шагов (Гид). Ниже — точная рабочая копия того же окна: 640×480, безрамочное, с теми же шагами, точками 6 px и футером-таблеткой. Листайте кнопками, точками или клавишами ← →. Настоящий гид снова открывается кнопкой ? в шапке или Netshards Sync ▸ Гид.

Гид по Netshards Sync
Шаг 1 / 12

Содержимое дословно взято из живого гида в приложении (_GUIDE_STEPS, интерфейс на русском). Активная точка белая (DLDotOn), значок шага оранжевый (#ef8a3c) — ровно так, как рисует плагин.



Работа с инструментом

Возможности #

За простым окном стоит движок, который делает пайплайн на Google Drive надёжным. Каждая карточка ниже — реальное, протестированное поведение.

Умный подбор версии

Берёт самый старший vNNN файл .ma/.mb в maya-папке шота; явный _v004 всегда бьёт голое число в конце, а окончательный критерий — время изменения.

Атомарные блокировки

Кладёт рядом с шотом атомарный lock-файл, чтобы снизить конфликты сохранений; есть выявление устаревших блокировок (по умолчанию 12 ч) и авто-снятие, когда владелец — Netshards Sync. Зелёная/красная плашка показывает держателя.

Подтягивание зависимостей

Перед открытием «касается» читаемых зависимостей, чтобы Google Drive Desktop скачал их локально. Импорт шота может авто-импортировать зависимые сцены/кэши, экономя ручные шаги.

Ссылки и переназначение путей

Переназначает Maya-референсы, а также пути к текстурам, кэшу, USD, аудио, Arnold, V-Ray и Redshift на активный проект — старые корни разрешаются в локальный Drive через ремапы.

Синхронный видеоряд

Проигрывает видеоряд шота в такт таймлайну Maya — скрабьте Maya, и клип идёт следом. Встроенное покадровое проигрывание использует ffmpeg (надёжно и без звука), с QtMultimedia как запасным вариантом.

Безопасное сохранение и версии

Safe Save пишет резервные копии до/после с меткой времени в локальную папку DriveLink_Backups и чистит старые; Save new version поднимает vNNN, ни разу не затирая более старший файл.


Окна

Character Assembler #

Оформленная галерея всех персонажей проекта. Клик по карточке референсит персонажа в текущую сцену; окно остаётся открытым, чтобы добавить нескольких подряд. Правый клик по карточке в самом инструменте даёт Превью, Reference или Import. Копия ниже точно повторяет плагин: карточки 132 px, плитка 122×140, оранжевый акцент 4 px вплотную и белая рамка при выделении.

Netshards Sync Character Assembler
Все персонажи
— La fin —
Предпросмотр сцены
Выберите персонажа
Щёлкните карточку, чтобы подключить референсом

Выбор карточки переключает DLCardDLCardSel (белая рамка, имя ярче); оранжевый акцент остаётся. Открыть референсит персонажа и не закрывает окно. Имена — реальный список персонажей проекта.


Окна

Advanced #

Оформленное окно-инструментарий (реальная ширина 580). Каждый инструмент сцены использует тот же движок; офлайн-панель управляет доступностью на Drive по секвенциям. Попробуйте кнопки Make offline ниже — они переводят секвенцию в «загружено».

Netshards Sync — Advanced
Scene
Offline (Google Drive)
У каждой секвенции показан её офлайн-режим на Google Drive: ✓ On (лежит на диске) или ☁ Off (есть файлы только в облаке).

Также здесь: Layout (папки секвенций/maya/публикации, ремапы, срок устаревания блокировок, хранение бэкапов), Check (проверка проекта) и Copy diagnostics (см. «Устранение неполадок»).


Синхронизация и обновления

Офлайн и Google Drive #

Netshards Sync показывает, какие секвенции скачаны, а какие только в облаке — и в сайдбаре, и в панели Advanced.

Реальное ограничение Google Drive

Google Drive для десктопа не уважает Windows-атрибут pinned — нет файлового флага, чтобы прочитать или задать «Доступно офлайн», как позволяет OneDrive. Поэтому Netshards Sync определяет обратное: заглушки «только в облаке» по recall-флагам файла.

СостояниеЗначениеЗначок
Offline: OnФайлы скачаны и доступны офлайн.зелёная на папке
Offline: OffЕсть файлы только в облаке (заглушки).красный ! на папке
пусто / неизвестноНечего помечать.без значка

Make offline просто читает каждый облачный файл насквозь, из-за чего Drive его скачивает. Сканы идут не блокируя интерфейс, а при первом запуске тихо ставится ffmpeg, чтобы видеоряд просто работал.


Синхронизация и обновления

Автообновления #

Netshards Sync умеет обновляться из папки на том же Drive. Пункт меню Update (и проверка при старте) сравнивает вашу сборку с новейшим релизом и ставит его.

Схема версий

Релизы в формате vXXX+X, напр. Netshards Sync-v102+3. Локальная сборка читается из имени папки установки, с откатом на константу NETSHARDS_BUILD_VERSION. Отображаемая версия (футер / About) остаётся 1.0.1.

Где лежат релизы

Обновления ищутся сначала относительно подключённого проекта (устойчиво к букве диска и Мой диск vs My Drive), затем — абсолютный запасной путь:

Папка Updates на Drive
Film_Baiterek/
 └─ Netshards-Sync(maya-plugin)/
     └─ Updates/
         ├─ Netshards Sync-v101+1/
         ├─ Netshards Sync-v102+3/  ← новейшая
         └─ Netshards Sync-v102+3.zip

Установка копирует сборку в ваш user app dir, переписывает управляемый блок в userSetup.py, чтобы он указывал на неё, и просит перезапустить Maya. Работают и папки, и .zip-релизы.


Справочник

Структура проекта #

Раскладка по умолчанию, относительно которой работает Netshards Sync. Каждый профиль проекта может переопределить папку секвенций, maya-папку шота, папки публикации, ремапы, срок устаревания блокировок и хранение бэкапов в Advanced ▸ Layout.

Ожидаемая структура
PROJECT_ROOT/
  Sequences/                 # или 03_sequences/
    Sequence_01/
      Shot_01/
        maya/
          Seq01_Shot01_anim_v04.ma   # побеждает старшая версия
  publish/
  Sets/
    publish/

Типовые корни ассетов на Drive вроде NETSHARDS/BAITEREK и Film_Baiterek/03_sequences определяются автоматически, если есть.


Справочник

Пути и расположения #

Все важные расположения. Пути с you или <…> у каждого артиста свои — подставьте своё имя пользователя или папку. Буква диска Google Drive (обычно G:) на другой машине может отличаться; Netshards Sync это учитывает.

ЧтоГдеОбласть
Папка плагина
содержит drivelink/
C:\Users\you\Documents\Maya-ui
/Users/you/Documents/Maya-ui — где угодно в Python-пути Maya
у каждого артиста
Автозагрузка меню
userSetup.py
Windows: C:\Users\you\Documents\maya\scripts\userSetup.py
macOS: ~/Library/Preferences/Autodesk/maya/scripts/userSetup.py
Linux: ~/maya/scripts/userSetup.py
у каждого артиста
Проект на Google Drive Film_Baiterek — ярлык <Диск>:\Мой диск\Film_Baiterek.lnk студия
Секвенции Film_Baiterek/03_sequences студия
Папка обновлений Film_Baiterek/Netshards-Sync(maya-plugin)/Updates/
относительно проекта; абсолютный запас: G:\Мой диск\Film_Baiterek\Netshards-Sync(maya-plugin)\Updates
студия
Куда ставится обновление <папка Maya пользователя>/NetshardsSync/<версия> у каждого артиста
Бэкапы Safe Save ~/DriveLink_Backups (ваша домашняя папка) у каждого артиста
Лог-файл (необязательно) переменная окружения DRIVELINK_LOG_FILE=<путь> у каждого артиста

Пути студии (Film_Baiterek, папка обновлений) одинаковы для всех; пути с you и ~ — личные для каждого артиста. Точный корень проекта задаёте вы на экране подключения.


Справочник

Точки входа #

Всё, что вызывает меню, — функции уровня модуля, экспортируемые из drivelink (и из standalone). Пригодятся для кнопок на полке, хоткеев или скриптов.

ФункцияНазначение
install()Меню + кнопка на полке (вызывает две функции ниже).
install_menu()Добавить только меню Netshards Sync.
install_shelf_button()Добавить только кнопку на полке.
show() · close() · toggle()Открыть / закрыть / переключить Scene Assembler.
open_character_gallery()Открыть Character Assembler.
open_advanced()Открыть окно Advanced.
show_guide()Снова открыть интерактивный гид.
open_documentation()Открыть документацию.
show_about()Диалог версии / About.
check_for_updates()
check_for_updates_menu()
check_for_updates_startup()
Ядро обновления / пункт меню / защищённая проверка при старте.
uninstall() · uninstall_menu()Удалить меню и полку (сначала спросит).

Справочник

Устранение неполадок #

Это сработала страховка. Если Qt-биндинга нет (или окно Qt не собралось), Netshards Sync откатывается на исходное окно maya.cmds, чтобы всегда открываться. В Maya 2022–2026 Qt-биндинг идёт по умолчанию — если всё равно откат, посмотрите причину в Script Editor и запустите Advanced ▸ Copy diagnostics.
Известная проблема QtMultimedia + H.264 на Maya 2024 / Windows / Qt5. Netshards Sync предпочитает покадровый плеер ffmpeg — надёжный и без звука. При первом запуске ffmpeg ставится сам; если пропустили (нет интернета), перезапустите установщик или вызовите manager.install_ffmpeg().
Google Drive не отдаёт файловой системе флаг «pinned / доступно офлайн», поэтому значок отражает заглушки «только в облаке», а не собственный пин Drive. Нажмите Re-check после того, как Drive досинхронизируется, или Make offline, чтобы форсировать скачивание.
Меню существует только во время сессии; запись автозагрузки в userSetup.py добавляет его при каждом старте. Если пропало — перезапустите install_drivelink.py (он дописывает идемпотентный блок) или ещё раз вызовите drivelink.install().
Advanced ▸ Copy diagnostics копирует (и печатает) активный проект, раскладку, разрешённые ремапы, путь к ffmpeg, Qt-биндинг и последние записи лога. Задайте переменную окружения DRIVELINK_LOG_FILE, чтобы писать ещё и в лог-файл. Бэкапы Safe Save лежат в ~/DriveLink_Backups.

Проверка сборки. Логический набор тестов чистый — 111 тестов идут без Maya и без Qt. Офлайн Qt smoke-тесты собирают окно с мок-менеджером на PySide2 и PySide6. Синхронность standalone проверяется в CI.

Netshards Sync · v1.0.1 (build v101+1) · Film_Baiterek Maya 2022–2026 · PySide2 / PySide6