Skip to content

Latest commit

 

History

50 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

 🌐 🇷🇺 Русский  ·  Language · Язык · 語言 · Idioma · Sprache · भाषा · لغة
🇷🇺
Русский
🇬🇧
English
🇵🇱
Polski
🇺🇦
Українська
🇩🇪
Deutsch
🇲🇩
Moldovenească
🇸🇮
Slovenščina
🇧🇾
Беларуская
🇰🇿
Қазақша
🇯🇵
日本語
🇨🇳
中文
🇸🇪
Svenska
🇪🇸
Español
🇮🇳
हिन्दी
🇵🇹
Português
🇧🇩
বাংলা
🇫🇷
Français
🇮🇳
తెలుగు
🇮🇳
मराठी
🇮🇳
தமிழ்
🇹🇷
Türkçe
🇵🇰
اردو
🇻🇳
Tiếng Việt
🇮🇳
ગુજરાતી
🇮🇹
Italiano
🇰🇷
한국어
🇸🇦
العربية
🇮🇩
Basa Jawa
🇮🇳
മലയാളം
🇳🇵
नेपाली
🇺🇿
Oʻzbekcha
🇮🇳
ଓଡ଼ିଆ

C2UI

status python qt opengl tests platform licence

C2UICustom to User Interface — редактор Source Filmmaker в современной оболочке: тот же контент, тот же формат сессий, та же модель данных, интерфейс в духе библиотеки Steam и редактора Unreal Engine 5.


Готовность

Готовность

Подробнее о готовности

Идея

Source Filmmaker — сильный инструмент, интерфейс которого остался в 2012 году. C2UI не заменяет его и не переделывает: задача — сделать SFM немного современнее и удобнее.

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

Первая цель — полная совместимость с SFM, включая кости и риги. Дальше — то, чего в SFM не хватало.

  ┌──────────────┐                       ┌──────────────────────────────┐
  │   C2UI       │ ──── "где SFM?" ─────▶│  SourceFilmmaker/game/       │
  │              │                       │    usermod/gameinfo.txt      │
  │  свой UI     │ ◀───── монтирует ─────│    tf/  hl2/  tf_movies/ …   │
  │  свой рендер │     только чтение     │    models/ materials/ dmx    │
  └──────────────┘                       └──────────────────────────────┘
  • Переносимый. Ничего не пишется вне папки программы: настройки в App/User, кэш в App/Cache, временное в App/Temporary. Удалили папку — не осталось следа.
  • Не запускает SFM. Нет процесса, которым надо управлять, нет окон, которые надо перехватывать. Установка читается как пакет контента.
  • Форматы проверены, а не предположены. Каждая читалка сверена с настоящей установкой; там, где формат делает что-то неочевидное, код об этом говорит.
  • Сохранение точное. Сессия, прочитанная и записанная без изменений, — тот же самый файл.
  • Ядро без зависимостей. Core/ и все тесты работают на голом Python; Qt и OpenGL нужны только окну.

Структура

C2UI_SDK/
├── README.md
├── Core/               ядро: форматы, виртуальная ФС, индекс, мосты к установкам
│   ├── API/            контракт для редактора, инструментов и плагинов
│   ├── Code/           движок: анимация, операторы, лица, правки
│   │   └── formats/    читалки Valve: mdl vvd vtx vmt vtf dmx bsp
│   └── dev-kit/        слоты SDK (пустые) и мосты к установкам
├── App/                редактор: библиотека контента, рендер, окно
│   ├── Code/           библиотека контента, окно, настройки
│   │   ├── render/     сцена, рендерер OpenGL, шейдеры, камера
│   │   └── ui/         таймлайн, дерево сессии, инспектор, graph editor, докинг
│   ├── Data/           ресурсы программы, только чтение
│   ├── User/           данные пользователя — никогда не удаляются
│   └── Cache/          индекс контента, шейдеры, миниатюры
├── Tools/              локализация, инструменты UI, плагины (позже)
│   ├── Launcher/       лаунчер
│   ├── Market Load/    клиент маркетплейса плагинов (позже)
│   ├── Localization/   создание переводов
│   ├── NewPlugins/     создание плагинов
│   └── UI/             темы и рабочие пространства
├── Testing/            тесты, побайтовые фикстуры, один раннер
│   ├── core/           движок
│   ├── app/            редактор
│   └── fixtures/       поддельная установка, модели, текстуры
└── GIT&DOCK/           README, готовность и лицензия на 32 языках

Как это работает

Путь от «где Source Filmmaker?» до кадра на экране проходит через пять слоёв; каждый следующий знает только о предыдущем.

  1. Мост (Core/dev-kit/bridge_sfm) находит установку через Steam, читает gameinfo.txt и отдаёт пути контента в порядке движка. sfm.exe не запускается.
  2. Виртуальная ФС и индекс (Core/Code/vfs.py, content_index.py) накладывают эти пути друг на друга, как Source: первый найденный файл побеждает. Индекс — один файл SQLite в App/Cache, поэтому обход 70 000 файлов делается один раз.
  3. Форматы (Core/Code/formats) читают файлы Valve без сторонних библиотек: .mdl .vvd .vtx — модель, .vmt .vtf — материал и текстура, .dmx — сессия, .bsp — карта. Каждая читалка проверена на всей установке; сессия записывается обратно байт в байт.
  4. Сессия — граф элементов DMX. animation.py вычисляет каналы в момент времени, operators.py выполняет выражения и констрейнты ригов, flex.py двигает лица, pose.py собирает матрицы костей. Каждая правка идёт через editing.py как команда с отменой.
  5. Редактор (App/Code) собирает из этого сцену (render/scene.py) и рисует её собственным рендерером на OpenGL 3.3 (renderer.py, shaders.py): свет сессии, лайтмапы и освещение карты — картинка пока далека от SFM и дорабатывается. Панели (ui/) — таймлайн, дерево сессии, инспектор, graph editor, докинг в духе UE5.

Всё, что программа пишет, остаётся в её папке: App/User — настройки, App/Cache — индекс и кэш, App/Temporary — журнал. Core/ не пишет ничего и не зависит от Qt, поэтому движок и тесты работают на голом Python; Qt и OpenGL нужны только окну. Инструменты в Tools/ собираются строго поверх Core/API — так проверяется, что API достаточен и для сторонних плагинов.

Запуск

Нужны Windows, Python 3.13 и установленный Source Filmmaker.

git clone https://github.com/Arkomiko/SFM_C2UI.git
cd SFM_C2UI
python -m venv .venv
.venv/Scripts/python.exe -m pip install -r Tools/Launcher/requirements.txt
.venv/Scripts/python.exe Tools/Launcher/c2ui.py

При первом запуске SFM ищется через Steam; если не нашёлся — программа спросит. Ctrl+O открывает сессию, Space — воспроизведение, C — камера шота, T/R — перемещение/поворот, M — motion editor, G — graph editor, Ctrl+Z — отмена, Ctrl+S — сохранить. Камера как в SFM: правая кнопка — осмотр, с зажатой правой WASD ZX — полёт (Shift быстрее), средняя — панорама, колесо — наезд, Alt+левая — орбита. Клик по персонажу выбирает кость под курсором (или её ручку рига). Панели перетаскиваются за заголовок. Тесты не требуют ничего:

python Testing/run.py

В планах

Ближайшее

  • Облик карты: вода, prop_dynamic, гобо-текстуры света, $bumpmap и $envmap, тени от света сессии.
  • Звук в экспортируемом видео.
  • Плагины .c2plg и клиент маркетплейса в Tools/Market Load; затем темы и рабочие пространства.
  • Звук на таймлайне, частицы, wrinkle-карты, пресеты и слои motion editor, касательные в graph editor.

Дальше

  • Производительность на полных картах: инстансинг статичных пропов, кэш поз.
  • Переработка движка: новые параметры компиляции карт для улучшенного освещения и теней, лимит карты 120 000 юнитов.
  • Упакованный лаунчер со своим Python и автообновлением; локализация редактора.

Лицензия и благодарности

Собственный код C2UI распространяется по лицензии C2UI: свободно для личных и некоммерческих нужд; коммерческое использование — только по письменному согласию автора; при модификации — ссылка на оригинальный проект и автора Arkomiko. Плагины и аддоны — по лицензии C2UI — Plugins & Addons (C2UI‑Pl&AD).

Source Filmmaker, Team Fortress 2 и движок Source принадлежат Valve; проект читает их форматы, не содержит их файлов и работает только с вашей копией SFM из Steam.

Текст лицензии

About

C2UI - Source Filmmaker in a modern shell: mounts your SFM install, reads its models, materials, maps and sessions 1:1 and edits them itself. Never runs sfm.exe.

Topics

Resources

Stars

3 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages