ai21.net
语言

代码生成的像素艺术人生故事短片

演示视频

代码生成的像素艺术人生故事短片 — 1代码生成的像素艺术人生故事短片 — 2

提示词

<inputs>
Ask me for: a voiceover or song with a spoken line (the audio file) and its transcript, 10-12 small objects that sum up my life, two silhouettes to light like a heat camera (a head in profile and a raised hand), and the 3 words I want to land hardest. If I skip any, use the defaults: vinyl, book, camera, cat, coin, game controller, cap, heart, money, plant, clapperboard, skateboard; free CC0 silhouettes from Openverse; action, intention, curiosity.
</inputs>

<direction>
A 20 second 4:3 film, 1440x1080 at 60fps, cut to the voice. Off-white paper, black, one red, one yellow, Geist for every word. Film grain on everything, a soft vignette, and a camera that never rests: a slow handheld float under everything plus a slow push inside every scene.
No scene cuts to the next: each handoff starts on the exact last frame of the scene before. The only hard cuts are the beat flips on the last word.
Every object is pixel art you draw yourself: a 16x16 grid per object, every cell a hand-placed colour, rendered as a 3D block (a darker extrusion down-right, a thin bevel on every cell) with a soft contact shadow.
The silhouettes are lit like a heat camera: the heat comes from how thick the body is at each point, so the nose, the hair and the fingertips run cooler, plus one hotspot and a slow moving noise, mapped through a black > red > orange > cream ramp. The edge stays razor sharp, with a soft glow outside it.
Motion rules: nothing pops in (eased glides of about 0.5s with a soft start), fast moves get real motion blur instead of ghost copies, and captions type with the voice behind a block cursor.
Banned: stock footage, AI video, 3D camera moves, particles, glitch.
</direction>

<structure>
Hang every scene on the transcript's word timings (measure them with faster-whisper word timestamps, one short chunk at a time):
1. The first word fills a yellow card. The card wipes off to the left and the question types underneath on two centred lines that glide to stay centred as they grow, the key word underlined in red as it's spoken.
2. The objects streak past in lanes above and below the words, a cyan four-point flare sweeps in, then the page burns away: black closes in from the edges onto the head, behind a hot red edge.
3. The head heats up on black while the answer types low on the left. A thin white orbit draws itself around the head, its far half passing behind it. On the last word, paper blooms out from inside the head with the objects in it, and the camera falls through: the head rushes past the lens until the paper is all we see.
4. The objects sit on a tilted ring seen in perspective (the front ones bigger and lower, drawn last), slowly turning, each one bobbing; the coin flips and lands with sparks.
5. On each of the 3 words, that object flies out of the ring to the left and grows, the page floods black from it, and the word types beside it (camera: a red shutter star; book: a red ribbon sweep; record: two white orbits and red notes). Then the flood drains back into the object as it flies home, and the camera dives closer into the ring. Put each hero object in the slot that is front-left when its word lands.
6. The ring pulls in a touch, bursts outward, every object turns to ink, and ink blots grow and swallow the page.
7. The hand rises into frame, hot, with the line split either side of it. The heart drops into its palm, then lifts to the centre at the size the next scene holds it.
8. The last word, one letter per beat, the background flipping paper / black / red, the heart holding its place across the cut, the centre object morphing pixel by pixel into the next one.
9. Thin brush strokes sweep through, the letters drift apart and float, then settle back into the word with the heart above it. The camera keeps pushing through the hold.
</structure>

<build>
1. One HTML canvas. Every frame is a pure function of time inside seek(t).
2. Bake each pixel sprite once to an offscreen canvas (the extrusion layers, then the face), then draw it scaled and rotated.
3. The heat: precompute each silhouette's base heat once (a distance transform of the mask, held at the edge value outside it so nothing dark bleeds in when it is upscaled). Every frame, add the hotspot and two octaves of value noise at quarter resolution, map it through a 256-step lookup, upscale it, and cut it with the full-resolution mask.
4. The fall through the head: draw the ring scene into an offscreen layer, mask it with the head scaled up about a point inside the skull, and grow that scale on a cubed curve until the head covers the frame. The ring inside zooms less than the head does, so it reads as depth.
5. The pixel morph: pair every cell of object A with a cell of object B and glide each one's position and colour, with a small random delay per cell.
6. Render with Playwright at 60fps with 8 motion-blur subframes, then lay the original audio back on with ffmpeg.
</build>

<gotchas>
A mask PNG with no alpha channel fills the whole box with heat, so put the silhouette in the alpha. A limb cut by the photo's border shows as a straight edge, so extend the mask past the frame. A handoff only reads as smooth when the last frame of one scene is the first frame of the next: draw the outgoing scene under the transition, and give scenes that show the same ring one shared zoom function. A flood that's still retreating when the next scene starts reads as a hard cut, so let it finish first. A fast ease-out flood reads as a jump; use a soft start.
</gotchas>

<start>
Ask me for the inputs, measure the word timings, then show me 8 stills before you render.
</start>

中文译文

<inputs>
向我索取:一段带口播台词的旁白或歌曲(即音频文件)及其文字稿,10-12 件能概括我这一生的小物件,两个要像热成像摄影机那样打光的剪影(一个侧面头部和一个举起的手),以及我最希望冲击力最强的 3 个词。如果我跳过了其中任何一项,就用默认值:黑胶唱片、书、相机、猫、硬币、游戏手柄、帽子、心、钱、植物、场记板、滑板;来自 Openverse 的免费 CC0 剪影;action、intention、curiosity。
</inputs>

<direction>
一部 20 秒的 4:3 影片,1440x1080,60fps,跟着人声剪辑。米白纸张、黑色、一种红、一种黄,每个词都用 Geist。所有东西都带胶片颗粒、柔和的暗角,以及一个永不停歇的镜头:一切之下都有缓慢的手持漂浮,同时每个场景内部都有缓慢推近。
场景之间不做切换:每一次交接都从上一场确切的最后一帧开始。唯一的硬切是最后一个词上的节拍翻转。
每件物件都是你自己画的像素画:每件物件一个 16x16 网格,每个格子都是手工放置的颜色,渲染为一个 3D 方块(向右下方更深的挤出,每个格子上有一道细倒角),并带柔和的接触阴影。
剪影像热成像摄影机那样打光:热量来自身体在每个点上的厚度,所以鼻子、头发和指尖偏冷,再加上一个热点和缓慢移动的噪波,通过 黑 > 红 > 橙 > 奶油色 的色阶映射。边缘保持刀锋般锐利,外侧带一圈柔和辉光。
运动规则:没有任何东西突然弹出(约 0.5 秒的缓动滑入,带柔和起始),快速运动会获得真正的运动模糊,而不是残影复制,字幕随着人声逐字打出,后面跟一个块状光标。
禁止:素材库视频、AI 视频、3D 镜头运动、粒子、故障效果。
</direction>

<structure>
把每个场景都挂在文字稿的词时间点上(用 faster-whisper 的词级时间戳测量,一次一个短片段):
1. 第一个词填满一张黄色卡片。卡片向左擦除,问题在下方用两行居中文字逐字打出,随着文字增长而滑动以保持居中,关键词在被说出时用红色下划线标出。
2. 物件在文字上方和下方的通道中飞掠而过,一道青色四角闪光扫入,然后页面燃烧殆尽:黑色从边缘向头部收拢,藏在一道灼热的红色边缘之后。
3. 头部在黑色背景上逐渐升温,同时答案在左侧低处逐字打出。一圈细细的白色轨道自行绕着头部画出,它较远的一半从头部后方穿过。在最后一个词上,纸张从头部内部绽放出来,物件就在其中,然后镜头穿过它坠落:头部从镜头旁冲过,直到我们只看得见纸张。
4. 物件坐在一个以透视看到的倾斜圆环上(前面的更大、更低,且最后绘制),缓慢转动,每一件都在上下浮动;硬币翻转后带着火花落下。
5. 在 3 个词中的每一个上,那件物件从圆环中向左飞出并变大,页面从它那里涌满黑色,词在它旁边逐字打出(相机:一颗红色快门星;书:一道红色缎带扫过;唱片:两圈白色轨道与红色音符)。随后涌流退回物件之中,物件飞回原位,而镜头向圆环更近地俯冲。把每个主角物件放在它的词落下时处于左前方的那个槽位里。
6. 圆环稍微收拢,然后向外爆开,每件物件都化作墨,墨点扩大并吞没页面。
7. 手升入画面,滚烫,文字行分列在它的两侧。心落入它的掌心,然后升到中央,尺寸正是下一场戏托住它时的大小。
8. 最后一个词,一拍一个字母,背景在纸色 / 黑色 / 红色之间翻转,心在切点两侧保持原位,中央的物件逐像素地变形为下一件。
9. 细细的笔触扫过,字母散开并漂浮,然后回到词中,心在词的上方。镜头在停顿期间持续推近。
</structure>

<build>
1. 一块 HTML canvas。每一帧都是 seek(t) 内关于时间的纯函数。
2. 把每个像素精灵只烘焙一次到离屏 canvas(先挤出层,再是正面),然后按缩放和旋转绘制它。
3. 热成像:只预计算一次每个剪影的基础热量(对遮罩做距离变换,在遮罩之外保持边缘值,这样放大时不会有暗色渗入)。每一帧,加上热点和两个八度的值噪声(按四分之一分辨率),通过 256 级查找表映射,再放大,然后用全分辨率遮罩裁剪它。
4. 穿过头部的坠落:把圆环场景画入一个离屏图层,用围绕头骨内部某一点放大的头部来遮罩它,并按三次方曲线增长这个缩放,直到头部覆盖画面。里面的圆环放大得比头部少,因此读起来有纵深感。
5. 像素变形:把物件 A 的每个格子与物件 B 的一个格子配对,滑动过渡每个格子的位置与颜色,每个格子带一点随机延迟。
6. 用 Playwright 以 60fps 和 8 个运动模糊子帧渲染,然后用 ffmpeg 把原始音频铺回去。
</build>

<gotchas>
没有 alpha 通道的遮罩 PNG 会让整个框充满热量,所以要把剪影放进 alpha 通道。被照片边缘切断的肢体看上去会是一条直边,所以要把遮罩延伸到画面之外。只有当一场戏的最后一帧就是下一场戏的第一帧时,交接才读起来顺滑:在过渡下面绘制正在离开的场景,并让展示同一个圆环的场景共用一个缩放函数。如果下一场开始时涌流仍在退去,读起来会像硬切,所以先让它退完。快速的 ease-out 涌流读起来像跳变;要使用柔和的起始。
</gotchas>

<start>
向我索取输入,测量词时间点,然后在渲染之前先给我看 8 张静帧。
</start>

溯源

原作者
twoclipping
发布日期
2026-10-07(由推文 ID 反解)
原始出处
查看原帖 ↗
收录来源
yihui-dev/awesome-opus5-5-videos · twoclipping-041659 · MIT
zhuyansen/awesome-opus-5.5-video · 2107822293653041659 · 未声明许可
本条由 2 个来源合并去重得来