TGStat
TGStat
Type to search
Advanced channel search
  • flag English
    Site language
    flag Russian flag English flag Uzbek
  • Sign In
  • Catalog
    Channels and groups catalog Regional compilations Thematic compilations Платные каналы Search for channels
    Add a channel/group
  • Ratings
    Rating of channels Rating of groups Posts rating
    Ratings of brands and people
  • Analytics
  • Search by posts
  • Telegram monitoring
  • Promotion
    Advertising through Yandex Business Advertising in channels through TGStat Agency Advertising on TGStat.ru website
Prefire iOS

5 Aug, 17:38

Open in Telegram Share Report

Сделал систему скинов для котиков 🐈

В ScreenCat уже много скинов, и я прям сильно устал рисовать и подгонять каждый вручную в Figma. Особенно когда меняется поза, а вместе с ней нужно поправить голову, хвост, лапы, глаза и ещё десяток мелочей.

Посидел вместе с Claude и подумал: а что, если создание скина будет больше похоже на написание кода, чем на ручную сборку иллюстрации?

В итоге собрал data-driven систему на JSON. Теперь визуальная часть кота состоит из трёх уровней:

1. skin.json - описание конкретного кота: его части, текстуры, позиции, порядок слоёв, точки крепления аксессуаров и настройки взгляда.

2. JSON-клипы анимаций - описывают движение частей: подпрыгивание тела, поворот хвоста, наклон головы, моргание.

3. animations.json — граф состояний: когда кот сидит, бежит, спит, реагирует на действие или переключается между анимациями.

{
"id": "ginger_fold_cat",
"rig": {
"parts": [
{ "id": "body", "texture": "body.png", "position": [-5, -22] },
{ "id": "tail", "texture": "tail.png", "parent": "body", "position": [32, -12] },
{ "id": "head", "texture": "head.png", "parent": "body", "position": [-10, 41] }
]
}
}

Риг это иерархия частей внутри скина. Например, хвост прикреплён к телу, а глаза к голове. Поэтому при движении головы всё нужное едет вместе с ней.

Анимации задаются не абсолютными координатами, а дельтами от базовой позы. Один и тот же клип бега можно применить к разным котам, даже если у них разная форма тела или хвоста:

{
"part": "tail",
"property": "rotation",
"keys": [[0, 0], [0.14, 18], [0.42, -18], [0.56, 0]]
}


То есть здесь хвост просто отклоняется от своего обычного положения на 18 градусов туда и обратно. Клипу не нужно знать, где хвост находится у конкретного скина.

В итоге новый скин - это набор PNG и JSON, а не пачка исключений в коде. Можно менять пропорции, добавлять образы и анимации, а валидатор сразу проверит, что все части, текстуры и связи на месте.

PS: После написания json - скрипт прогоняет рендеринг PNG через ffmpeg

А дальше я навайбкодил UI на Tauri, чтобы работать со скинами было ещё удобнее.
Про редактор, генерацию арта и весь этот пайплайн расскажу в следующих постах.

681 0 0 8 22
Catalog
Channels and groups catalog Channels compilations Search for channels Add a channel/group
Ratings
Rating of Telegram channels Rating of Telegram groups Posts rating Ratings of brands and people
API
API statistics Search API of posts API Callback
Our channels
@TGStat @TGStat_Chat @telepulse @TGStatAPI
Read
Академия TGStat Telegram Research 2019 Telegram Research 2021 Telegram Research 2023
Contacts
Справочный центр Support Email Jobs
Miscellaneous
Terms and conditions Privacy policy Public offer
Our bots
@TGStat_Bot @SearcheeBot @TGAlertsBot @tg_analytics_bot @TGStatChatBot