一个基于 Blender 几何节点(Geometry Nodes) 的逐字符文字动画插件。选中一个文本物体,一键生成节点树,即可用滑块实时驱动「打字机 / 弹跳 / 波浪」等多种逐字符动画效果,无需手动搭节点。
- 一键生成:选中文字物体(Text Object),点击
Generate自动构建完整的几何节点树并挂载 Geometry Nodes 修改器。 - 逐字符动画:利用
String to Curves生成的 Curve Instance,按字符 Index 独立控制每个字符的入场时机。 - 多种动画质感:线性 / 平滑缓动(Smoothstep)、过冲弹跳(Overshoot)、随机相位扰动。
- 完整变换通道:每个字符的 位移(Position)、缩放(Scale)、旋转(Rotation)、透明度(Alpha)都可分别设置起止值。
- 实时驱动:所有参数通过节点组输入同步,拖动滑块即可实时预览动画。
- 跨版本兼容:节点类型对 Blender 4.x / 5.x 的命名差异做了自动降级适配(
ShaderNodeMath↔FunctionNodeFloatMath等)。
- 下载最新版插件压缩包:Releases 中的
stringextend-vX.X.X.zip。 - 打开 Blender:
Edit → Preferences → Add-ons。 - 点击右上角
Install...,选择下载的.zip文件。 - 在列表中搜索 GeoStringAnim 并勾选启用。
需要 Blender 4.2 或更高版本。
- 在场景中创建一个文字物体:
Add → Text(Shift+A → Text)。 - 选中该文字物体,打开右侧边栏
N 面板 → GeoStringAnim标签页。 - 点击
Generate GeoStringAnim Nodes按钮生成节点。 - 拖动 Global Progress 滑块(0–100),即可看到文字逐字符播放动画。
- 修改文字内容后,点击面板底部的
Refresh Text / Sync Params同步。
面板中的参数会实时同步到节点组输入:
| 分组 | 参数 | 说明 |
|---|---|---|
| 基础 | Global Progress | 全局动画进度(0–100),驱动整段动画 |
| 范围与相位 | Start / End Factor | 单个字符入场起始 / 结束阈值(进度) |
| Phase | 逐字符相位延迟(决定「打字机 / 波浪」节奏) | |
| Random Phase | 逐字符随机延迟扰动,制造随机入场效果 | |
| 缓动 | Smoothness | 缓动平滑度(0 线性 / 1 标准 / >1 更柔滑) |
| Overshoot | 过冲弹跳力度(0 无弹跳,>0 弹跳) | |
| 变换通道 | Pos Start / End | 字符位移起止值 |
| Scale Start / End | 字符缩放起止值 | |
| Rot Start / End | 字符旋转起止值(欧拉角) | |
| Alpha Start / End | 字符透明度起止值 |
String to Curves将字符串拆分为逐字符的 Curve Instance。- 在 Instance 域 上用字符
Index(0..N-1)计算每个字符的独立入场时间:char_t = Progress - (Index × Phase + Random × RandomPhase)。 - 通过
Map Range将[Start, End]重映射到[0, 1]并钳制。 - 可选 Smoothstep(
t²(3-2t))平滑与 Overshoot(sin(t·π(1+over))·(1-t)·over)弹跳。 - 最终因子驱动每个实例的
Scale / Rotate / Translate Instances,并将 Alpha 写入实例属性gsa_alpha。
生成的核心节点组名为 GSA_Core_Anim_v2,挂载到文字物体上的修改器名为 GeoStringAnim。
GeoStringAnim/
├── stringextend/ # Blender 插件包(安装源)
│ └── __init__.py # 插件全部逻辑
├── images/
│ └── screenshot.png # 插件展示图
└── README.md
本项目采用 MIT License 开源。
