この記事は、CSSに依存せずGitHub READMEでも単独利用しやすい、より自然な手書き風のアニメーション署名SVGを作成する手順をまとめている。まず、フォント変換、手描き、AI生成画像などから署名SVGを用意し、必要に応じてPNGをSVG化する。次に、既存の動的署名を参考に、単純な左から右への背景塗りでは不自然になる問題を確認する。解決策としてFigmaで署名の筆順に沿った中心線をペンツールで描き、その軌跡をマスクとして使う。最終的なSVGでは、元の署名輪郭を表示層とし、太い白色ストロークのマスクをSMILアニメーションで動かして筆跡を徐々に現す。調整の要点はdur、keyTimes、keySplinesで、書き出し速度や停留、フェードアウトを制御する。
引入
在看完 https://yfi.moe/post/animated-signature-svg 这篇文章后,我也跟着做了一个签名,但是由于它依赖CSS控制其动画导致无法单独使用或放进Github的README文档
并且这样的签名笔画粗细太单一,没有“真正”签名的观感
于是有了以下折腾过程,参考 Innei 的签名自己总结了制作方法
制作过程
1.获取签名svg文件
两种途径生成的签名最好都能一笔写完,且笔画重叠的地方较少
途径一:字体转svg
如果图简单可以直接在此处,输入名字并选择用一个喜欢的字体,直接复制字体svg文件
途径二:AI生成或手绘
可以自己用数位板签名,注意导出为图片时要纯色背景
也可以使用Chatgpt image 2 生图,纯色背景,效果也很好,不需要处理背景也能直接抠出轮廓来
然后把图片转换为svg格式
如图:
2.添加动画
仔细观察Innei的签名及源文件
注意到动画的原理是笔迹遮罩在上方背景,从左到右填充
直接交给gpt照葫芦画瓢的话:
可以看到由于我的签名整体向右上方倾斜,导致从左到右填充背景时,会出现一些地方会两笔同时画,不太符合“一笔签名”的直觉
当然,若你的签名正好整体是从左往右书写的,那观感应该会很好,只需要调整背景填充的速度,让它看起来更自然就能做完了
如果你的签名也有相似的问题,可以继续往下看参考我的解决方法
3.导入Figma勾勒笔迹
将svg文件导入Figma
使用钢笔工具选择一个合适的笔刷大小,沿着签名书写的方向勾勒笔画,注意:
慢放动画可以发现,在笔迹交叉的地方,更粗的背景笔迹会导致另一侧的笔画先出现一小部分:
示意图
实际表现
不过通过调整书写的速度,基本不会对观感造成影响,也能有很好的效果。
在右侧面板把背景填充轨迹单独导出为svg
4.添加轨迹动画
发送给gpt处理:
最终输出的svg:
完整参数解析(AI GEN)
一、文件声明与根元素 <svg>
这是 XML 声明。
参数
含义
`version="1.0"`
表示这是 XML 1.0 文档
`encoding="UTF-8"`
使用 UTF-8 编码,保证英文、中文、符号等字符正常解析
1. <svg> 根元素
5.优化动画
重点需要调整的参数是<animate>中的: