@biunow/agent-biuart 0.0.0-stage → 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bin/server.mjs +575 -0
- package/data/styles.json +533 -0
- package/engine/audit_clip.py +46 -0
- package/engine/clip.html +24 -0
- package/engine/clip.js +104 -0
- package/engine/clip_schema.json +19 -0
- package/engine/clips/t1_3b1b.js +203 -0
- package/engine/clips/t2_keynote_ui.js +347 -0
- package/engine/clips/t3_finance_chart.js +206 -0
- package/engine/clips/y1_kurzgesagt.js +183 -0
- package/engine/clips/y2_vox.js +150 -0
- package/engine/clips/y3_whiteboard.js +209 -0
- package/engine/clips/y4_storytime.js +194 -0
- package/engine/clips/y5_kinetic_type.js +134 -0
- package/engine/compare.py +19 -0
- package/engine/demos/_shared/hero/c1_0.png +0 -0
- package/engine/demos/_shared/hero/c1_1.png +0 -0
- package/engine/demos/_shared/hero/c1_2.png +0 -0
- package/engine/demos/_shared/hero/c3_line.png +0 -0
- package/engine/demos/_shared/hero.js +96 -0
- package/engine/demos/long_scroll/eras.js +23 -0
- package/engine/demos/long_scroll/frames/8bit_act/01.png +0 -0
- package/engine/demos/long_scroll/frames/8bit_act/02.png +0 -0
- package/engine/demos/long_scroll/frames/8bit_act/03.png +0 -0
- package/engine/demos/long_scroll/frames/8bit_act/04.png +0 -0
- package/engine/demos/long_scroll/frames/8bit_act/05.png +0 -0
- package/engine/demos/long_scroll/frames/8bit_act/06.png +0 -0
- package/engine/demos/long_scroll/frames/8bit_act/07.png +0 -0
- package/engine/demos/long_scroll/frames/8bit_act/08.png +0 -0
- package/engine/demos/long_scroll/frames/8bit_act/meta.json +69 -0
- package/engine/demos/long_scroll/frames/8bit_walk/01.png +0 -0
- package/engine/demos/long_scroll/frames/8bit_walk/02.png +0 -0
- package/engine/demos/long_scroll/frames/8bit_walk/03.png +0 -0
- package/engine/demos/long_scroll/frames/8bit_walk/04.png +0 -0
- package/engine/demos/long_scroll/frames/8bit_walk/05.png +0 -0
- package/engine/demos/long_scroll/frames/8bit_walk/06.png +0 -0
- package/engine/demos/long_scroll/frames/8bit_walk/07.png +0 -0
- package/engine/demos/long_scroll/frames/8bit_walk/08.png +0 -0
- package/engine/demos/long_scroll/frames/8bit_walk/meta.json +69 -0
- package/engine/demos/long_scroll/frames/egypt_dodge/01.png +0 -0
- package/engine/demos/long_scroll/frames/egypt_dodge/02.png +0 -0
- package/engine/demos/long_scroll/frames/egypt_dodge/03.png +0 -0
- package/engine/demos/long_scroll/frames/egypt_dodge/04.png +0 -0
- package/engine/demos/long_scroll/frames/egypt_dodge/05.png +0 -0
- package/engine/demos/long_scroll/frames/egypt_dodge/06.png +0 -0
- package/engine/demos/long_scroll/frames/egypt_dodge/07.png +0 -0
- package/engine/demos/long_scroll/frames/egypt_dodge/08.png +0 -0
- package/engine/demos/long_scroll/frames/egypt_dodge/meta.json +69 -0
- package/engine/demos/long_scroll/frames/egypt_walk8/01.png +0 -0
- package/engine/demos/long_scroll/frames/egypt_walk8/02.png +0 -0
- package/engine/demos/long_scroll/frames/egypt_walk8/03.png +0 -0
- package/engine/demos/long_scroll/frames/egypt_walk8/04.png +0 -0
- package/engine/demos/long_scroll/frames/egypt_walk8/05.png +0 -0
- package/engine/demos/long_scroll/frames/egypt_walk8/06.png +0 -0
- package/engine/demos/long_scroll/frames/egypt_walk8/07.png +0 -0
- package/engine/demos/long_scroll/frames/egypt_walk8/08.png +0 -0
- package/engine/demos/long_scroll/frames/egypt_walk8/meta.json +69 -0
- package/engine/demos/long_scroll/frames/monet_throw/01.png +0 -0
- package/engine/demos/long_scroll/frames/monet_throw/02.png +0 -0
- package/engine/demos/long_scroll/frames/monet_throw/03.png +0 -0
- package/engine/demos/long_scroll/frames/monet_throw/04.png +0 -0
- package/engine/demos/long_scroll/frames/monet_throw/05.png +0 -0
- package/engine/demos/long_scroll/frames/monet_throw/06.png +0 -0
- package/engine/demos/long_scroll/frames/monet_throw/07.png +0 -0
- package/engine/demos/long_scroll/frames/monet_throw/08.png +0 -0
- package/engine/demos/long_scroll/frames/monet_throw/meta.json +71 -0
- package/engine/demos/long_scroll/frames/monet_walk/01.png +0 -0
- package/engine/demos/long_scroll/frames/monet_walk/02.png +0 -0
- package/engine/demos/long_scroll/frames/monet_walk/03.png +0 -0
- package/engine/demos/long_scroll/frames/monet_walk/04.png +0 -0
- package/engine/demos/long_scroll/frames/monet_walk/05.png +0 -0
- package/engine/demos/long_scroll/frames/monet_walk/06.png +0 -0
- package/engine/demos/long_scroll/frames/monet_walk/07.png +0 -0
- package/engine/demos/long_scroll/frames/monet_walk/08.png +0 -0
- package/engine/demos/long_scroll/frames/monet_walk/meta.json +71 -0
- package/engine/demos/long_scroll/lib/acts.js +87 -0
- package/engine/demos/long_scroll/lib/crossing.js +463 -0
- package/engine/demos/long_scroll/lib/world.js +143 -0
- package/engine/demos/long_scroll/lib/xing2_ding.js +42 -0
- package/engine/demos/long_scroll/lib/xing2_jia.js +114 -0
- package/engine/demos/long_scroll/lib/xing2_yi.js +133 -0
- package/engine/demos/long_scroll/segments/02_egypt.js +234 -0
- package/engine/demos/long_scroll/segments/14_8bit.js +118 -0
- package/engine/demos/long_scroll/segments/28_monet.js +86 -0
- package/engine/demos/t1_3b1b/eras.js +11 -0
- package/engine/demos/t1_3b1b/t1_s1.js +101 -0
- package/engine/demos/t1_3b1b/t1_s2.js +74 -0
- package/engine/demos/t1_3b1b/t1_s3.js +65 -0
- package/engine/demos/t2_keynote_ui/eras.js +10 -0
- package/engine/demos/t2_keynote_ui/t2_s1.js +57 -0
- package/engine/demos/t2_keynote_ui/t2_s2.js +70 -0
- package/engine/demos/t2_keynote_ui/t2_s3.js +61 -0
- package/engine/demos/t3_finance_chart/eras.js +11 -0
- package/engine/demos/t3_finance_chart/t3_s1.js +48 -0
- package/engine/demos/t3_finance_chart/t3_s2.js +42 -0
- package/engine/demos/t3_finance_chart/t3_s3.js +51 -0
- package/engine/demos/y1_kurzgesagt/eras.js +10 -0
- package/engine/demos/y1_kurzgesagt/kurzgesagt.js +347 -0
- package/engine/demos/y2_vox/eras.js +10 -0
- package/engine/demos/y2_vox/vox.js +240 -0
- package/engine/demos/y3_whiteboard/eras.js +10 -0
- package/engine/demos/y3_whiteboard/whiteboard.js +162 -0
- package/engine/demos/y4_storytime/eras.js +14 -0
- package/engine/demos/y4_storytime/s1_desk.js +18 -0
- package/engine/demos/y4_storytime/s2_screen.js +82 -0
- package/engine/demos/y4_storytime/s3_react.js +39 -0
- package/engine/demos/y4_storytime/s4_wide.js +16 -0
- package/engine/demos/y4_storytime/s5_close.js +18 -0
- package/engine/demos/y4_storytime/story.js +25 -0
- package/engine/demos/y4_storytime/vo_env.js +2 -0
- package/engine/demos/y4_storytime/world.js +73 -0
- package/engine/demos/y5_kinetic_type/eras.js +16 -0
- package/engine/demos/y5_kinetic_type/k1_title.js +38 -0
- package/engine/demos/y5_kinetic_type/k2_complete.js +55 -0
- package/engine/demos/y5_kinetic_type/k3_chat.js +47 -0
- package/engine/demos/y5_kinetic_type/k4_agent.js +49 -0
- package/engine/demos/y5_kinetic_type/kinetic.js +52 -0
- package/engine/engine.js +277 -0
- package/engine/eras.js +60 -0
- package/engine/eras_gallery.js +115 -0
- package/engine/eras_style_studies.js +20 -0
- package/engine/examples/assets/K/347/272/277/345/233/276_/346/250/252/345/261/217.png +0 -0
- package/engine/examples/assets//347/273/210/347/253/257_for/345/276/252/347/216/257/346/261/202/345/222/214.png +0 -0
- package/engine/examples/assets//347/273/210/347/253/257_sum/346/261/202/345/222/214.png +0 -0
- package/engine/examples/assets//350/220/245/346/224/266/345/233/276_/347/253/226/345/261/217.png +0 -0
- package/engine/examples/assets//350/264/242/347/273/217/345/233/276/350/241/250_/346/250/252/345/261/217.png +0 -0
- package/engine/examples/t1_3b1b.json +19 -0
- package/engine/examples/t2_fullbleed_pulse.json +15 -0
- package/engine/examples/t2_keynote_ui.json +15 -0
- package/engine/examples/t3_finance_chart.json +29 -0
- package/engine/examples/y1_kurzgesagt.json +16 -0
- package/engine/examples/y2_vox.json +14 -0
- package/engine/examples/y3_whiteboard.json +17 -0
- package/engine/examples/y4_storytime.json +52 -0
- package/engine/examples/y5_kinetic_type.json +14 -0
- package/engine/index.html +42 -0
- package/engine/lib/THREE_LICENSE.txt +21 -0
- package/engine/lib/brush.js +149 -0
- package/engine/lib/camera.js +99 -0
- package/engine/lib/chart.js +152 -0
- package/engine/lib/collage.js +97 -0
- package/engine/lib/diagram.js +264 -0
- package/engine/lib/finish.js +70 -0
- package/engine/lib/fonts/AlfaSlabOne-400.woff +0 -0
- package/engine/lib/fonts/Anton-400.woff +0 -0
- package/engine/lib/fonts/ArchivoBlack-400.woff +0 -0
- package/engine/lib/fonts/Bangers-400.woff +0 -0
- package/engine/lib/fonts/Caveat-600.woff +0 -0
- package/engine/lib/fonts/Cinzel-400.woff +0 -0
- package/engine/lib/fonts/Cinzel-700.woff +0 -0
- package/engine/lib/fonts/CormorantGaramond-500.woff +0 -0
- package/engine/lib/fonts/CormorantGaramond-500i.woff +0 -0
- package/engine/lib/fonts/CormorantGaramond-700.woff +0 -0
- package/engine/lib/fonts/EBGaramond-400.woff +0 -0
- package/engine/lib/fonts/EBGaramond-400i.woff +0 -0
- package/engine/lib/fonts/EBGaramond-600.woff +0 -0
- package/engine/lib/fonts/Exo2-800i.woff +0 -0
- package/engine/lib/fonts/GochiHand-400.woff +0 -0
- package/engine/lib/fonts/IMFellEnglish-400.woff +0 -0
- package/engine/lib/fonts/IMFellEnglish-400i.woff +0 -0
- package/engine/lib/fonts/Inter-var.woff +0 -0
- package/engine/lib/fonts/JosefinSans-700.woff +0 -0
- package/engine/lib/fonts/Kalam-700.woff +0 -0
- package/engine/lib/fonts/LICENSES.md +40 -0
- package/engine/lib/fonts/LXGWWenKai-500.woff +0 -0
- package/engine/lib/fonts/LibreBaskerville-400.woff +0 -0
- package/engine/lib/fonts/LibreBaskerville-700.woff +0 -0
- package/engine/lib/fonts/LilitaOne-400.woff +0 -0
- package/engine/lib/fonts/Marcellus-400.woff +0 -0
- package/engine/lib/fonts/NotoSansSC-500.woff +0 -0
- package/engine/lib/fonts/NotoSansSC-700.woff +0 -0
- package/engine/lib/fonts/NotoSansSC-800.woff +0 -0
- package/engine/lib/fonts/NotoSansSC-900.woff +0 -0
- package/engine/lib/fonts/NotoSansSC-sub.woff +0 -0
- package/engine/lib/fonts/NotoSerifJP-600.woff +0 -0
- package/engine/lib/fonts/NotoSerifSC-sub.woff +0 -0
- package/engine/lib/fonts/OFL.txt +94 -0
- package/engine/lib/fonts/PlayfairDisplay-400i.woff +0 -0
- package/engine/lib/fonts/PlayfairDisplay-700.woff +0 -0
- package/engine/lib/fonts/PlayfairDisplay-700i.woff +0 -0
- package/engine/lib/fonts/Poppins-600.woff +0 -0
- package/engine/lib/fonts/Poppins-700.woff +0 -0
- package/engine/lib/fonts/Poppins-800.woff +0 -0
- package/engine/lib/fonts/PressStart2P-400.woff +0 -0
- package/engine/lib/fonts/Righteous-400.woff +0 -0
- package/engine/lib/fonts/RobotoCondensed-var.woff +0 -0
- package/engine/lib/fonts/Rye-400.woff +0 -0
- package/engine/lib/fonts/UnifrakturMaguntia-400.woff +0 -0
- package/engine/lib/fonts/cmunrm.woff +0 -0
- package/engine/lib/fonts/cmunti.woff +0 -0
- package/engine/lib/fonts/index.json +1 -0
- package/engine/lib/fonts.js +56 -0
- package/engine/lib/kit.js +91 -0
- package/engine/lib/media.js +118 -0
- package/engine/lib/medium.js +258 -0
- package/engine/lib/motion.js +111 -0
- package/engine/lib/paint.js +200 -0
- package/engine/lib/palettes.js +57 -0
- package/engine/lib/post.js +108 -0
- package/engine/lib/render.js +189 -0
- package/engine/lib/rig.js +390 -0
- package/engine/lib/rig_huashu.js +171 -0
- package/engine/lib/three.min.js +7 -0
- package/engine/lib/toon.js +186 -0
- package/engine/lib/typo.js +136 -0
- package/engine/lib/ui.js +141 -0
- package/engine/lib/util.js +92 -0
- package/engine/render.py +157 -0
- package/engine/scenes/01_cave.js +364 -0
- package/engine/scenes/02_egypt.js +524 -0
- package/engine/scenes/03_greek.js +448 -0
- package/engine/scenes/04_roman.js +555 -0
- package/engine/scenes/05_gothic.js +522 -0
- package/engine/scenes/06_renaissance.js +338 -0
- package/engine/scenes/08_impressionism.js +206 -0
- package/engine/scenes/09_postimp.js +183 -0
- package/engine/scenes/10_nouveau.js +334 -0
- package/engine/scenes/11_cubism.js +265 -0
- package/engine/scenes/12_bauhaus.js +214 -0
- package/engine/scenes/13_pop.js +269 -0
- package/engine/scenes/14_8bit.js +238 -0
- package/engine/scenes/15_raytrace.js +300 -0
- package/engine/scenes/16_2026.js +565 -0
- package/engine/scenes/17_ink.js +273 -0
- package/engine/scenes/18_klimt.js +227 -0
- package/engine/scenes/19_munch.js +153 -0
- package/engine/scenes/20_dunhuang.js +215 -0
- package/engine/scenes/21_kusama.js +124 -0
- package/engine/scenes/22_constructivism.js +205 -0
- package/engine/scenes/23_dali.js +221 -0
- package/engine/scenes/24_hopper.js +150 -0
- package/engine/scenes/25_ghibli.js +251 -0
- package/engine/scenes/26_vaporwave.js +191 -0
- package/engine/scenes/27_kirby.js +255 -0
- package/engine/scenes/28_monet.js +176 -0
- package/engine/scenes/29_seurat.js +104 -0
- package/engine/scenes/30_matisse.js +151 -0
- package/engine/scenes/31_haring.js +109 -0
- package/engine/scenes/32_rembrandt.js +217 -0
- package/engine/scenes/33_rubberhose.js +219 -0
- package/engine/scenes/34_shadowpuppet.js +195 -0
- package/engine/scenes/35_shinkai.js +197 -0
- package/engine/scenes/36_picasso_blue.js +123 -0
- package/engine/scenes/38_giotto.js +133 -0
- package/engine/scenes/39_piero.js +53 -0
- package/engine/scenes/40_raphael.js +96 -0
- package/engine/scenes/41_michelangelo.js +112 -0
- package/engine/scenes/42_guardi.js +70 -0
- package/engine/scenes/43_lorenzetti.js +145 -0
- package/engine/scenes/44_cortona.js +86 -0
- package/engine/scenes/45_renoir.js +86 -0
- package/engine/scenes/46_pissarro.js +82 -0
- package/engine/scenes/47_sisley.js +94 -0
- package/engine/scenes/48_gauguin.js +107 -0
- package/engine/scenes/49_chagall.js +60 -0
- package/engine/scenes/50_ma_yuan.js +131 -0
- package/engine/scenes/51_persian_miniature.js +149 -0
- package/engine/scenes/52_south_park.js +105 -0
- package/engine/scenes/53_pixar.js +60 -0
- package/engine/scenes/54_ghibli_lab.js +68 -0
- package/engine/scenes/55_dunhuang.js +161 -0
- package/engine/scenes/index.js +28 -0
- package/engine/spec_assets.py +76 -0
- package/engine/transitions.js +929 -0
- package/engine//346/227/266/344/273/243/344/275/234/350/200/205/350/247/204/350/214/203.md +49 -0
- package/lib/host.mjs +754 -0
- package/lib/render-bridge.mjs +543 -0
- package/lib/render-cli.mjs +98 -0
- package/lib/storyboard-lint.mjs +54 -0
- package/manifest.json +52 -0
- package/package.json +8 -4
- package/runtime/package.json +8 -0
- package/skills/biuart/SKILL.md +154 -0
- package/skills/biuart/references/01-/346/213/206/350/247/243.md +55 -0
- package/skills/biuart/references/02-/346/234/272/345/210/266.md +41 -0
- package/skills/biuart/references/03-/344/270/200/345/270/247/345/205/210/350/241/214/345/233/233/346/235/241/350/267/257/347/272/277.md +39 -0
- package/skills/biuart/references/04-/347/272/257/344/273/243/347/240/201/347/273/230/345/210/266.md +92 -0
- package/skills/biuart/references/05-/350/212/202/345/245/217/344/270/216/351/205/215/344/271/220.md +19 -0
- package/skills/biuart/references/06-/345/217/243/346/222/255/351/251/261/345/212/250/347/232/204/350/211/272/346/234/257/347/237/255/347/211/207.md +31 -0
- package/skills/biuart/references/07-/346/255/243/351/235/242/347/273/217/351/252/214.md +196 -0
- package/skills/biuart/references/08-/351/243/216/346/240/274/344/275/234/350/200/205/350/247/204/350/214/203.md +61 -0
- package/skills/biuart/references/09-/350/247/206/351/242/221/345/212/250/347/224/273/350/257/255/346/263/225.md +382 -0
- package/skills/biuart/references/10-/350/247/222/350/211/262.md +34 -0
- package/skills/biuart/references/11-/351/225/277/345/215/267/347/251/277/350/266/212/347/211/207.md +43 -0
- package/skills/biuart/references/12-/345/217/243/346/222/255/346/225/264/347/211/207/344/270/216/347/273/217/351/252/214/345/233/236/346/265/201.md +25 -0
- package/skills/biuart/references/13-/345/217/243/346/222/255/344/270/216/350/257/255/351/237/263/345/244/215/345/210/273.md +7 -0
- package/skills/biuart/references/15-/350/267/250/345/234/272/346/231/257/351/243/216/346/240/274/346/217/220/347/202/274.md +48 -0
- package/skills/biuart/references/16-/351/243/216/346/240/274/346/274/224/347/244/27295/345/210/206/345/215/217/350/256/256.md +103 -0
- package/skills/biuart/references/about-author.md +99 -0
- package/skills/biuart/references/capabilities.md +91 -0
- package/skills/biuart/references/compatibility.md +34 -0
- package/skills/biuart/references/images.md +97 -0
- package/skills/biuart/references/voice-model-review.md +18 -0
- package/skills/biuart/references//345/212/250/347/224/273/350/257/255/346/263/225/t1_3b1b.md +122 -0
- package/skills/biuart/references//345/212/250/347/224/273/350/257/255/346/263/225/t2_keynote_ui.md +117 -0
- package/skills/biuart/references//345/212/250/347/224/273/350/257/255/346/263/225/t3_finance_chart.md +116 -0
- package/skills/biuart/references//345/212/250/347/224/273/350/257/255/346/263/225/y1_kurzgesagt.md +193 -0
- package/skills/biuart/references//345/212/250/347/224/273/350/257/255/346/263/225/y2_vox.md +195 -0
- package/skills/biuart/references//345/212/250/347/224/273/350/257/255/346/263/225/y3_whiteboard.md +190 -0
- package/skills/biuart/references//345/212/250/347/224/273/350/257/255/346/263/225/y4_storytime.md +166 -0
- package/skills/biuart/references//345/212/250/347/224/273/350/257/255/346/263/225/y5_kinetic_type.md +158 -0
- package/skills/biuart/references//345/212/250/347/224/273/350/257/255/346/263/225/y6_presenter_explainer.md +24 -0
- package/skills/biuart/references//345/217/243/346/222/255API.md +125 -0
- package/skills/biuart/references//350/211/262/346/235/277.md +38 -0
- package/skills/biuart/references//350/247/222/350/211/262/347/262/276/347/273/206/345/272/246.md +61 -0
- package/skills/biuart/references//351/225/234/345/244/264/350/241/250/346/250/241/346/235/277.md +80 -0
- package/skills/biuart/references//351/225/234/345/244/264/350/257/255/350/250/200.md +73 -0
- package/skills/biuart/references//351/243/216/346/240/274/351/205/215/346/226/271/01_cave.md +46 -0
- package/skills/biuart/references//351/243/216/346/240/274/351/205/215/346/226/271/02_egypt.md +64 -0
- package/skills/biuart/references//351/243/216/346/240/274/351/205/215/346/226/271/03_greek.md +50 -0
- package/skills/biuart/references//351/243/216/346/240/274/351/205/215/346/226/271/04_roman.md +99 -0
- package/skills/biuart/references//351/243/216/346/240/274/351/205/215/346/226/271/05_gothic.md +32 -0
- package/skills/biuart/references//351/243/216/346/240/274/351/205/215/346/226/271/06_renaissance.md +41 -0
- package/skills/biuart/references//351/243/216/346/240/274/351/205/215/346/226/271/08_impressionism.md +34 -0
- package/skills/biuart/references//351/243/216/346/240/274/351/205/215/346/226/271/09_postimp.md +17 -0
- package/skills/biuart/references//351/243/216/346/240/274/351/205/215/346/226/271/10_nouveau.md +31 -0
- package/skills/biuart/references//351/243/216/346/240/274/351/205/215/346/226/271/11_cubism.md +30 -0
- package/skills/biuart/references//351/243/216/346/240/274/351/205/215/346/226/271/12_bauhaus.md +30 -0
- package/skills/biuart/references//351/243/216/346/240/274/351/205/215/346/226/271/13_pop.md +29 -0
- package/skills/biuart/references//351/243/216/346/240/274/351/205/215/346/226/271/14_8bit.md +27 -0
- package/skills/biuart/references//351/243/216/346/240/274/351/205/215/346/226/271/15_raytrace.md +32 -0
- package/skills/biuart/references//351/243/216/346/240/274/351/205/215/346/226/271/16_2026.md +55 -0
- package/skills/biuart/references//351/243/216/346/240/274/351/205/215/346/226/271/17_ink.md +50 -0
- package/skills/biuart/references//351/243/216/346/240/274/351/205/215/346/226/271/18_klimt.md +37 -0
- package/skills/biuart/references//351/243/216/346/240/274/351/205/215/346/226/271/19_munch.md +42 -0
- package/skills/biuart/references//351/243/216/346/240/274/351/205/215/346/226/271/20_dunhuang.md +49 -0
- package/skills/biuart/references//351/243/216/346/240/274/351/205/215/346/226/271/21_kusama.md +32 -0
- package/skills/biuart/references//351/243/216/346/240/274/351/205/215/346/226/271/22_constructivism.md +35 -0
- package/skills/biuart/references//351/243/216/346/240/274/351/205/215/346/226/271/23_dali.md +29 -0
- package/skills/biuart/references//351/243/216/346/240/274/351/205/215/346/226/271/24_hopper.md +30 -0
- package/skills/biuart/references//351/243/216/346/240/274/351/205/215/346/226/271/25_ghibli.md +55 -0
- package/skills/biuart/references//351/243/216/346/240/274/351/205/215/346/226/271/26_vaporwave.md +27 -0
- package/skills/biuart/references//351/243/216/346/240/274/351/205/215/346/226/271/27_kirby.md +30 -0
- package/skills/biuart/references//351/243/216/346/240/274/351/205/215/346/226/271/28_monet.md +39 -0
- package/skills/biuart/references//351/243/216/346/240/274/351/205/215/346/226/271/29_seurat.md +31 -0
- package/skills/biuart/references//351/243/216/346/240/274/351/205/215/346/226/271/30_matisse.md +26 -0
- package/skills/biuart/references//351/243/216/346/240/274/351/205/215/346/226/271/31_haring.md +22 -0
- package/skills/biuart/references//351/243/216/346/240/274/351/205/215/346/226/271/32_rembrandt.md +29 -0
- package/skills/biuart/references//351/243/216/346/240/274/351/205/215/346/226/271/33_rubberhose.md +31 -0
- package/skills/biuart/references//351/243/216/346/240/274/351/205/215/346/226/271/34_shadowpuppet.md +40 -0
- package/skills/biuart/references//351/243/216/346/240/274/351/205/215/346/226/271/35_shinkai.md +34 -0
- package/skills/biuart/references//351/243/216/346/240/274/351/205/215/346/226/271/36_picasso_blue.md +25 -0
- package/skills/biuart/references//351/243/216/346/240/274/351/205/215/346/226/271/37_rick_morty.md +48 -0
- package/skills/biuart/references//351/243/216/346/240/274/351/205/215/346/226/271/38_giotto.md +67 -0
- package/skills/biuart/references//351/243/216/346/240/274/351/205/215/346/226/271/39_piero.md +59 -0
- package/skills/biuart/references//351/243/216/346/240/274/351/205/215/346/226/271/40_raphael.md +65 -0
- package/skills/biuart/references//351/243/216/346/240/274/351/205/215/346/226/271/41_michelangelo.md +65 -0
- package/skills/biuart/references//351/243/216/346/240/274/351/205/215/346/226/271/42_guardi.md +65 -0
- package/skills/biuart/references//351/243/216/346/240/274/351/205/215/346/226/271/43_lorenzetti.md +69 -0
- package/skills/biuart/references//351/243/216/346/240/274/351/205/215/346/226/271/44_cortona.md +66 -0
- package/skills/biuart/references//351/243/216/346/240/274/351/205/215/346/226/271/45_renoir.md +66 -0
- package/skills/biuart/references//351/243/216/346/240/274/351/205/215/346/226/271/46_pissarro.md +66 -0
- package/skills/biuart/references//351/243/216/346/240/274/351/205/215/346/226/271/47_sisley.md +67 -0
- package/skills/biuart/references//351/243/216/346/240/274/351/205/215/346/226/271/48_gauguin.md +66 -0
- package/skills/biuart/references//351/243/216/346/240/274/351/205/215/346/226/271/49_chagall.md +59 -0
- package/skills/biuart/references//351/243/216/346/240/274/351/205/215/346/226/271/50_ma_yuan.md +68 -0
- package/skills/biuart/references//351/243/216/346/240/274/351/205/215/346/226/271/51_persian_miniature.md +66 -0
- package/skills/biuart/references//351/243/216/346/240/274/351/205/215/346/226/271/52_south_park.md +65 -0
- package/skills/biuart/references//351/243/216/346/240/274/351/205/215/346/226/271/53_pixar.md +61 -0
- package/skills/biuart/references//351/243/216/346/240/274/351/205/215/346/226/271/55_dunhuang.md +41 -0
- package/skills/biuart/references//351/243/216/346/240/274/351/205/215/346/226/271/INDEX.md +89 -0
- package/skills/biuart/references//351/243/216/346/240/274/351/205/215/346/226/271/_/350/275/254/345/234/272_/350/277/201/347/247/273/346/265/213/350/257/225.md +53 -0
- package/skills/biuart/references//351/243/216/346/240/274/351/205/215/346/226/271/_/351/207/215/345/201/232/350/277/233/345/272/246.md +37 -0
- package/skills/biuart/references//351/243/216/346/240/274/351/205/215/346/226/271/_/351/237/263/350/275/250_/350/211/272/346/234/257/345/217/262/351/200/237/351/200/232.md +135 -0
- package/studio/app.js +380 -0
- package/studio/assert-panel-permit.mjs +67 -0
- package/studio/composer.css +465 -0
- package/studio/composer.js +480 -0
- package/studio/index.html +97 -0
- package/studio/optimize-prompt.mjs +84 -0
- package/studio/optimize-prompt.test.mjs +47 -0
- package/studio/recipes.mjs +87 -0
- package/studio/select-menu.js +450 -0
- package/studio/styles.css +71 -0
- package/studio/to-english-prompt.mjs +149 -0
- package/studio/to-english-prompt.test.mjs +72 -0
- package/README.md +0 -3
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
# 07 · 正面经验:哪些做法被证明有效
|
|
2
|
+
|
|
3
|
+
这里记录实践中可复用的做法、证据及适用条件。
|
|
4
|
+
|
|
5
|
+
这一页只记**做对了的事**:做法、证据(量到什么/谁在什么情况下复用成功了)、为什么有效、什么时候用。坑在各 reference 的「踩过的坑」里。每条带来源,后来者复用成功就在证据里加一笔,复用失败就写清边界。
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## 一、导演与机制
|
|
10
|
+
|
|
11
|
+
**1. 转场 = 下一个风格的签名语言。**
|
|
12
|
+
- 证据:艺术史速通 15 个转场全部这样设计;迁移测试 A、B 两个独立 agent 都把它评为「整份 skill 里最值钱、可迁移性最强的一句」,9 个新转场(金箔螺旋铺开、呐喊色带下压、飞天飘带剥落旧画、波点长出、融化液滴、硬边阳光、湿纸晕开、VHS 撕裂……)几乎是从这句话直接推出来的,没走弯路。
|
|
13
|
+
- 为什么:转场同时完成两件事——告别旧风格、预告新风格。观众在 0.3 秒里就知道「下一个是谁」。
|
|
14
|
+
- 怎么用:列新风格最有辨识度的形式元素(材料、笔法、母题、媒介故障),选一个能「从无到满」的,做成从画内某个物体(猫、杯、头)长出来的过程。
|
|
15
|
+
|
|
16
|
+
**2. 速通/穿越类片子:一副骨架、一套编舞、N 种画法 = 「同一对角色在穿越」免费得到。**
|
|
17
|
+
- 证据:RIG.girl/RIG.cat 返回 Path2D+锚点,36 种风格全部复用;A、B 都说「换风格时人和猫都站在原位,站位和动作自动一致,这个效果是免费得到的」。
|
|
18
|
+
- 怎么用:只用于「同一场景换风格」的速通、穿越类片子:先定角色骨架和动作曲线,再写风格,风格只改「怎么画」,不改「在哪、怎么动」。其余题材按题材构图,风格本身也可以决定构图,不要沿用这副骨架的站位。
|
|
19
|
+
|
|
20
|
+
**3. 主角的动作要跨段连续,按全片时间走。**
|
|
21
|
+
- 证据:迁移测试 A 第一版每段按局部时间重喝一次,审片原话「观众看到的是她举杯五次,而不是同一个瞬间换了五种画风」;改成全片时间(`PAINT.cupCycle(t)`)后转场两侧姿势一致,「两个头」的穿帮也消失。
|
|
22
|
+
- 怎么用:速通/穿越类片子,角色动作一律用全片时间 t;只有「某段专属的表演」用局部 lt。
|
|
23
|
+
|
|
24
|
+
**4. 节拍网格+拍点冲击作用在新旧两层。**
|
|
25
|
+
- 证据:v1 只冲新层,审片量到 15 个转场里前 6 个拖拍 0.1–0.17s;改成两层同时冲后,15 个转场首个画面变化全部落在拍点上(±2 帧),拍点帧差 7–33。
|
|
26
|
+
- 怎么用:任何卡点剪辑,拍点那一帧必须有整屏可见的变化。
|
|
27
|
+
|
|
28
|
+
**5. 开场让第一幅画「自己画出来」。**
|
|
29
|
+
- 证据:迁移测试 A 的水墨段前 0.45 秒笔触按 reveal 写出、墨晕洇开,审片认可,第 0 帧不再是白纸。
|
|
30
|
+
- 怎么用:片子第一段没有转场可借时,用该风格的「作画过程」开场(笔触写出、版画套色一版版落、像素一行行点亮)。
|
|
31
|
+
|
|
32
|
+
## 二、画面美感
|
|
33
|
+
|
|
34
|
+
**6. 区域色板比颜色抖动重要。**
|
|
35
|
+
- 证据:梵高第一版只做颜色抖动,是「同一个蓝的噪点」;每个区域给 7–8 色的色组(`P.swatch`)后才出梵高。A 的蒙克(天空/峡湾/山/墙/地各一组)直接照搬成功。
|
|
36
|
+
- 怎么用:任何笔触/色点类风格,先按区域定色组,每一笔从组里抽色,再混 30–45% 底稿色保留明暗。
|
|
37
|
+
|
|
38
|
+
**7. 大面积交给渲染器,小物件与角色单独一层,最后补线。**
|
|
39
|
+
- 证据:向日葵、桌腿被大笔触打碎成一团,拆层后清楚;B 的霍珀「双版本光影裁切」是这条的推广。
|
|
40
|
+
- 边界:水墨、版画、图案类管线顺序不同(纸是底、墨只往上加;图案本身就是渲染器),见 04 号。
|
|
41
|
+
|
|
42
|
+
**8. 角色也要过同一个渲染器,否则像贴上去的剪贴画。**
|
|
43
|
+
- 证据:36 种风格里,角色也走了渲染器的(梵高细笔触、马赛克石块、8-bit 像素、立体切面、黑绘剪影、皮影镂空)最融;只用矢量骨架平涂的(水墨人物 6/10、吉卜力人物「像扁平矢量」、达利「偏矢量插画」)是各段最弱处。
|
|
44
|
+
- 怎么用:角色平涂之后,至少做一样「该风格的材料处理」——笔触、颗粒、纸纹 multiply、墨晕边、网点、色版错位。
|
|
45
|
+
|
|
46
|
+
**9. 风格里的字用路径画,比用字体更有风格。**
|
|
47
|
+
- 证据:B 的西里尔方块字(5×7 模块)、霓虹灯管假名;罗马的马赛克字(等宽粗笔画,每笔 ≥2 颗石头宽)。字体子集缺字会静默回退到系统字体,换台机器就变样。
|
|
48
|
+
- 怎么用:标题、招牌、题签优先用路径画成该风格的材料;必须用字体时先验证字形在。
|
|
49
|
+
|
|
50
|
+
**10. 材料的物理过程就是渲染器。**
|
|
51
|
+
- 证据:浮世绘「填色相对墨线错位 (3,2)px+暈し横刷痕」=套色木版;马赛克「布局一次算、颜色每帧流过石块」=真马赛克的动画方式;金箔「横向拉丝噪声 y 频率是 x 的 20 倍」一次就出金属感,被 A 的克里姆特直接复用。
|
|
52
|
+
- 怎么用:写新渲染器前先问「这种画在现实里是怎么做出来的」,把那个过程写成代码。
|
|
53
|
+
|
|
54
|
+
**11. 小东西要做得比直觉大。**
|
|
55
|
+
- 证据:浮世绘浪爪 22–50px 读不出,44–74px 才是神奈川冲浪里;A 把齐白石虾放大 1.45 倍、飞天 1.35 倍才读得出。
|
|
56
|
+
|
|
57
|
+
## 三、运动
|
|
58
|
+
|
|
59
|
+
**12. 艺术风格画面:每幕 = 主动作 + 2–4 个取自该风格母题的小循环。**
|
|
60
|
+
- 证据:单纯切图无法表现画内运动;按这条做的 16 段,qa 运动面积 1.6–14%,全部无跳变。
|
|
61
|
+
- 边界:这条管艺术风格画面(画要一直活)。解说类镜头按第 29 条,动在事件上。
|
|
62
|
+
- 怎么用:母题动作清单从拆解的运动热图来;没有参考片就自己列该风格最有辨识度的 3 个形式元素,每个配一个能动的方式。
|
|
63
|
+
|
|
64
|
+
**13. 让方向场随时间连续变化,而不是按 8fps 换种子重洗。**
|
|
65
|
+
- 证据:整屏 8fps 重洗的帧差 18–20(比转场还大),审片读成「画在闪」;改成笔触位置固定、方向场连续摇曳后,跳变 0、运动面积 9%。沸腾只留给线稿。
|
|
66
|
+
|
|
67
|
+
**14. 滚动纹样的取模周期等于图案真实周期。**
|
|
68
|
+
- 证据:A 的波点裙按间距取模,回绕那一帧整片跳(帧差 2.7 倍),按六角网格两行周期取模后消失。
|
|
69
|
+
|
|
70
|
+
## 四、稳定与效率
|
|
71
|
+
|
|
72
|
+
**15. 规范+标杆实现+分组并行 agent,一次通过。**
|
|
73
|
+
- 证据:16 个时代 4 组并行,每组 30–35 分钟,全部一次交付可用;之后 4 组迁移测试(20 种新风格)同样一次交付。规范写清接口、可用库、硬要求、自检、交付 notes;标杆实现让「五层结构」可以照抄。
|
|
74
|
+
|
|
75
|
+
**16. 交付前必派独立审片 agent,只看成片。**
|
|
76
|
+
- 证据:复刻 v1 审片抓到拖拍、整屏闪、偏静、跳戏猫 4 类问题;迁移 A 审片抓到「举杯五次」「两个头」「透明手臂」;B 审片抓到「ЧАЙ 读成 ЧАИ」「粉衣像没穿衣服」——制作者自己看了 3 轮都没发现。
|
|
77
|
+
|
|
78
|
+
**17. 用数字验收:qa.py。**
|
|
79
|
+
- 证据:运动面积、静止帧对、跳变、真实耗时(强制 GPU flush)、确定性,一次 40 秒验完 16 段。只看首尾差会漏卡顿(A:克里姆特 33% 变化但 14/48 帧对静止);只量 JS 时间会报出假的 1ms(B)。
|
|
80
|
+
|
|
81
|
+
**18. 一切随机用种子,同一时刻渲两次逐像素一致。**
|
|
82
|
+
- 证据:36 种风格全部通过冷/热渲比对;渲染不闪、可以分段重渲再拼。
|
|
83
|
+
|
|
84
|
+
**19. 静态部分全缓存,每帧只画会动的。**
|
|
85
|
+
- 证据:包豪斯 2.5ms、波普 5ms、8-bit 3ms;B 5 段里 4 段底版整张缓存。最重的梵高(全幅三遍笔触)117ms,整片 60fps 仍在 2 分钟内渲完。
|
|
86
|
+
|
|
87
|
+
## 五、拆解与参考
|
|
88
|
+
|
|
89
|
+
**20. 参考帧当生图参考图锁构图;AI 设定稿叠网格读关键点。**
|
|
90
|
+
- 证据:gpt-image 用原片帧当参考,与原片 50% 叠加几乎逐像素重合;少女骨架第一版手写坐标像男孩,叠 20px 网格读点后一轮就读得出 17 岁金发少女。
|
|
91
|
+
|
|
92
|
+
**21. 运动热图在开工前就告诉你「画是活的」。**
|
|
93
|
+
- 证据:没看热图之前我以为每段是一张画;热图显示每段 2.5–34% 面积在动,直接决定了整条路线。
|
|
94
|
+
|
|
95
|
+
**22. 网格拟合用「80% 内点下的最大步长」。**
|
|
96
|
+
- 证据:最小残差法会挑一个很小的步长硬凑所有点;改后从 16 个检测点里拟出 14.1 帧(128 BPM 八分),3 个误检点被标成离群。
|
|
97
|
+
|
|
98
|
+
## 六、规模化(2026-10-04 晚,36 种风格整合)
|
|
99
|
+
|
|
100
|
+
**23. 先让独立 agent 各自造轮子,再统一收库。**
|
|
101
|
+
- 证据:4 组迁移测试各自写了笔刷/渲染器/后期,整合时归并成 brush.js(7 个)、render.js(14 个)、post.js(6 个);20 段移植到统一库后,16 段在角色框外与原工程逐像素一致——库的 API 足够承载真实用法。
|
|
102
|
+
- 为什么:先统一库会设计出没人用的抽象;让真实风格先长出来,重复出现两次以上的才进库(「三行重复好过过早抽象」的反面也成立:重复三次就该收)。
|
|
103
|
+
|
|
104
|
+
**24. 迁移测试本身就是最好的需求文档。**
|
|
105
|
+
- 证据:「只读 skill、做 skill 没有的风格、写反馈」的任务书让 4 个 agent 一共交回 60 多条具体问题(静默降级、片长写死、计时不 flush、骨架 bug、dabs 标错),每条都带复现场景;这些在作者自己用时一条都没暴露。
|
|
106
|
+
- 怎么用:skill 每加一块大能力,派 2 个只读 skill 的 agent 做没见过的题目,要求交回「帮上了什么 / 哪里卡住」。
|
|
107
|
+
|
|
108
|
+
**25. 验收工具也要被验收。**
|
|
109
|
+
- 证据:qa.py 曾经全绿,但整合时发现它根本不执行转场代码,一个转场引用了不存在的函数、整帧崩溃也没报;加「转场冒烟」后才抓到。字形检查用 measureText 对比在 Mac 上漏报,改读字体文件字符表。
|
|
110
|
+
- 怎么用:每个检查项故意制造一次失败(删一个场景、写错一个转场、用一个缺字),确认它真的会红。
|
|
111
|
+
|
|
112
|
+
## 七、视频动画语法(2026-10-04 晚,YouTube 5 种+科技财经 3 种)
|
|
113
|
+
|
|
114
|
+
**26. 先实测样片再定语法。**
|
|
115
|
+
- 证据:G1 第一版 Vox 用了撕纸转场,回头逐帧数 5 支 Vox 样片一次都没出现;白板第一版推进思考泡泡,RSA 样片里也没有。G2 实测 TheOdd1sOut 一支:平均镜头 2.4 秒、七成相邻帧完全不动——和「动画就该一直动」的直觉相反。
|
|
116
|
+
- 怎么用:做一种语法前,拿 2–5 支代表作跑 `breakdown.py` 量镜头时长、静止比例、转场种类,再写卡片。印象里的「风格特征」常常是别人的。
|
|
117
|
+
|
|
118
|
+
**27. 相机只由全片时间决定,转场函数只负责合成两镜。**
|
|
119
|
+
- 证据:Kurzgesagt 缩放 60 倍的尺度穿行全程矢量重画、不糊;Vox 桌面与白板的「转场」就是相机运动本身,qa 跳变 0。G3:推镜转场让旧镜头自己继续推相机,而不是把截图放大——要穿过一个圆形物体时放大倍数 ≥ 1100/半径,否则最后一帧会跳。
|
|
120
|
+
- 怎么用:世界画布+视口;不要对渲染好的位图做缩放转场。
|
|
121
|
+
|
|
122
|
+
**28. 「揭开」那一帧才是重音。**
|
|
123
|
+
- 证据:G2 动态文字把段起点设为「小节线 − 揭开点 × 转场时长」,所有视觉事件都和底鼓同帧。和第 4 条(拍点冲击两层)是同一个原理的两种情况。
|
|
124
|
+
|
|
125
|
+
**29. 静止不等于卡;但「每镜都动一下」和「每镜都慢推」是同一个病。**
|
|
126
|
+
- 证据:storytime 七成帧不动是风格(笑点在「切到反应特写并闭嘴」那一下);kinetic 字落定后不再动、动感交给镜头和背景。一支诺奖文学科普片(2026-10-08)同一份口播、同一批素材、同一张 31 镜分镜表:r2 每镜匀速推近 7.5%,还有固定米底、标题栏、相框,作者说「完全是放ppt的感觉,太烂了」;r3 换成真人录像满幅、深色真实环境、去掉页框,镜头改成停住 → 0.28 秒推近 18–32% → 停住、0.30 秒同倍率横移、0.17 秒砸入,被认可。完全静止的帧从 16% 升到 72%,快速运动的帧从 0.7% 升到 10%。四样一起换,分不清哪一样起了作用。之后把「每个口播节点都快推」写成了全局规则,2026-10-12 一支诺奖经济学短片 102 秒推近约 48 次、全部往里推,作者说「次数太多,而且节奏太快了,一点都不smooth」;作者同一天回看文学片:「文学片很一般」。
|
|
127
|
+
- 怎么用:qa 的「静止帧对 >40% 读作卡」对解说、故事、文字类不适用,停住是对的。像 PPT 的根子是「每镜同一个动作」,不管这个动作是慢推还是快推。镜头按「观众这一刻该看哪」来动:过渡用缓推、横移、拉远(0.6–1.5 秒),快推和砸入留给重音;推进去之后要有来有回。动作表和什么时候管次数见 `镜头语言.md`。
|
|
128
|
+
|
|
129
|
+
**30. 审片要查逻辑和数字口径,不只查画面。**
|
|
130
|
+
- 证据:G3 审片抓到「输出神经元连的是隐藏层不是像素」「『涨了 9 倍』应为『涨到原来的 9 倍』」「月线终点 ¥268 和日 K 终点 ¥286.40 对不上」——三条都是画面完美、内容错。财经图表的硬规矩:坐标轴不截断误导(截断要明写「纵轴未从 0 开始」)、单位、来源、示意数据角标。
|
|
131
|
+
|
|
132
|
+
**31. 一屏一个焦点;先结构、后数据、再只标一件事。**
|
|
133
|
+
- 证据:kinetic「主词砸进来,其余从遮罩升起」;finance「先出坐标轴、再出数据、最后只标一件事」;3b1b「一个颜色代表一个概念,形变让上一个概念直接变成下一个,几乎不切镜头」——三种语法独立得出同一结论。
|
|
134
|
+
|
|
135
|
+
## 八、角色
|
|
136
|
+
|
|
137
|
+
**32. 人交给生图模型,代码只做合成——分工按「谁擅长」划,不按「路线纯不纯」。**
|
|
138
|
+
- 证据:同一帧三方向对比,代码画的 Q 版被判「烂爆了」,G2 帧库和按画风重画的 AI 帧都「效果很好」;36 种风格里最普遍的短板也是角色。代码擅长的是规则性(笔触场、几何、运镜、时间、物理、确定性),模型擅长的是人脸与人形的「对」。
|
|
139
|
+
- 怎么用:见 10 号。先问每一层「谁画得最好」,再决定用什么画。
|
|
140
|
+
|
|
141
|
+
## 九、接进口播管线(2026-10-04 夜,端到端实测)
|
|
142
|
+
|
|
143
|
+
**33. 片段按成片帧数渲,窗口从成片时间轴取——跨剪口、跨倍速都不用管。**
|
|
144
|
+
- 证据:要换的两条 beat 之间夹着一段被粗剪剪掉的 3.65 秒停顿,粗剪还整体加了速;把它们当一段连续的成片时间(119 帧)渲出来换进去,编译后该镜 `rate` = 1.0,渲出 119 帧 = 镜头 119 帧,只重渲 1 章(30–57 秒),其余 7 章不动。章节逐帧对片段,画面在动的帧 28/29、127/137 投出偏移 0(其余是编码噪声,正负对称)。
|
|
145
|
+
- 为什么:管线的导演层用原片秒、成片用成片秒,动画只活在成片里。从成片时间轴取窗口,就绕开了倍速、剪口、「beat 终点=下一条起点」三处换算。
|
|
146
|
+
- 怎么用:口播管线里写一个小脚本包住「draft(从成片时间轴取窗口、出 spec 草稿)→ render → verify(逐帧核同步)」三步,见 09 号「片段契约」。
|
|
147
|
+
|
|
148
|
+
**34. cue 写「哪个词」,不写「第几秒」,渲染前再换成帧。**
|
|
149
|
+
- 证据:5 个 cue(柱子长出、标注弹出、剪报露出、两次荧光笔)露出帧与词起点的误差 −0.48 ~ +0.09 帧,全部来自按帧取整;口播改了、窗口帧数变了,render 直接拒收而不是悄悄错位。
|
|
150
|
+
- 为什么:秒数是从词表抄的二手数,抄一次错一次;词是导演真正的意图(某个数字念到时标注弹出),换算交给脚本。
|
|
151
|
+
- 怎么用:`{"word": "7.8", "kind": "highlight"}`;同词多次加 `nth`,要提前写 `offset`。
|
|
152
|
+
|
|
153
|
+
**35. 竖屏贴真实截图:按口播念到的半句拆成两次荧光笔,每次对一个关键词。**
|
|
154
|
+
- 证据:整段框(宽 0.93)时红圈放不下,镜头推不进去,正文字高约 20px,手机上读不出;按口播拆成两个半句的框、各对一个关键词,推近 2.4 倍,字高约 50px;第二个框在画外时镜头先移过去再揭开。
|
|
155
|
+
- 为什么:竖屏的瓶颈是画宽,一个焦点只能是半句话;Vox 本来就是「看这一句」的语法,跟着口播一句句圈正好。
|
|
156
|
+
- 怎么用:截图用原样帧裁切(存一份 `_来源帧`),rect 先 `--stills` 渲一张核,目测常偏 20–30%。
|
|
157
|
+
|
|
158
|
+
**36. 带字的语法让开字幕带,而不是让字幕让开动画。**
|
|
159
|
+
- 证据:t3 竖屏原排版的标注正落在 y≈1460,和烧录字幕(1400–1520)重叠;加 `safe` 后图表排在 300–1430,和片里其它 contain 素材同一块安全区,抽帧零遮挡。第一轮独立审片说「满屏纯白夹在深色截图之间,亮度跳得最明显」,再加 `safe.fill`=片子底色,上下两条变成和相邻截图一样的深色底,图表成了同位置的一张卡。
|
|
160
|
+
- 为什么:字幕是导出时统一烧的,按段挪字幕要动导出链;动画是参数化的,挪自己最便宜。
|
|
161
|
+
- 怎么用:spec 写 `safe`(管线的 draft 会从 ASS 和 contain_box 算好)。
|
|
162
|
+
|
|
163
|
+
## 九、从示范片到可复用片段
|
|
164
|
+
|
|
165
|
+
**33. 示范片做得好 ≠ 参数化之后还好;参数化要单独审。**
|
|
166
|
+
- 证据:8 种语法的示范片都过了独立审片,抽成 spec 驱动的片段后再审,只有 3 种能直接用:真实数据一换就暴露刻度取整错、类目标签被抽掉、大数字压线头;字幕让位参数 6/8 被忽略;文字卡没打完相机就走;白板末帧笔盖住「不」字把意思读反。示范片的输入是作者挑过的,片段的输入是管线给的。
|
|
167
|
+
- 怎么用:参数化片段的审片要换输入——负数、小数、长标题、竖屏、无截图、透明背景、文字超长——每种至少喂一份「不友好」的 spec;验收用的样例素材本身也要干净(不能拿目录页截图当示例)。
|
|
168
|
+
|
|
169
|
+
## 十、接进口播视频
|
|
170
|
+
|
|
171
|
+
**34. 动画段按「成片时长+词级时间」渲,关键帧落在关键词上。**
|
|
172
|
+
- 证据:一支竖屏口播片的副本里,一章中两段换成动画(t3 财经图表讲一组数字对比、y2 Vox 推官方原文截图),帧数与镜头严丝合缝,7 个关键词误差 −0.48~+0.09 帧。
|
|
173
|
+
- 为什么:动画只在录屏讲不清的地方出现(一个数字对比、一句官方原话),前后仍是真人和录屏;画面事件跟着他说到那个词才揭开,像是他在指着讲。
|
|
174
|
+
- 怎么用:给 beat → 取成片时长与词级时间 → 生成 spec → 渲染 → 冻结回填(接口见 09 号「片段契约」)。数字只来自出处表,来源写在图上。
|
|
175
|
+
|
|
176
|
+
**35. 不要替他加没要的叙事梗。**
|
|
177
|
+
- 经验:角色身上持续累加装饰会抢走场景的注意力,叙事梗应先在样片中确认。
|
|
178
|
+
- 怎么用:审片指出的「缺什么」是给他判断的信息,不是我直接加东西的授权;要加结构性的梗,先在样片或方向说明里给他看、等他点头。
|
|
179
|
+
|
|
180
|
+
## 2026-10-05 00:34:23 +0800 · 同一口播按解释任务分配语法
|
|
181
|
+
|
|
182
|
+
做法:真实原帖/样稿用Vox资料桌面追线和高亮,规则/控制变量/声画关系用3b1b连续对象变换;固定声音、字幕与时间轴后再替换画面。证据:一支口播片的 467.8 秒旁白和 270 条字幕在整套画风重构后复用,最终两版MP4的AAC原始包哈希与锁定混音一致;尚无发布后留存数据。为什么:画面承担对应段落的解释动作,材质服务可读性;语法允许读图或推导后的静止,不用背景装饰微动凑运动量。适用:真实材料与机制解释交替的口播片。
|
|
183
|
+
|
|
184
|
+
## 十一、长卷穿越片(花叔穿越名画,2026-10-05)
|
|
185
|
+
|
|
186
|
+
**36. 一个骨架文件+按段并行,24 个世界 4 组 agent 一次拼上。**
|
|
187
|
+
- 证据(骨架和其中 3 段收进了 `scripts/engine/demos/long_scroll/`,做法见 11 号):`lib/world.js` 只定义段接口(宽、地面线、走路帧、互动 at/dur/frame、back/front/seam)、主角行进、按边界裁开的主角、角标;四组各写 6 段,按年代排序后一次拼成 123.7 秒、qa 确定性 ✓、跳变 0;审片核对 23 条边界的地面高度与主角连续性全部通过。关键是全片统一常量(地面线 760、身高 300、步速)写死在骨架里。
|
|
188
|
+
- 怎么用:长片先写骨架和接口,再派组;接口里**所有事件相对「互动开始」定时**(`WORLD.actT`、`item.atAct`),不写「进段后第几秒」——全片步速后来从 330 提到 560,没有一段需要改时间。
|
|
189
|
+
|
|
190
|
+
**37. 每段速度微调让音乐边界落在小节第一拍。**
|
|
191
|
+
- 证据:24 条边界时刻固定,单一 BPM 最好也差 112ms;每段放整数拍、速度在 86–104 BPM 之间逐段微调后,24 条边界全落小节第一拍,最大误差 11.7ms、平均 3ms。
|
|
192
|
+
- 怎么用:画面先定、音乐后配时,不强求统一 BPM;人耳听不出 ±8% 的逐段速度差,但听得出换乐器没踩在重拍上。
|
|
193
|
+
|
|
194
|
+
**38. 镜头只进不退。**
|
|
195
|
+
- 证据:v1 互动时镜头往前让出空间、结尾收回,17/24 段出现 68–256px 的「倒带」,qa 测不到、审片一眼看出。改成「目标位置取历史最大值+高斯平滑」后全片 0 次后退,停与起都不顿。
|
|
196
|
+
- 怎么用:跟拍主角的横向长卷,相机位置函数做单调化;qa 加一条「相机后退次数」更好。
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
# 08 · 风格作者规范(通用版,给写 scene 的人和派出去的 agent)
|
|
2
|
+
|
|
3
|
+
> 替代早期绑死在复刻项目上的 `时代作者规范.md`。派 agent 画风格时,把本页路径给它,再加上「本项目」那一节的具体信息。
|
|
4
|
+
|
|
5
|
+
## 接口
|
|
6
|
+
|
|
7
|
+
一个风格段 = `scenes/<id>.js`:
|
|
8
|
+
|
|
9
|
+
```js
|
|
10
|
+
SCENES['<id>'] = { draw(c, lt, t) { /* 画满 1920×1080 */ }, init(IMG) { /* 可选:一次性预计算 */ } };
|
|
11
|
+
```
|
|
12
|
+
|
|
13
|
+
- `c` 目标 2D context;`lt` 本段局部时间(秒,从该段转场开始算);`t` 全片时间。
|
|
14
|
+
- 段落表 `eras.js`:`{ id, eighths 或 dur, transition: { type, dur }, counter: {...} }`。片长由段落表自动算。
|
|
15
|
+
- 转场 `transitions.js`:`TRANSITIONS.<name> = (c, A旧, B新, p, o) => {}`。
|
|
16
|
+
- 场景缺文件、语法错、没注册 → 引擎拒绝启动,render/qa 直接报错。不要靠「看起来渲出来了」判断成功。
|
|
17
|
+
|
|
18
|
+
## 先读(按顺序)
|
|
19
|
+
|
|
20
|
+
1. `references/02-机制.md`(五层机制,速通/穿越类片子才用)、`04-纯代码绘制.md`(管线、渲染器速查、坑)、`07-正面经验.md`。
|
|
21
|
+
2. `references/风格配方/INDEX.md`:找最接近的风格当起点,读那张卡。
|
|
22
|
+
3. 标杆实现 `scripts/engine/scenes/09_postimp.js`;最接近风格的 scene 源码。
|
|
23
|
+
4. `lib/`:`paint.js`(噪声/纹理/渲染器/色板/编舞)、`rig.js`(角色骨架、visibleLines)、`kit.js` 等工具库。**先找库里有没有,再自己写。**
|
|
24
|
+
|
|
25
|
+
## 两种起点
|
|
26
|
+
|
|
27
|
+
**有参考片**:先跑 `scripts/analyze/breakdown.py` 拿到参考帧(`ref/segNN.png`)、运动热图、转场接触表,按 01 号拆。参考帧决定构图、母题、配色,热图决定「画里什么在动」。
|
|
28
|
+
|
|
29
|
+
**没有参考片**(更常见):
|
|
30
|
+
先读[跨场景风格提炼](15-跨场景风格提炼.md)。新卡为研究状态时,作品归纳、制作假设与实做证据分开;按新题材重建场景,人物/道具/布局不从名作继承。
|
|
31
|
+
1. 写下该风格最有辨识度的 3–5 个形式元素(材料、笔法、配色、母题、媒介痕迹)。查一手资料(原作图像、美术史描述),首次建卡并看多幅不同作品,记录稳定特征和例外,不凭单幅名作概括全部作品。
|
|
32
|
+
2. 给每个元素配一个「能动的方式」——它在那幅画的世界里本来会怎么动(水会颤、纸会飘、金会闪、版会错位、胶片会抖)。
|
|
33
|
+
3. 想清楚这种画在现实里是怎么做出来的(刷、刻、印、贴、镶、喷、渲),把那个物理过程写成渲染器。
|
|
34
|
+
4. 先出一帧:静帧拼图对照原作看,一眼认得出再让它动。
|
|
35
|
+
|
|
36
|
+
## 硬要求
|
|
37
|
+
|
|
38
|
+
1. **构图**:速通/穿越类片子按本项目给定的构图坐标摆(各段一致,转场和「同一角色在穿越」都依赖它)。其余题材按题材构图:风格决定怎么构图、怎么用光,不沿用示范房间的坐标。
|
|
39
|
+
2. **角色**:速通/穿越类片子用 `RIG` 骨架与共享编舞,换画法不换站位动作;其余题材按题材设计角色和站位(人用 AI 生帧,见 10 号)。**角色也要过该风格的材料处理**(笔触、颗粒、纸纹 multiply、墨晕边、网点、色版错位……),否则像贴上去的剪贴画——这是 36 种风格里最普遍的短板。需要线稿时用 `drawGirl/drawCat` 的 `mode:'line'`(内部已走 visibleLines,不会画穿)。
|
|
40
|
+
3. **画要活**:主动作+2–4 个母题小循环,在停留窗口里看得出。速通/穿越片里角色动作用全片时间(`PAINT.cupCycle(t)` 这类),换段不重置。
|
|
41
|
+
4. **流畅**:不要整屏按低帧率换种子重洗(会读成闪);沸腾只给线稿或母题区域。有意的「步进帧率」(橡皮管 12fps、皮影 10fps)用 `stepTime`,那是风格不是卡顿。滚动纹样的取模周期等于图案真实周期。
|
|
42
|
+
5. **确定性**:所有随机用种子;同一个 t 两次渲染逐像素一致。
|
|
43
|
+
6. **性能**:静态部分 `PAINT.cached`;读像素的离屏用 `willReadFrequently`、每帧 `g.reset()`;目标每帧 ≤150ms(qa 量的是带 GPU flush 的真实时间)。
|
|
44
|
+
7. **字**:风格里的字优先用路径画成该风格的材料;用字体时先 `U.assertGlyphs` 验证字形存在(缺字会静默回退系统字体)。
|
|
45
|
+
8. **做旧不上身**:剥落、污渍、划痕只在背景;角色区域设保护区(敦煌剥落斑落在背上读成「衣服破洞」)。
|
|
46
|
+
|
|
47
|
+
## 自检与交付
|
|
48
|
+
|
|
49
|
+
```sh
|
|
50
|
+
uv run --with playwright python <工程>/render.py --solo <id> --stills 0.4,0.6,0.8,1.0 --out <渲染>/<id> # 静帧
|
|
51
|
+
uv run <skill>/scripts/qa.py --project <工程> --ids <id> # 数字
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
每段至少 3 轮:静帧对照原作/参考拼图看 → qa 看运动/静止帧对/跳变/耗时/确定性 → 改。四问:①一眼认得出是哪个风格?②角色对、和背景融吗?③停留窗口里看得出画在动、而且不闪不卡?④有没有穿帮(遮挡、断线、错位、空白、叠字)?
|
|
55
|
+
|
|
56
|
+
交付:`scenes/<id>.js`+配方卡(照 `风格配方/` 格式:管线、关键参数与色值、母题动画怎么做、签名转场、性能、坑、仍可改进),实测才写参数、性能和质量结论;未做的部分留为研究状态。只验证一个场景,不能宣称已跨场景验证。**多段的片子交付前派一个没参与制作的 agent 只看成片审片。**
|
|
57
|
+
|
|
58
|
+
## 三方向硬门在无人值守时
|
|
59
|
+
|
|
60
|
+
有花叔在场:新风格方向、角色诠释先在同一帧出三个给他挑。
|
|
61
|
+
没人可问(自动测试、夜间批量):执行任务书写明的方向,同时在交付说明里列出「本可以给的另外两个方向」各一句,等他回来再挑。
|