Пять раскладок фильма — настоящие планы YTCG37 v4 в координатах кадра 4K (3840×2160). Пунктир лайма — видимая часть: в ней спикер и центрируется. Зелёные стрелки — поля по верху тела; ↑ — над макушкой. Шортс 9:16 — в разделе Шортс ниже.
Доли над макушкой — от высоты видимой части (у окна — от 1360 px окна). Числа и раскладки — solo.py (константы HEAD, ZOOM) и ytcg.py (SIDE_W 1844, HOLE 2790,400,900×1360, OVER_TEXT_R 1950); планы — edl_v4.json YTCG37.
План — сколько человека в кадре. Его задаёт низ кадра: он режет фигуру на своей линии и никогда — по суставу. Глаза в любом плане — на линии верхней трети. Так учат в видеопроизводстве (Video Production Handbook, гл. 8.1 и 8.5; Grammar of the Shot) — источники в конце раздела.
Суставы — Video Production Handbook 8.1: «not cut them off at a natural joint in the body, like the knees or elbows. It will give the illusion on camera that the person has been amputated». Названия в школах расходятся: в новостях ТВ «средний» — человек целиком; здесь — словарь машины, русское и английское рядом.
| План | EN | Низ кадра | Над головой | Глаза | Когда |
|---|---|---|---|---|---|
| Деталь | ECU | часть лица или рука | — | — | доказательство, предмет |
| Сверхкрупный | BCU | лицо целиком, макушка срезана | 0 | около середины | пик эмоции |
| Крупный | CU | под подбородком или край плеч | минимум, можно срезать волосы | верхняя треть | эмоция, признание, главная фраза |
| Погрудный | MCU | середина груди, выше локтя | небольшой | верхняя треть | основной план разговора |
| Поясной | MS | чуть ниже пояса, не по бедру | больше | верхняя треть | жест, руки, действие |
| По колено | MLS | чуть выше колена | ещё больше | — | поза, движение, кто рядом |
| Общий | LS | вся фигура с полями | — | — | место, кто где |
| Дальний | ELS | фигура мала | — | — | обстановка |
Один и тот же человек в кадре 16:9 по теории: низ — на линии плана, глаза — на линии верхней трети (лайм). Воздух над макушкой не задают числом — он получается из плана: в крупном его нет, в поясном — пятая часть кадра. Последний кадр — наше правило сейчас в том же масштабе, что поясной.
Фигура — стоящий человек, голова — ⅛ роста. В YTCG37 Кейт сидит, но сдвиг тот же: при том же наезде глаза с трети на 20 % опускают кадр на 13 % его высоты — снизу прибавляется тело, сверху пропадает воздух.
План #4 YTCG37 (весь кадр, средний ×1,5) по вертикали: где стояли глаза в v3, где стоят сейчас и где их ставит теория. Горизонталь во всех трёх — по центру: её решает силуэт, это не меняем.
Глаза пересчитаны по точкам v3 и сдвигу окна исходника v3 → v4 (frame_facts.json). Менять код — после «ок» Романа по парам настоящих кадров одного плана «сейчас / по теории»; кадры клиента — только приватно.
| Раскладка | v3 · по глазам | v4–v6 | Над макушкой v4–v6 |
|---|---|---|---|
| весь кадр, средний ×1,5 | 34,5 % | 20,6 % | 8,5 % |
| весь кадр, крупный ×1,79 | 37,1 % | 20,8 % | 6 % |
| правее панели (side/A) | 34,6 % | 21,1 % | 8,5 % |
| окно холста (window/A) | 37,1 % | 20,4 % | 7,5 % · v6 — 6 % |
Роман 03.10: «Ещё надо правило, когда делаем zoom in zoom out». Смена плана — склейкой и с поводом; правила ниже — черновик до «ок» Романа, что уже есть в коде — отдельной плиткой.
zoompan)MAX_HOLD в sc_edl.py: «добавь ракурс, наезд, перебивку или графику»shorts.pyНад макушкой в пикселях кадра 4K: доли в коде с v4 по видам плана и что было в v3 «по глазам». ⚠ По теории планов эти доли малы — глаза встали на 20 % высоты: Глаза по замеру.
Источник долей — HEAD в solo.py (v4: стр. 987, сейчас 989). Окно изменили после v5: «где она крупно на таких экранах — лучше такой план брать» (Роман, 03.10.2026 ~10:00) — Кейт в окне ×1,0 была мелкой, видно колени.
Замер идёт по исходнику до рендера: план пишет в edl_vN.json поле fit {left, right, top, region, zoom, clamped} и печатает «поля ←462 →460 ↑184 ×1.5». Без файла силуэта план откатывается к старому способу и пишет «(по глазам)».
План #1 B1_side (0:10, 20 с, правее панели). В v3 точка между глаз стояла точно в центре свободной части (2844 при центре 2842) — а силуэт с волосами и плечом уехал вправо на 85 px.
Источник: 08_Cut/framing_v3_v4.json и страница v4 «Кадрирование по замеру» (YTCG37, на Drive и в Trello — YTCG49). Окно исходника сдвинулось на 56 px вбок и на 194 px вниз.
Медиана 64 px, среднее 83, худший 354 px (#28, over/A). На странице v4 «в среднем 64» — это медиана. До правки краёв (10/90) таблица давала 72 и 398 — в старых записях встречается 72.
Центр — в пределах ±2 px; над макушкой 83–195 px, отклонение от цели −0,6…+2,4 px. Наезд понадобился один раз: #28 ×1,40 → ×1,50.
Силуэт меряет пока только solo.py (одна камера, дубли). Остальные движки ставят кадр по лицу — правило «поля равны» у них держится приблизительно.
| Движок | Окно и раскладки | Как ставит спикера |
|---|---|---|
| solo.py + ytcg.py · YTCG | окно холста 900×1360 (2790, 400), r 48; панель 1844 px; колонка текста до 1950 | силуэт: frame_fit, центр верха тела в центр видимой части, макушка на доле HEAD, наезд ≤ +0,3 |
| director.py + gfx.py · YTLAB | окно 1160×1560 слева (150, 330) или справа (2530, 330), r 56; панель 1920 = полкадра | лицо YuNet: глаза в точке (0,5; 0,36) окна; кадр под окном сдвигается, не масштабируется. Панель: центр фигуры (лицо + 0,45 ширины лица к телу) — в центр свободной половины |
| autocut · screens2.py · YTEVO | окно 690×1180 справа (3054, 720), r 48 | лицо YuNet: без увеличения, лицо ≈ 32 % высоты окна, центр лица на 38 % высоты, по горизонтали по центру |
| story_cut · sc_gfx.py · YTCR | окно PIP 1180×664 в углу холста, ×1,3 | лицо остаётся там, где было в кадре: окно не центрирует — «надо построить» |
| шортсы · render.py | кадр 1080×1920 из мастера 16:9 | лицо YuNet 2 раза в секунду: крупный — рамка 608×1080, лицо по центру; общий — 456×810, центр лица на 36 % высоты |
Источники: solo.py 953–1085 · gfx.py 54–62, 685–707 · director.py 415–441, 521–575 · plan.py 290–362 · render.py 214–351.
Шортс режется из мастера 16:9 по лицу. Рамка ставится по треку лица и держится: двигается, только если лицо ушло дальше порога, и не чаще раза в 1,2 с.
Сдвиг рамки — при уходе лица больше 70 px по горизонтали или 50 по вертикали (кадр плана 1080p); кусок короче 1,2 с сливается с соседом, мигание A→B→A убирается. После рендера: две склейки ближе 0,1 с — «⚠ мелькнул кадр»; растяжение больше ×1,25 — «⚠ мастер мал». Правки по выпускам: YTEVO02 crop.headroom 0.31, YTFP01 close_face 100.
Образец — страница YTCG37 v4, которую Роман 03.10.2026 в 04:45 прислал как «Пример анализа расположений человека и экрана». В gen_screen_plan.py этого раздела пока нет — его собрали скрипты проекта (08_Cut/review_page_v4/): «надо построить».
| Что | Норма | Чем | Откуда взялась |
|---|---|---|---|
| Поля ← → | |←−→| ≤ 2 % видимой ширины (весь кадр 77 px, панель 40, окно 18); в v4 вышло ≤ 4 px | solo.py plan → fit | YTCG37 v3: медиана 64 px, до 354 |
| Над макушкой | сейчас — доля HEAD по виду плана; ⚠ на пересмотре: глаза на верхней трети, воздух — по плану | solo.py plan → fit.top | v3: 14–26 % · v4–v6: глаза на 20 % |
| Низ кадра | на линии плана, не по суставу: шея, локоть, запястье, бедро, колено, щиколотка | глазами; надо построить — точки тела Apple Vision | Video Production Handbook 8.1 |
| Край исходника | наезд +0,05…+0,3; в плане «⚠ край исходника» | solo.py plan | #28: ×1,40 → ×1,50 |
| Силуэт найден | «замеров 303 из 303 · без силуэта: нет»; иначе план «(по глазам)» | solo.py silhouette | 03.10.2026 |
| Глазами — все пары | каждый план «было → стало»; равные числа ≠ центр | человек | O2: −199 / −199, а Кейт у края окна |
| Окно не мелкое | в окне голова и плечи, не колени | человек → ZOOM PIP | Роман по v5: ×1,0 → ×1,22 |
| Шортс | лицо по центру; рамка держится ≥ 1,2 с; мигание ≥ 0,1 с | render.py | YTFP01 · YTTRBM01 |
Готовый фильм заново не меряется: поля считаются по силуэту исходника до рендера — «надо построить» замер на мастере.
| Файл | Кто пишет | Когда |
|---|---|---|
| solo.py — HEAD, ZOOM, UPPER, EDGE_Q | сессия фильма по слову Романа | правило поменялось (окно ×1,22 после v5) |
| 08_Cut/silhouette_vN.json + qc/silhouette_vN_NN.jpg | solo.py silhouette | до плана, раз на версию исходников |
| 08_Cut/framing_vA_vB.json | скрипт проекта (пока не команда) | при смене кадра между версиями |
| эта страница | сессия KB | новое число или новая раскладка |
| память feedback_speaker_centered_measured | сессия, получившая правку | слова Романа о кадре |
$V $HC/solo.py silhouette --job $J --ver v1 --every 25 # кадр в секунду → 08_Cut/silhouette_v1.json + qc/silhouette_v1_NN.jpg $V $HC/solo.py plan --job $J --ver v1 --tag v4 # план: у каждого плана «поля ←L →R ↑T ×zoom» $V $HC/solo.py run --job $J --tag v4 --out $F # рендер по окнам плана — через очередь
printf '%s\n' кадр.jpg | ~/YTAI/scripts/999_extra/bin/vision_person # маска одного кадра: строки xmin,xmax,n swiftc -O $X/vision_person.swift -o $X/bin/vision_person # собрать инструмент
$V = ~/YTAI/environment/.venv_transcribe/bin/python · $HC = ~/YTAI/scripts/05_editing/0510_headless_cut · $X = ~/YTAI/scripts/999_extra · $J = {проект}/00_Setup/08_Cut/{CODE}_cut_job.json
| Источник | Что берём | Где |
|---|---|---|
| Video Production Handbook (C. Clemens и др., CC BY-NC 4.0), гл. 8.1 и 8.5 | шкала по фигуре: MLS — выше колена, MS — по поясу, «not at the hip», MCU — низ грудины, CU — край плеч; суставы; воздух; глаза интервью — на верхних пересечениях третей | LibreTexts, гл. 8.1 |
| Grammar of the Shot (R. Thompson, C. J. Bowen, 2-е изд.) | MCU «two-button» выше локтя; CU может срезать волосы; «appropriate headroom for each shot type»; правило 30° | книга |
| Кулешов: шесть крупностей | деталь, крупный, первый средний (поясной), второй средний, общий, дальний | ru.wikipedia «План (кинематограф)» |
| К. Гаврилов «Как делать сюжет новостей» | ТВ: «средний» — человек целиком; поясной, крупный, деталь | книга |
| Подборка Романа: StudioBinder, Every Frame a Painting, ASC | маршрут обучения, склейка по эмоции и ритму, «через одну крупность»; 19 ссылок проверены | Теория_планов_гайды_и_статьи.docx |
| Разбор 03.10.2026 | проверка подборки, шкала для машины, замеры YTCG37, черновик правила наезда | Теория_планов_проверка_и_дополнения.md |