ai21.net
语言

讲解9条足球规则的科普视频

演示视频

讲解9条足球规则的科普视频 — 1

提示词

Postav mi video, které vysvětluje pravidla sportu stylem televizní analýzy s AR grafikou. Bez AI video modelů a bez stahování assetů: 3D scénu, postavy, textury, grafiku i zvuk vytvoř kódem. Pracuj samostatně a průběžně mi ukazuj kontrolní snímky.

## Parametry (pro jiný sport změň tuhle sekci a sekci Scénář)
- Sport: fotbal
- Pravidla (9): ofsajd, faul, pokutový kop, vhazování, rohový kop + kop od branky, hra rukou, přímý volný kop, žlutá a červená karta, gól (celý míč za čarou)
- Jazyk všech textů: čeština (plná diakritika, desetinná čárka)
- Délka: cca 68 s (úvod ~4,5 s, každé pravidlo 6 až 8 s, závěr ~4 s)
- Formát: 1920×1080, 30 fps, MP4 (H.264 + AAC)
- Styl postav: PS2 éra ve stylu GTA San Andreas (low-poly tvarované tělo, ručně malované textury)
- Týmy: Červení (červený dres s bílými lemy, bílé trenky), Modří (královsky modrý dres, tmavě modré trenky), rozhodčí černý s limetkovými lemy, brankáři zelený a fialový

## Technologie a pipeline
- Three.js (npm). index.html obsahuje WebGL canvas 1920×1080 a nad ním DOM vrstvu pro HUD.
- Deterministická funkce `window.renderFrame(t)`: stav scény i HUD je čistá funkce času, žádný stav mezi snímky.
- `render.mjs`: lokální statický HTTP server + puppeteer-core se systémovým Chrome (headless, na Macu `--use-angle=metal`). Pro každý snímek zavolej renderFrame(t), počkej 2× requestAnimationFrame, udělej JPEG screenshot a pošli ho rourou do ffmpeg (libx264, CRF 18, yuv420p). Režimy: `stills t1 t2 …` (PNG na kontrolu), `video`, `info` (zapíše časovou osu do out/timeline.json).
- Cesty řeš přes fileURLToPath (složky s mezerami v názvu).
- WebGLRenderer s `preserveDrawingBuffer: true`, ACES tone mapping, PCF soft shadows. EffectComposer s MSAA (samples 4, HalfFloat): RenderPass, UnrealBloomPass, vlastní grade pass (vinětace, jemné zrno, chromatická aberace, záblesk, whip blur, VHS efekt), OutputPass.
- Zvuk: Python (numpy + scipy) syntetizuje celý soundtrack do WAV, ffmpeg ho přimíchá (AAC 192k).
- Výstupy: plná kvalita + webová verze (CRF 23 až 24, maxrate 10M).

## Struktura projektu
src/util.js (easing, tmap pro freeze a zpomalení, track() pro pohyb hráčů po časovaných waypointech s fází běhu podle uražené vzdálenosti, seeded rng), src/world.js, src/player.js, src/ar.js, src/hud.js, src/grade.js, src/segments.js, src/main.js, render.mjs, https://audio.py/, PROGRESS.md (průběžně zapisuj, co je hotové a jak se to pouští, ať se dá navázat po přerušení).

## Svět
- Hřiště 105×68 m. Tráva jako canvas textura (pruhy po 5,25 m, šum, skvrny) + dlaždicová detail textura přes onBeforeCompile. Čáry jako ostrá geometrie, ne textura. Vnější hrana čar = hranice hřiště.
- Branky se sítí (LineSegments), rohové praporky.
- Stadion: dvoupatrová mísa podle superelipsy, dav jako canvas textura lidí v řadách, LED pás mezi patry, střecha s žebry, řady reflektorů na hraně střechy (emisivní, bloom), vnější fasáda s osvětlenými okny, noční obloha, světla města kolem, tmavá zem.
- LED mantinely kolem hřiště s českými nápisy (PRAVIDLA FOTBALU, RESPEKT, FAIR PLAY, ZNEJ PRAVIDLA, #PRAVIDLAFOTBALU), pomalu se posouvají.
- Světla: 4 směrová světla z rohů střechy se stíny (shadow kamera zaostřená na akci daného segmentu), hemisférické světlo, jemná mlha.
- Analytický grade: do všech materiálů světa vlož přes onBeforeCompile sdílený uniform uFreeze (odbarvení do chladné šedozelené + ztmavení). AR materiály ho nemají, takže při zastaveném obrazu zůstanou syté.

## Postavy (styl GTA San Andreas)
- Hierarchický rig: root → body (pánev) → trup → hlava a ramena → lokty, kyčle → kolena → kotníky. Póza = sada úhlů (náklon a rotace trupu, flexe a abdukce ramen, lokty, kyčle, kolena, kotníky, náklon těla, výskok).
- Geometrie: trup jako LatheGeometry (široká ramena, užší pas), zúžené končetiny, klouby jako koule, dlaň s palcem, kopačka s podrážkou a zúženou špičkou, tvarovaná hlava (užší brada), nos, uši, vlasy jako slupka (krátké, objemné, ježek, holá hlava).
- Ručně malované canvas textury: obličej (oči s duhovkou a odleskem, obočí, stín nosu, rty, tváře, strniště nebo vousy, vlasová linie), dres (V-výstřih, boční pruhy, znak, sponzor, jméno a velké číslo na zádech, vrásky látky), rukávy, trenky s číslem, štulpny s pruhy.
- Každý hráč jiný: pleť, vlasy, účes, oči, vousy, barva kopaček, postava. Česká jména na zádech (NOVÁK, DVOŘÁK, RŮŽIČKA…).
- Procedurální běh (fáze z uražené vzdálenosti, ať nohy nekloužou) + knihovna póz: kop (nápřah, úder, dokopnutí), skluz, zakopnutí a pád, vhazování, výskok s paží nad hlavou, zvednutá karta, postoj ve zdi, výskok zdi, robinzonáda brankáře, hlava dolů.
- Zvýraznění: obrysová slupka (inverted hull, tloušťka podle vzdálenosti od kamery), průsvitný hologram „ducha“ pro naznačení restartu, rozsvícení paže.

## AR grafika (additive blending, depthWrite false, kreslí se postupně přes progress)
GroundLine (zářící čára na zemi), Curtain (svislá rovina: ofsajd, branková a postranní čára), GroundRing (prstenec nebo disk s pulzem, čárkováním a výsečí, třeba kruh 9,15 m), Area (vyplněné území s okrajem a skenem), Trail (trubice trajektorie míče), GroundArrow (šipka s běžícími chevrony), Marker (zaměřovač kontaktu), Beam (světelný sloup), ScanGrid (skenovací mřížka), Segment3D (měřicí úsečky), Silhouette (válec obrysu těla).
Barvy: tyrkysová = měření, červená = přestupek, jantarová = míč a území, zelená = platné rozhodnutí.
DŮLEŽITÉ: shadery musí být NaN-safe (clamp UV, žádné pow ze záporného čísla). MSAA na hranách extrapoluje UV a NaN se v bloomu rozleje do černých bloků přes půl obrazu.

## HUD (DOM, styl sportovního přenosu)
- Logo vlevo nahoře „PRAVIDLA FOTBALU / AR ANALÝZA ZÁPASU“ + počítadlo „01 / 09“.
- Vpravo nahoře stav (ŽIVĚ, ZÁZNAM, ZPOMALENĚ ×0,6, STOP · AR, PŘETÁČENÍ ◀◀, KONEC ZÁPASU) a herní čas.
- Lower third vlevo dole: číslo pravidla, název, jednověté vysvětlení, ukazatel postupu z 9 dílků.
- Panel rozhodnutí vpravo dole v barvě rozhodnutí (OFSAJD, PENALTA, GÓL…) s podtitulkem.
- Při zastavení obrazu: záblesk, rohové závorky, štítek „ZASTAVENÝ OBRAZ · AR ANALÝZA“, krátký technický řádek dole.
- AR štítky ukotvené na 3D bod (projekce kamerou) s odkazovou čarou. Drž je v bezpečné zóně (ne pod spodní grafikou, ne pod logem) a nesmí se překrývat.
- Velká grafika karty (žlutá a červená) s důvody, úvodní titulek, závěr „TEĎ ZNÁŠ PRAVIDLA.“ s mřížkou 9 pravidel, stinger přechod (šikmé pruhy navy, tyrkysová, bílá + logo) na každém střihu.
- Čitelnost: minimální velikosti (název pravidla 66 px, popis 29 px, štítek 33 px + podtitulek 21 px, technický řádek 22 px). Text vždy na tmavém podkladu, krátké texty. Line-height aspoň 1,05, aby diakritika (Ž, Č, Ř) nebyla oříznutá. Titulky neodhaluj maskou, vypadá to jako ořez: použij fade + rozostření + lehký zoom.
- Fonty: systémové s českou diakritikou (na macOS DIN Condensed + Avenir Next Condensed). Pokrytí znaků ověř předem přes fc-query.

## Scénář (vnitřní časy segmentů, natažení na čtení viz další sekce)
Úvod (3,5 s): dron sjíždí z noční oblohy přes střechu do stadionu na široký záběr středu hřiště. Skenovací mřížka přejede hřiště, pod hráči naskočí kroužky, štítek „MÍČ SLEDOVÁN“. Titulek „PRAVIDLA FOTBALU“, nad ním „TV ANALÝZA PRAVIDEL“, pod ním „9 KLÍČOVÝCH PRAVIDEL · AR ANALÝZA“.
1. Ofsajd: televizní kamera, Červený #8 přihrává, zastavení v okamžiku přihrávky. Kamera se přesune do osy ofsajdové linie. Tyrkysová rovina u nejzazší části těla předposledního obránce (Modrý #4), červená u předsunutého kolena útočníka (Červený #9), měření „+1,59 m“ (spočítej z kloubů, paže se nepočítají). Rozhodnutí OFSAJD: nepřímý volný kop, Modří.
2. Faul: záznam ×0,6 nízko u trávníku. Modrý #10 vede míč, Červený #6 jde skluzem zezadu do kotníku. Zastavení v okamžiku kontaktu: zaměřovač „KONTAKT“, „MÍSTO FAULU“ (kruh + sloup), šipka dráhy skluzu, červený obrys. Kamera obkrouží, pak pád. FAUL: přímý volný kop.
3. Penalta: Červený #9 ve vápně, Modrý #3 ho podrazí. Zastavení, jeřáb nahoru. Zvýraznění pokutového území, oblouk z místa faulu na pokutovou značku s drátěným míčem, „11 m“. PENALTA.
4. Vhazování: přihrávka Červeného #2 přejede postranní čáru (trajektorie se kreslí živě). Zastavení až ve chvíli, kdy je celý míč venku, střih na kameru za čarou. Červená rovina, „+15 cm“, „CELÝ MÍČ VENKU“, „POSLEDNÍ DOTEK · ČERVENÝ #2“, modrá šipka do hřiště a hologram modrého hráče s míčem nad hlavou. VHAZOVÁNÍ (Modří).
5. Roh + kop od branky: střela Červeného #10 tečovaná Modrým #4 za brankovou čáru → ROHOVÝ KOP. Pak efekt přetáčení (VHS) a stejná střela bez teče → KOP OD BRANKY (zvýrazněné brankové území).
6. Hra rukou: střela, Modrý #5 ve výskoku s paží nad ramenem, míč do předloktí. Paže zčervená, ramenní linie, čára paže „ÚHEL PAŽE 135°“, průsvitný válec „OBRYS TĚLA“. RUKA: přímý volný kop.
7. Volný kop: zeď na 8,00 m „ZEĎ MOC BLÍZKO“, nakreslí se kruh 9,15 m, zeď ustoupí, číslo naběhne na 9,15 m a zezelená. Kamera za exekutora, zahraný oblouk přes zeď zpomaleně, zastavení „PŘES ZEĎ“. PŘÍMÝ VOLNÝ KOP.
8. Karty: detail rozhodčího se žlutou kartou proti hráči se svěšenou hlavou + velká grafika ŽLUTÁ KARTA / NAPOMENUTÍ se 3 důvody. Střih, červená karta, vyloučený odchází + ČERVENÁ KARTA / VYLOUČENÍ.
9. Gól: střela, brankář vyrazí, míč padá na čáru. Kamera u brankové čáry. První zastavení: polovina míče na čáře, červená rovina, „−11 cm“, „ZATÍM NENÍ GÓL“. Míč se dokutálí. Druhé zastavení: celý míč za čarou, rovina zezelená, „+3 cm“, blesky foťáků v hledišti. GÓL.
Závěr (2,5 s): kamera stoupá nad hřiště (návrat k úvodnímu záběru), mřížka, „TEĎ ZNÁŠ PRAVIDLA.“ + mřížka 9 pravidel, stmívačka.

Každé zastavení obrazu: krátký záblesk, odbarvení scény, kamera se dál pomalu hýbe kolem zmrazených hráčů, AR prvky naskakují postupně. Mezi segmenty vždy stinger.

## Čas na čtení
Akce (běh, kopy, skluzy) běží ve skutečné rychlosti. Analytické části každého segmentu natáhni 1,5× až 2,1× přes warp funkci (výstupní čas → vnitřní čas segmentu), aby každé pravidlo bylo na obrazovce 6 až 8 s a všechny texty se daly v klidu přečíst. `node render.mjs info` exportuje výslednou časovou osu do out/timeline.json.

## Zvuk (procedurální, https://audio.py/)
120 BPM broadcast groove (kopák, virbl, hi-haty, basa se sidechainem, arpeggio, pad), riser v úvodu, závěrečný akord. Při zastaveném obrazu hudba ztlumená low-passem. Dav (filtrovaný šum s vlněním, řev při gólu), whoosh + boom na každém střihu, kovový úder na každém zastavení, krátké „razítko“ při rozhodnutí, píšťalka, kopy do míče, zvuk přetáčení. Časy všech zvuků načti z out/timeline.json, ať sedí na obraz i po změně délky. Cílová hlasitost kolem −14 LUFS.

## Postup práce a kontrola
1. Nejdřív rozjeď pipeline (server, render, ffmpeg) s jednou scénou a ověř, že WebGL v headless Chrome běží.
2. Po každé změně vyrenderuj kontrolní snímky v klíčových časech a prohlédni je, včetně výřezů na 100 % kvůli textu a diakritice.
3. Celé video kontroluj přes kontaktní listy (ffmpeg filtr tile) a snímky kolem přechodů.
4. Hotové video ověř dekódováním (`ffmpeg -v error -i video.mp4 -f null -`) a délku a stopy přes ffprobe.
5. Do PROGRESS.md průběžně zapisuj, co je hotové a jakými příkazy se to pouští.

中文译文

请为我制作一支视频,用电视分析节目的形式、配 AR 图形来讲解一项运动的规则。不要用 AI 视频模型,也不要下载素材:3D 场景、角色、贴图、图形和声音全部用代码做出来。请独立完成,并持续给我看检查帧。

## 参数(换别的运动时,改这一节和「分镜脚本」一节)
- 运动:足球
- 规则(9 条):越位、犯规、点球、掷界外球、角球 + 球门球、手球、直接任意球、黄牌和红牌、进球(整个球越过门线)
- 所有文字的语言:捷克语(完整变音符号,十进制逗号)
- 时长:约 68 秒(开场约 4.5 秒,每条规则 6 到 8 秒,结尾约 4 秒)
- 格式:1920×1080,30 fps,MP4(H.264 + AAC)
- 角色风格:PS2 时代、GTA San Andreas 风格(低多边形塑形的身体,手绘贴图)
- 球队:红队(红色球衣配白色镶边,白色短裤)、蓝队(皇家蓝球衣,深蓝短裤)、裁判一身黑色配荧光绿镶边、两名门将分别为绿色和紫色

## 技术与管线
- Three.js(npm)。index.html 里是 1920×1080 的 WebGL canvas,上面再叠一层用于 HUD 的 DOM。
- 确定性函数 `window.renderFrame(t)`:场景状态和 HUD 都是时间的纯函数,帧与帧之间不保留状态。
- `render.mjs`:本地静态 HTTP 服务器 + puppeteer-core 配系统 Chrome(headless,Mac 上加 `--use-angle=metal`)。每一帧都调用 renderFrame(t),等两次 requestAnimationFrame,截一张 JPEG,再通过管道送进 ffmpeg(libx264、CRF 18、yuv420p)。模式:`stills t1 t2 …`(输出 PNG 用于检查)、`video`、`info`(把时间轴写入 out/timeline.json)。
- 路径一律走 fileURLToPath(目录名里带空格也要能处理)。
- WebGLRenderer 开启 `preserveDrawingBuffer: true`、ACES 色调映射、PCF 软阴影。EffectComposer 带 MSAA(samples 4、HalfFloat):RenderPass、UnrealBloomPass、自定义调色 pass(暗角、细颗粒、色差、闪光、whip blur、VHS 效果)、OutputPass。
- 声音:用 Python(numpy + scipy)把整条配乐合成成 WAV,再由 ffmpeg 混入(AAC 192k)。
- 输出:完整画质版 + 网页版(CRF 23 到 24,maxrate 10M)。

## 项目结构
src/util.js(缓动、用于定格和慢放的 tmap、让球员沿带时间的 waypoint 移动并按已跑距离决定跑步相位的 track()、seeded rng)、src/world.js、src/player.js、src/ar.js、src/hud.js、src/grade.js、src/segments.js、src/main.js、render.mjs、https://audio.py/、PROGRESS.md(持续记录已完成的内容和启动方式,便于中断后接着做)。

## 世界
- 球场 105×68 米。草皮用 canvas 贴图(每 5.25 米一道条纹,加噪点和污渍)+ 通过 onBeforeCompile 叠加的平铺细节贴图。场线用锐利的几何体,不要用贴图。场线的外沿就是球场边界。
- 带球网的球门(LineSegments)、角旗。
- 体育场:按超椭圆做的双层碗状看台,观众用 canvas 贴图做成成排的人,两层看台之间是 LED 灯带,带肋条的屋顶,屋顶边缘一排泛光灯(自发光、bloom),外立面窗户亮着灯,夜空,四周的城市灯光,深色地面。
- 球场四周的 LED 广告板上是捷克语标语(PRAVIDLA FOTBALU、RESPEKT、FAIR PLAY、ZNEJ PRAVIDLA、#PRAVIDLAFOTBALU),缓慢滚动。
- 灯光:从屋顶四角打来的 4 盏带阴影的方向光(阴影相机对准当前片段的动作区域)、半球光、轻微雾效。
- 分析调色:通过 onBeforeCompile 往世界所有材质里注入共享 uniform uFreeze(去色成偏冷的灰绿色 + 压暗)。AR 材质不带它,所以画面定格时依然保持鲜艳。

## 角色(GTA San Andreas 风格)
- 层级 rig:root → body(骨盆)→ 躯干 → 头部与肩部 → 肘部;髋部 → 膝部 → 踝部。姿势 = 一组角度(躯干的倾斜与旋转、肩部的屈曲与外展、肘、髋、膝、踝、身体前倾、起跳)。
- 几何:躯干用 LatheGeometry(宽肩、收腰),四肢逐渐收细,关节做成球体,手掌带拇指,球鞋带鞋底和收窄的鞋头,头部有造型(下巴收窄),还有鼻子、耳朵,头发做成壳层(短发、蓬松、刺头、光头)。
- 手绘 canvas 贴图:脸(带虹膜和反光的眼睛、眉毛、鼻影、嘴唇、脸颊、胡茬或胡子、发际线)、球衣(V 领、侧条纹、队徽、赞助商、背后的名字和大号码、布料褶皱)、袖子、带号码的短裤、带条纹的球袜。
- 每个球员都不一样:肤色、头发、发型、眼睛、胡须、球鞋颜色、体型。背后的名字用捷克语(NOVÁK、DVOŘÁK、RŮŽIČKA…)。
- 程序化跑步(相位由已跑距离决定,让脚不打滑)+ 姿势库:踢球(引腿、击球、随摆)、滑铲、绊倒与摔倒、掷界外球、手臂举过头顶的起跳、举牌、人墙站位、人墙起跳、门将飞身扑救、低头。
- 强调效果:轮廓壳层(inverted hull,厚度随相机距离变化)、用来示意重新开球的半透明「幽灵」全息影像、手臂点亮。

## AR 图形(additive blending,depthWrite false,按 progress 逐步绘制)
GroundLine(地面上发光的线)、Curtain(竖直平面:越位线、球门线、边线)、GroundRing(带脉冲、刻度线和扇区的圆环或圆盘,例如 9.15 米圈)、Area(带描边和扫描的填充区域)、Trail(球轨迹的管状体)、GroundArrow(带流动 V 形条纹的箭头)、Marker(接触点准星)、Beam(光柱)、ScanGrid(扫描网格)、Segment3D(测量线段)、Silhouette(人体轮廓圆柱)。
颜色:青色 = 测量,红色 = 犯规,琥珀色 = 球与区域,绿色 = 有效判罚。
重要:着色器必须 NaN-safe(clamp UV,不要对负数做 pow)。MSAA 在边缘会外推 UV,NaN 会经 bloom 扩散成横跨半幅画面的黑色块。

## HUD(DOM,体育转播风格)
- 左上角 Logo「PRAVIDLA FOTBALU / AR ANALÝZA ZÁPASU」+ 计数「01 / 09」。
- 右上角状态(ŽIVĚ、ZÁZNAM、ZPOMALENĚ ×0,6、STOP · AR、PŘETÁČENÍ ◀◀、KONEC ZÁPASU)和比赛时间。
- 左下角 lower third:规则编号、名称、一句话解释、由 9 格组成的进度指示。
- 右下角判罚面板,用判罚对应的颜色(OFSAJD、PENALTA、GÓL…),带副标题。
- 画面定格时:闪光、四角括号、标签「ZASTAVENÝ OBRAZ · AR ANALÝZA」、底部一行简短的技术信息。
- AR 标签锚定到 3D 点(由相机投影),带引线。要保持在安全区内(不要压到底部图形,也不要压到 Logo),而且不能互相重叠。
- 大号卡牌图形(黄牌和红牌)配理由、开场标题、结尾「TEĎ ZNÁŠ PRAVIDLA.」配 9 条规则的网格、每次镜头切换都用 stinger 转场(藏青、青色、白色的斜条纹 + Logo)。
- 可读性:最小字号(规则名 66 px,描述 29 px,标签 33 px + 副标题 21 px,技术信息行 22 px)。文字永远放在深色底上,文案要短。行高至少 1.05,以免变音符号(Ž、Č、Ř)被裁掉。标题不要用遮罩揭示,那样看起来像被切掉:改用 fade + 模糊 + 轻微缩放。
- 字体:系统字体要覆盖捷克语变音符号(macOS 上是 DIN Condensed + Avenir Next Condensed)。字形覆盖范围要事先用 fc-query 检查。

## 分镜脚本(片段的内部时间;拉长到可阅读时长的做法见下一节)
开场(3.5 秒):无人机从夜空沿屋顶下降进入体育场,最后停在球场中央的广角镜头上。扫描网格扫过球场,球员脚下弹出圆环,标签「MÍČ SLEDOVÁN」。标题「PRAVIDLA FOTBALU」,其上方「TV ANALÝZA PRAVIDEL」,其下方「9 KLÍČOVÝCH PRAVIDEL · AR ANALÝZA」。
1. 越位:电视转播机位,红队 #8 传球,在传球的瞬间定格。相机移到越位线的轴线上。在倒数第二名防守球员(蓝队 #4)身体最靠后的部位放青色平面,在进攻球员(红队 #9)前探的膝盖处放红色平面,测量值「+1,59 m」(从关节算,手臂不计入)。判罚 OFSAJD:间接任意球,蓝队。
2. 犯规:录像 ×0.6 慢放,机位贴地。蓝队 #10 带球,红队 #6 从背后滑铲踢向脚踝。在接触瞬间定格:准星「KONTAKT」、「MÍSTO FAULU」(圆环 + 光柱)、滑铲路线的箭头、红色轮廓。相机环绕一圈,随后倒地。FAUL:直接任意球。
3. 点球:红队 #9 在禁区内,蓝队 #3 把他绊倒。定格,摇臂升起。高亮罚球区,从犯规点到点球点画一条弧线,配一个线框球,「11 m」。PENALTA。
4. 掷界外球:红队 #2 的传球越过边线(轨迹实时绘制)。等到整个球都出界才定格,切到边线外的机位。红色平面、「+15 cm」、「CELÝ MÍČ VENKU」、「POSLEDNÍ DOTEK · ČERVENÝ #2」、指向场内的蓝色箭头,以及蓝队球员双手举球过顶的全息影像。VHAZOVÁNÍ(蓝队)。
5. 角球 + 球门球:红队 #10 的射门被蓝队 #4 蹭到后出了球门线 → ROHOVÝ KOP。接着来一个倒带效果(VHS),同一脚射门但没人蹭到 → KOP OD BRANKY(高亮球门区)。
6. 手球:射门,蓝队 #5 起跳,手臂高过肩膀,球打在前臂上。手臂变红,画出肩线、手臂线「ÚHEL PAŽE 135°」,以及半透明圆柱「OBRYS TĚLA」。RUKA:直接任意球。
7. 任意球:人墙站在 8.00 米处「ZEĎ MOC BLÍZKO」,画出 9.15 米圈,人墙后撤,数字涨到 9.15 米并变绿。相机放在主罚者身后,慢放展示弧线越过人墙,定格「PŘES ZEĎ」。PŘÍMÝ VOLNÝ KOP。
8. 红黄牌:裁判举黄牌对着低头球员的特写 + 大号图形 ŽLUTÁ KARTA / NAPOMENUTÍ,配 3 条理由。切换,红牌,被罚下的球员离场 + ČERVENÁ KARTA / VYLOUČENÍ。
9. 进球:射门,门将把球打出,球落到门线上。相机在球门线旁。第一次定格:球的一半在线上,红色平面,「−11 cm」、「ZATÍM NENÍ GÓL」。球继续往前滚。第二次定格:整个球越过门线,平面变绿,「+3 cm」,看台上闪光灯闪成一片。GÓL。
结尾(2.5 秒):相机升到球场上空(回到开场的镜头),网格,「TEĎ ZNÁŠ PRAVIDLA.」+ 9 条规则的网格,淡出。

每次画面定格:短暂闪光、场景去色、相机继续绕定格住的球员缓慢移动、AR 元素依次弹出。片段之间始终用 stinger 转场。

## 阅读时间
动作(奔跑、踢球、滑铲)按真实速度播放。每个片段里的分析部分用 warp 函数拉长到 1.5× 到 2.1×(输出时间 → 片段的内部时间),让每条规则在画面上停留 6 到 8 秒,所有文字都能从容读完。`node render.mjs info` 会把最终时间轴导出到 out/timeline.json。

## 声音(程序化生成,https://audio.py/)
120 BPM 的 broadcast groove(底鼓、军鼓、踩镲、带 sidechain 的贝斯、琶音、pad),开场有 riser,结尾一个和弦。画面定格时音乐经低通滤波压低。观众(带起伏的滤波噪声,进球时爆发出欢呼)、每次切换的 whoosh + boom、每次定格的金属撞击声、判罚时短促的「盖章」声、哨声、踢球声、倒带声。所有声音的时间都从 out/timeline.json 读取,这样即使时长改了也能对上画面。目标响度约 −14 LUFS。

## 工作流程与检查
1. 先用一个场景把管线(服务器、渲染、ffmpeg)跑起来,确认 WebGL 在 headless Chrome 里能正常工作。
2. 每次改动后,在关键时间点渲染检查帧并逐张查看,包括为检查文字和变音符号而做的 100% 放大局部截图。
3. 整片用接触表(ffmpeg 的 tile 滤镜)以及转场附近的帧来检查。
4. 成片用解码验证(`ffmpeg -v error -i video.mp4 -f null -`),并用 ffprobe 检查时长和轨道。
5. 在 PROGRESS.md 里持续记录已完成的内容以及用哪些命令启动。

溯源

原作者
lukasersil
发布日期
2026-10-02(由推文 ID 反解)
原始出处
查看原帖 ↗
收录来源
zhuyansen/awesome-opus-5.5-video · 2105922894924501283 · 未声明许可