ClawdMojis推出适用于各种场合的Clawd
速览
ClawdMojis是一款新型AI表情符号产品,核心是名为Clawd的虚拟角色,可灵活适配各类使用场合。该产品通过AI技术实现角色个性化定制,旨在满足用户多样化的表达需求,可能引领虚拟形象应用的新趋势。
AI 深度解读
背景
ClawdMojis 是一套完全由程序生成的 Slack 自定义表情符号合集,其灵感来自某个软件产品的吉祥物“Clawd”。该项目最早源于 Hacker News 上的一则分享:作者通过精确的像素艺术还原,将原始 logo 截图转换成一套可复用的动画表情包。所有变体均从同一份像素网格源文件出发,通过纯代码脚本渲染,未借助任何图像编辑器手工加工。这一做法不仅体现了程序化生成的高效性与一致性,也为 Slack 用户提供了丰富、风格统一且大小合规的 emoji 资源。
核心内容
基础:从 logo 截图到像素网格
项目起点是一张“Welcome, Clawd”启动画面的截图(source/clawd_source.png)。作者编写了 tools/analyze_grid.py 脚本,通过以下步骤恢复截图背后的像素艺术网格:
- 根据颜色分离橙色身体;
- 找出所有轮廓边缘,聚类消除约 1 像素的抗锯齿抖动;
- 选出最能整除所有边缘位置的单元格大小。
最终确定 logo 绘制在 12×8 的网格上,在 335×597 的源图中每个单元格约 18 像素(检测器同时报告了 9 像素 / 24×16 的谐波,因为每个特征恰好两个单元格厚,真实网格为 12×8)。采样颜色:身体 #DA7758,眼睛 #000000。
网格数据以字符串形式存储在 shared/clawd.py 的 ART 常量中,所有渲染脚本统一导入,确保各变体使用完全相同的体态。该模块还保存了采样颜色和共享的白色轮廓膨胀参数。
各变体详解
1. 原始 Clawdster(base/render.py)
以整数像素单元格(10 像素)渲染网格,保证任意缩放时边缘锐利。输出两个版本:带内边距的 clawd_emoji.png 和严格比例无内边距的 clawd_emoji_tight.png。
2. 燃烧的 Clawd(fire/render.py)
经典“This is Fine” meme:Clawd 站在燃烧的房间前。分两层合成:
- 火焰(背景):基于 Doom 火焰模拟,在粗 32 网格上运行。热源行向上传播,带随机衰减与闪烁,映射到经典暗红→红→橙→黄调色板。每列源轮廓将火焰收束成三角形,颜色上限确保底部为黄色(而非白色)。
- Clawd(前景):在细 64 网格上渲染,白色边框为 2 像素细轮廓。
Doom 火焰是混沌的,因此通过长模拟找到与第 0 帧最匹配的帧来构造无缝循环(微小接缝被自然闪烁掩盖)。同时保存静态回退 clawd_fire_still.png。生成的 clawd_fire.gif 约 102 KB,低于 Slack 的 128 KB 限制;若需更小可降低 MAXL 或提高 DUR。
3. 伦敦 Clawd(rain/render.py)
暴风雨下的 Clawd,由四层合成(云 → 后层雨 → Clawd → 前层雨):
- 云:全宽翻腾的灰色云带,底部参差不齐,内部纹理水平滚动。
- 雨:粗大的雨滴,多数在 Clawd 后方,少数在前方,以轻微角度下落(场被剪切——每列的行偏移随行变化)。前层雨下落更快,产生视差效果。
- 水花:沿地面微弱的 3 帧溅射,相位错开使每次只有少数几个溅射。
循环通过构造严格无缝:雨在垂直方向平铺(V·F 是 TILE 的倍数),云在水平方向平铺(S·F = P),水花是帧数模 F 的纯函数。
4. 冲浪 Clawd(surf/render.py)
Clawd 踩着红色冲浪板从破碎的浪头冲下。从后到前合成:海洋 → 浪尖泡沫 → 浪尖水花 → Clawd+冲浪板 → 水线浪花 + 船首水花。
与其他 emoji 不同,此变体在完整的 128 网格上渲染(CELL=1),因此 Clawd 更大、更居中,边缘和旋转的块大小减半,像素感显著降低:
- 海洋:左侧海浪较低,右侧涌起高浪(Clawd 冲浪的浪面),填充深度分层的蓝色和滚动闪烁的阳光光点;浪尖有白色泡沫帽。
- Clawd + 冲浪板:Clawd(完整 2 像素白色轮廓)站在厚冲浪板上,两者作为一个整体旋转,使 Clawd 沿浪面倾斜,以冲浪板与水的接触点为支点。倾斜角度与浪面坡度匹配,冲浪板略微下沉以切入波浪而非浮在表面。轻微的摇摆和垂直弹跳使其在浪上保持动感。
- 水花:浪尖后方扇状喷水(在 Clawd 后方以保持正确深度),水线处明亮的海浪泡沫沿冲浪板切浪处散开,船头有微小水花。
循环通过构造无缝:弹跳、摇摆和船首水花闪烁均为 sin(2π·f/F);涌浪波纹和闪烁推进在整个循环中行进整数个周期(相位 2π·(… − k·f/F));浪尖水花是帧数模 F 的纯函数;水线泡沫为静态参差图案。
5. Mariachlawd(mariachi/render.py)
Clawd 戴着大草帽,双手各握一个沙锤的把手,边舞边摇。与冲浪一样在完整 128 网格上渲染(CELL=1),使草帽的曲线和沙锤圆球保持清晰:
- 身体 + 帽子:Clawd(完整 2 像素白色轮廓)和一顶宽边草帽(圆形草编帽冠、红色带金钉、向上卷起的帽檐、波丽塔饰边)作为刚体,左右踏步并带轻微弹跳。
- 手臂:每侧由两层组成,围绕肩膀一起旋转:一层橙色手臂在 Clawd 后方,沙锤(握住把手,远端为球体)合成在前方,使把手显得伸出手臂。旋转使沙锤明显摇晃;两侧手臂互为镜像且旋转角度相同,交替上下,形成恰恰舞节奏。
- 装饰:头顶有几颗金色音符跳动。
循环通过构造无缝:踏步为 sin(2π·f/F),弹跳为 |sin(2π·f/F)|,沙锤摇动为 sin(2π·2f/F)(每循环两次摇动),音符跳动为 sin/cos 的 2π·f/F——所有函数在 f=0 和 f=F 时相等。
6. Bug Claught(bugcatcher/render.py)
阳光明媚的草地上,Clawd 戴着遮阳帽、背着采集包,挥舞手网追逐一只蝴蝶,蝴蝶总在网外盘旋。完整 128 网格(CELL=1),使头盔圆顶、网环和蝴蝶保持清晰。与其他透明背景 emoji 不同,此变体为不透明场景,从后到前合成(天空+云 → 草地 → 花朵 → Clawd → 网 → 蝴蝶 → 前景草地):
- 田野:蓝天与柔和云朵,绿色草地上有摇曳的草叶和花朵。
- Clawd:完整 2 像素白色轮廓,身着卡其色遮阳帽(圆顶、帽带、宽大下翻帽檐、顶部圆球),斜挎小包——整体刚体带微小弹跳。
- 网:橙色手臂握住长杆,末梢是编织网
