# ТЗ для 3D-художника — персонаж «12» (real-time WebGL)
**Что нужно:** фотореалистичная 3D-модель девушки **12** — голова + плечи (бюст), оживляемая в реальном времени в **браузере** (движок **Three.js / WebGL**). Она разговаривает с пользователем: нужна **лицевая анимация (мимика) + синхрон губ с речью**, реалистичные **волосы, кожа, глаза**.
## 1. Что создаём (Deliverables) 1. **Модель «бюст»** — голова, шея, плечи и верх торса (кадрирование «по плечи»). *(Полное тело — опционально, отдельной фазой.)* 2. **Реалистичные:** кожа (с карами под SSS), глаза (отдельный меш), ресницы/брови, зубы+язык+дёсны (для рта при разговоре), **волосы — карточным методом (hair cards)**. 3. **Лицевой риг** с морф-таргетами (blendshapes) по стандарту **ARKit (52 шт.)** — для мимики и липсинка. 4. **Экспорт в `.glb` (glTF 2.0 binary)** с включёнными морф-таргетами, готовый к WebGL. 5. **Исходники** для правок: `.blend` (или ZBrush/Maya) + текстуры в слоях (PSD/EXR).
## 2. Технические требования (под real-time WebGL)
**Формат:** glTF 2.0 → **`.glb`**, меш-компрессия **Draco**, текстуры **KTX2 / Basis Universal**. (Это критично для скорости загрузки в браузере.)
**Полигонаж (треугольники):** - Голова + бюст: **40 000 – 80 000 tris**. - Волосы (карты): отдельно **10 000 – 30 000 tris**. - Глаза/зубы/язык: low-poly. - Цель — **стабильные 60 FPS** в браузере на среднем ноутбуке.
**UV:** чистые, без перекрытий, один логичный UV-сет (UDIM не использовать — плохо для web). Атлас по разумным группам.
**Текстуры (PBR), формат под KTX2:** - Лицо/кожа: **4K** — BaseColor/Albedo, Normal, Roughness, (Metalness=0 для кожи), AO, **+ Thickness/SSS-маска**, по возможности Cavity/Specular. - Волосы: BaseColor с **альфой**, Normal, Roughness, AO, Depth/ID (для карт). - Глаза: Iris/Sclera, Normal; глаза с реалистичным шейдером (роговица + параллакс радужки). - Остальное (плечи/одежда): **2K** PBR-сет.
**Кожа (важно):** движок — Three.js, **истинного SSS в нём нет**, кожа делается приближённо через карты (Thickness/SSS-маска, мягкий Normal, грамотный Roughness, sheen). Поэтому **дайте все карты**, а тонкую настройку шейдинга мы сделаем на своей стороне. Кожа должна иметь поры/микродеталь в Normal, без «пластика».
**Волосы (важно):** ТОЛЬКО **hair cards** (плоскости с альфа-текстурой), НЕ strand/groom-симуляция — она слишком тяжела для браузера. Карты должны давать аккуратный силуэт и читаться с альфа-сортировкой.
**Глаза:** отдельный меш, с возможностью «взгляда» (look-at) — об этом ниже в риге.
> Именно ARKit-имена нужны, чтобы наш код напрямую гнал в них **визимы из TTS-речи** (синхрон губ) и эмоции.
**Кости (минимум):** голова, шея, **челюсть**, **левый/правый глаз** (для движения взгляда). Если делаете тело — скелет, совместимый с **Mixamo/Humanoid**.
**Поза:** нейтральная, фронтальная, рот закрыт, глаза открыты, лицо в покое (нейтральный кадр для морфов).
## 4. Бюджет производительности - Итоговый вес **`.glb` + текстуры (сжатые KTX2 + Draco): желательно ≤ 20–25 МБ.** - **60 FPS** в браузере, без тормозов при активных blendshapes. - Без перекрытых UV, без n-gon’ов в деформируемых зонах (лицо — аккуратная топология-петли вокруг глаз/рта для мимики).
## 5. Чек-лист приёмки - [ ] `.glb` открывается без ошибок в **gltf-viewer (gltf-viewer.donmccurdy.com)**. - [ ] Присутствуют **все 52 ARKit-blendshapes с правильными именами**, морфы работают. - [ ] Кости головы/шеи/челюсти/глаз на месте; глаза двигаются. - [ ] Текстуры PBR полные, есть Thickness/SSS-маска кожи; Normal с микродеталью. - [ ] Волосы — hair cards с альфой, аккуратный силуэт. - [ ] Вес ≤ ~25 МБ (Draco + KTX2), 60 FPS. - [ ] Сходство с референсом `12.png`. - [ ] Переданы исходники (.blend + текстуры в слоях).