A/好有创意的递归动画

Cora Tracy 2026-06-06 12:07 1



在官网看到的这段动画,好有意思

链接

最新回复 (16)
  • calibur 06-06 12:08
    1

    看了一下,居然不是无限循环的,好像一共三遍就没了

  • biuaxia 06-06 12:08
    2

    看了下,确实挺有趣的。看下能不能搞出来当wallpaper的动态壁纸^-^

  • 灰質心 06-06 12:11
    3

    我觉得A\虽然\但是审美一直挺在线的x

  • Cora Tracy 楼主 06-06 12:15
    4

    有道理哎!我现在还在用三体那个动画的,我觉得那个也有意思

  • Lziu 06-06 13:07
    5



    好想法,我已经用上了

  • FLF 06-06 13:30
    6

    实测可以用Save All Resources下载网页源码 让ai复刻

  • renjikun 06-06 14:40
    7

    (帖子已被作者删除)

  • huanhua 06-06 15:34
    8

    为什么我下载的它是没有动画的 这个是需要怎么做吗

  • FLF 06-06 17:54
    9

    你是怎么下载的? 用安装Save All Resources插件下载代码然后再让ai复刻就行了

  • Skyjee 06-06 18:08
    10

    我研究一下,看看能不能做一个提示词让任何图都可以复刻

  • 欣欣|林可欣 06-06 18:11
    11



    循环三遍之后就停了,最终是这样的


    最近我也是沉迷复刻了,复刻各种东西,这个好像有点难()

    有机会让克劳德试试()

  • Skyjee 06-06 19:33
    12



    我成了

  • Skyjee 06-06 20:15
    13

    recursive-self-improvement-animation.7z (7.0 KB)

    移除了多余UI,然后改成了无限无缝循环,来自codex神力

  • 雪峰 06-06 22:44
    14

    分享一下我保存该动画的思路




    • 既然是 canvas 动画,那么他就是一帧一帧绘制的,只要把每一帧都保存下来,然后本地再合成动画就好;为了保证动画的流畅性,我们可以逐帧保存,当然你如果对流畅性没有太高要求,也可以每 10 帧、每 100 帧甚至每 1000 帧保存一次,这个取决于你自己;




    • 本地拿到所有帧动画后,不管是动图还是视频,可操作的空间很大;已经有很多成熟的合成gif、apng 动图甚至合成视频的方案,这里就不一一赘述了,但是还得提一句完全可以使用 ffmpeg 来实现;




    保存动画帧阶段


    下面的我的古法代码,纯手敲质量不高但是能跑,直接粘贴到浏览器控制台执行就行;需要注意的是,使用 showDirectoryPicker 来获取本地目录读写权限,你需要选择一个目录来保存动画的每一帧图片;然后等到动画结束后,自己手动在控制台输入 stop() 来停止继续录制保存动画帧;其中 .SparkCellularHero-module-scss-module__3bEZ_W__canvas 是该动画 canvas 的类选择器,可能会随着不同版本的发布而变化,你可以在控制台界面找到最新的类选择器替换它;


    const save = async (canvas) => {
    let timer = 0;
    let index = 0;
    const handler = await showDirectoryPicker();
    const saveBlob = (blob, filename) => {
    handler.getFileHandle(filename, { create: true }).then((fileHandle) => {
    fileHandle.createWritable().then((writable) => {
    writable.write(blob).then(() => {
    writable.close();
    });
    });
    });
    };
    const next = () => {
    /**
    * 在这里你可以通过 index 控制保存的频率,比如每 100 帧保存一张
    * if (index % 100 === 0) { canvas.toBlob(...) }
    * 默认是逐帧保存
    */
    canvas.toBlob(
    (blob) => {
    saveBlob(blob, `${index}.png`);
    },
    "image/png",
    1,
    );
    index++;
    };
    const start = () => {
    timer = requestAnimationFrame(() => {
    next();
    start();
    });
    };
    const stop = () => {
    cancelAnimationFrame(timer);
    };
    return { start, stop };
    };

    const { start, stop } = await save(
    document.querySelector(
    ".SparkCellularHero-module-scss-module__3bEZ_W__canvas",
    ),
    );

    start();

    // 当动画播放结束的时候手动调用 stop() 来停止保存帧
    // stop();


    当整个动画执行完,如果你逐帧完全保存到话,保存到本地的图片中帧大概在 3000 至 5000 帧左右,取决于选择文件夹时的手速和执行 stop() 的时机;当然,里面有很多帧其实是重复的,只有特表小的细节不一样,如果你对细节和流畅性要求不高,完全可以删除不需要的帧;下面是我执行后的结果,保存了 3079 帧(序号是从0开始的);



    合成动画阶段


    有很多成熟的桌面端软件、命令行工具开箱即用,或者可以借助 AI 来完成,非常方便,这里就不赘述了;你也可以自己写代码实现,这样控制更加灵活,可以对动画帧进行裁剪、旋转、缩放、添加额外内容等进行二创、帧率控制等;

  • yiming 06-08 00:33
    15

    本帖使用社区开源推广,符合推广要求。我申明并遵循社区要求的以下内容:

    我的帖子已经打上 开源推广 标签: 是
    我的开源项目完整开源,无未开源部分: 是
    我的开源项目已链接认可 LINUX DO 社区: 是
    我帖子内的项目介绍,AI生成、润色内容部分已截图发出: 是
    以上选择我承诺是永久有效的,接受社区和佬友监督: 是

    以下为项目介绍正文内容,AI生成、润色内容已使用截图方式发出

    看到佬友对…


    可以看看我最新的帖子,展示下效果

  • 三角初华 06-08 00:38
    16

    佬科普一下这个其实已经不新颖了,有点类似 细胞自动机,是康威生命游戏最早提出来的这个概念。但是 A/ 的实现还是很漂亮的

* 帖子来源Linux.do
返回