Roblox 动画与 VFX(视觉特效)
此技能配合标准 Roblox Studio MCP 及一个 Shell 运行。其参考文档记录的是经验丰富的 Roblox VFX 艺术家的实际做法,这些做法基于他们已发布特效中约 5,000 个粒子发射器的测量结果。请遵循这些做法:一个粗糙效果与一个好效果之间的差别,几乎完全体现在这些数值上(调色板、暗层、针对 Bloom 的亮度、图层时间、自定义纹理),以及逐帧观察效果上。
每次务必先阅读 references/tools.md。 这些参考文档最初是针对原始工具包(build_instances、capture_moments、animation 和 blender 工具、upload_assets)编写的。tools.md 说明了在你的 Studio MCP 和此技能的脚本下应使用什么替代。每当参考文档提到某个原始工具时,请执行 tools.md 中映射到的操作。
此文件夹(即本文件所在位置)在 tools.md 中即为 SKILL_DIR。
文件内容
| 路径 | 说明 |
|---|---|
references/tools.md | 如何使用 Studio MCP、Shell 和 Blender 完成每一步。 |
references/vfx-design.md | 特效的用途、调色板、明度、亮度、图层、时间安排。 |
references/vfx-craft.md | 特效的存放位置、发射模块、图层骨架、预算、如何检查特效。 |
references/vfx-textures.md | 绘制特效自身的纹理和翻页书(Blender + numpy)。 |
references/vfx-motion.md | 抛射物、齐射、拖尾、光束、斩击、冲刺、能量球、光环。 |
references/vfx-mesh-shapes.md | 新月形和环形网格、旋涡、穹顶、地面波动,在 Blender 中制作。 |
references/vfx-camera-world.md | 摄像机震动、视场角、命中帧、灯光、弹坑、施法姿态。 |
references/vfx-rendered-flipbooks.md | 从 3D 场景渲染的翻页书。 |
references/vfx-reference.md | 匹配参考片段(部分内容:参见 tools.md)。 |
references/character-animation.md | 姿态格式及经过测试的 R15/R6 制作方法。 |
references/creature-animation.md | 骨骼绑定、waves、gait 以及生物制作方法。 |
references/full.md | 动画播放:轨道、优先级、混合、标记。 |
templates/vfx/emit.lua | 播放模块(VFX.play、VFX.emit,支持慢动作和打击暂停的手柄)。 |
templates/vfx/build.lua | 根据参考文档中的 JSON 步骤构建实例。 |
templates/vfx/capture.lua | 在选定的时刻冻结正在播放的特效,用于截图。 |
scripts/animate.mjs | 姿态编译器 + 运动检查 + 联系表 + Luau 输出(需要 Node 18+)。 |
scripts/read_rig.lua | 读取生物的骨骼绑定,供 animate.mjs --rig-json 使用。 |
scripts/blender_job.py, scripts/vfx_blender.py | 运行 Blender 任务,使用 fx.* 纹理和网格辅助工具。 |
scripts/texture-tool.mjs | 检查翻页书图集;无需上传即可在 Studio 中预览纹理。 |
scripts/upload.mjs | Open Cloud 上传(纹理、网格、动画)。 |
快速参考
- 任何视觉特效(命中、斩击、爆炸、法术、光环或拾取物):加载
references/tools.md、references/vfx-design.md和references/vfx-craft.md,以及其所需的主题:vfx-textures.md用于绘制特效自身的纹理(大多数特效都应如此;内置的rbxasset://textures/particles/*仅作为临时占位符);vfx-motion.md用于任何移动、扫掠或持续持有的特效;vfx-mesh-shapes.md用于新月形、环形、旋涡和穹顶网格;vfx-camera-world.md用于摄像机、屏幕和地面反应,以及通过代码生成的施法姿态;vfx-rendered-flipbooks.md用于从 3D 场景渲染的图集;vfx-reference.md当用户提供参考片段时使用。
- 使特效优秀的循环: 设计(命名招式,选择约 5 种颜色,规划暗层和强度曲线)> 在
ReplicatedStorage.VFX中使用发射属性构建 > 在近距离和玩家摄像机视角下,冻结并捕获 4-6 个瞬间 > 根据帧画面修复问题 > 重复。永远不要仅凭一张截图或代码就断定特效完成。 - 角色动画: 加载
references/character-animation.md和references/tools.md;根据最接近的制作方法编写姿态 JSON;使用--sheet参数运行scripts/animate.mjs并查看联系表;反复修复直到所有检查通过;使用execute_luau发送它生成的 Luau 代码;在虚拟人偶上预览。首先检查该场景的玩家使用的是 R15 还是 R6 骨骼。 - 生物或任何非标准模型: 同时加载
references/creature-animation.md,使用scripts/read_rig.lua读取其骨骼绑定,并传入--rig-json参数。 - 通过
Humanoid或AnimationController上的Animator加载轨道;有意设置AnimationTrack.Priority。 - 使用
GetMarkerReachedSignal()获取游戏玩法提示(如命中判定),该信号来自关键帧的markers名称;关键帧的name不是标记。攻击特效应通过其标记触发,而非定时器。 - 爆发型
ParticleEmitter通常设置Rate = 0,并通过发射模块的EmitCount/EmitDelay进行发射。 - 特效是表现层:服务器通过
UnreliableRemoteEvent发送特效的名称和 CFrame,每个客户端调用VFX.play。切勿让伤害等待特效播放完成。 - 只上传已确定的纹理、网格和动画:每次上传都是永久且经过审核的。先告知你将上传多少个资源。
特效以肉眼评判。完成后,告知用户你检查了哪些内容,并请他们在游戏测试中以全速查看。